svf-tools 1.0.595 → 1.0.597

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 (980) hide show
  1. package/SVF-doxygen/html/html/AndersenSCD_8cpp_source.html +4 -4
  2. package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +2 -2
  3. package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +7 -7
  4. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +11 -11
  5. package/SVF-doxygen/html/html/Andersen_8h_source.html +5 -5
  6. package/SVF-doxygen/html/html/CFLAlias_8cpp_source.html +7 -7
  7. package/SVF-doxygen/html/html/CFLAlias_8h_source.html +5 -5
  8. package/SVF-doxygen/html/html/CFLGraphBuilder_8cpp_source.html +8 -8
  9. package/SVF-doxygen/html/html/CFLGraphBuilder_8h_source.html +4 -4
  10. package/SVF-doxygen/html/html/CFLGraph_8cpp.html +3 -2
  11. package/SVF-doxygen/html/html/CFLGraph_8cpp_source.html +15 -13
  12. package/SVF-doxygen/html/html/CFLGraph_8h.html +4 -6
  13. package/SVF-doxygen/html/html/CFLGraph_8h_source.html +19 -18
  14. package/SVF-doxygen/html/html/CFLSolver_8cpp_source.html +4 -4
  15. package/SVF-doxygen/html/html/CFLStat_8cpp_source.html +1 -1
  16. package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +8 -8
  17. package/SVF-doxygen/html/html/CHG_8cpp.html +6 -5
  18. package/SVF-doxygen/html/html/CHG_8cpp_source.html +26 -24
  19. package/SVF-doxygen/html/html/CHG_8h.html +4 -6
  20. package/SVF-doxygen/html/html/CHG_8h_source.html +13 -12
  21. package/SVF-doxygen/html/html/CallGraphBuilder_8cpp_source.html +3 -3
  22. package/SVF-doxygen/html/html/ConsGEdge_8h_source.html +3 -3
  23. package/SVF-doxygen/html/html/ConsGNode_8h_source.html +7 -7
  24. package/SVF-doxygen/html/html/ConsG_8cpp.html +3 -2
  25. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +27 -26
  26. package/SVF-doxygen/html/html/ConsG_8h.html +4 -6
  27. package/SVF-doxygen/html/html/ConsG_8h_source.html +10 -9
  28. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +7 -7
  29. package/SVF-doxygen/html/html/ContextDDA_8h_source.html +3 -3
  30. package/SVF-doxygen/html/html/CxtStmt_8h_source.html +4 -4
  31. package/SVF-doxygen/html/html/DCHG_8cpp_source.html +21 -19
  32. package/SVF-doxygen/html/html/DCHG_8h.html +4 -6
  33. package/SVF-doxygen/html/html/DCHG_8h_source.html +15 -14
  34. package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +3 -3
  35. package/SVF-doxygen/html/html/DDAClient_8h_source.html +1 -1
  36. package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +9 -9
  37. package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +1 -1
  38. package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +8 -8
  39. package/SVF-doxygen/html/html/DOTGraphTraits_8h.html +97 -0
  40. package/SVF-doxygen/html/html/DOTGraphTraits_8h_source.html +102 -0
  41. package/SVF-doxygen/html/html/DoubleFreeChecker_8cpp_source.html +4 -4
  42. package/SVF-doxygen/html/html/DoubleFreeChecker_8h_source.html +1 -1
  43. package/SVF-doxygen/html/html/ExtAPI_8cpp_source.html +5 -5
  44. package/SVF-doxygen/html/html/ExtAPI_8h_source.html +1 -1
  45. package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +12 -12
  46. package/SVF-doxygen/html/html/FileChecker_8cpp_source.html +1 -1
  47. package/SVF-doxygen/html/html/FileChecker_8h_source.html +1 -1
  48. package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +3 -3
  49. package/SVF-doxygen/html/html/FlowDDA_8h_source.html +1 -1
  50. package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +8 -8
  51. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +6 -6
  52. package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +1 -1
  53. package/SVF-doxygen/html/html/GEPTypeBridgeIterator_8h_source.html +2 -2
  54. package/SVF-doxygen/html/html/GenericGraph_8h.html +15 -6
  55. package/SVF-doxygen/html/html/GenericGraph_8h_source.html +128 -115
  56. package/SVF-doxygen/html/html/GraphPrinter_8h.html +5 -6
  57. package/SVF-doxygen/html/html/GraphPrinter_8h_source.html +8 -5
  58. package/SVF-doxygen/html/html/GraphReachSolver_8h_source.html +4 -3
  59. package/SVF-doxygen/html/html/GraphTraits_8h.html +118 -0
  60. package/SVF-doxygen/html/html/GraphTraits_8h_source.html +91 -0
  61. package/SVF-doxygen/html/html/GraphWriter_8cpp.html +81 -0
  62. package/SVF-doxygen/html/html/GraphWriter_8cpp_source.html +80 -0
  63. package/SVF-doxygen/html/html/GraphWriter_8h.html +138 -0
  64. package/SVF-doxygen/html/html/GraphWriter_8h_source.html +129 -0
  65. package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +7 -7
  66. package/SVF-doxygen/html/html/ICFGBuilder_8h_source.html +2 -2
  67. package/SVF-doxygen/html/html/ICFGEdge_8h_source.html +7 -7
  68. package/SVF-doxygen/html/html/ICFGNode_8h_source.html +7 -7
  69. package/SVF-doxygen/html/html/ICFGStat_8h_source.html +3 -3
  70. package/SVF-doxygen/html/html/ICFG_8cpp.html +3 -2
  71. package/SVF-doxygen/html/html/ICFG_8cpp_source.html +27 -26
  72. package/SVF-doxygen/html/html/ICFG_8h.html +4 -6
  73. package/SVF-doxygen/html/html/ICFG_8h_source.html +14 -13
  74. package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +2 -2
  75. package/SVF-doxygen/html/html/IRGraph_8cpp.html +3 -2
  76. package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +20 -18
  77. package/SVF-doxygen/html/html/IRGraph_8h.html +4 -6
  78. package/SVF-doxygen/html/html/IRGraph_8h_source.html +9 -8
  79. package/SVF-doxygen/html/html/LLVMLoopAnalysis_8cpp_source.html +7 -6
  80. package/SVF-doxygen/html/html/LLVMModule_8cpp.html +4 -3
  81. package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +57 -58
  82. package/SVF-doxygen/html/html/LLVMModule_8h_source.html +36 -36
  83. package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +16 -9
  84. package/SVF-doxygen/html/html/LLVMUtil_8h.html +6 -0
  85. package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +6 -4
  86. package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +6 -6
  87. package/SVF-doxygen/html/html/LeakChecker_8h_source.html +1 -1
  88. package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +3 -3
  89. package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +23 -23
  90. package/SVF-doxygen/html/html/LockAnalysis_8h_source.html +3 -3
  91. package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +6 -6
  92. package/SVF-doxygen/html/html/LockResultValidator_8h_source.html +3 -3
  93. package/SVF-doxygen/html/html/MHP_8cpp_source.html +23 -23
  94. package/SVF-doxygen/html/html/MHP_8h_source.html +4 -4
  95. package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +3 -3
  96. package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +5 -5
  97. package/SVF-doxygen/html/html/MTAAnnotator_8h_source.html +3 -3
  98. package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +3 -3
  99. package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +8 -8
  100. package/SVF-doxygen/html/html/MTA_8cpp_source.html +3 -3
  101. package/SVF-doxygen/html/html/MemPartition_8cpp_source.html +1 -1
  102. package/SVF-doxygen/html/html/MemPartition_8h_source.html +1 -1
  103. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +18 -18
  104. package/SVF-doxygen/html/html/MemRegion_8h_source.html +2 -2
  105. package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +21 -21
  106. package/SVF-doxygen/html/html/MemSSA_8h_source.html +2 -2
  107. package/SVF-doxygen/html/html/PCG_8cpp_source.html +18 -18
  108. package/SVF-doxygen/html/html/PCG_8h_source.html +3 -3
  109. package/SVF-doxygen/html/html/PTACallGraph_8cpp.html +3 -2
  110. package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +27 -25
  111. package/SVF-doxygen/html/html/PTACallGraph_8h.html +4 -6
  112. package/SVF-doxygen/html/html/PTACallGraph_8h_source.html +17 -16
  113. package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +6 -6
  114. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +6 -6
  115. package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +3 -3
  116. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +18 -18
  117. package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +3 -3
  118. package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +7 -7
  119. package/SVF-doxygen/html/html/ProgSlice_8h_source.html +1 -1
  120. package/SVF-doxygen/html/html/SCC_8h_source.html +4 -2
  121. package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +1 -1
  122. package/SVF-doxygen/html/html/SVFGEdge_8h_source.html +3 -3
  123. package/SVF-doxygen/html/html/SVFGNode_8h_source.html +3 -3
  124. package/SVF-doxygen/html/html/SVFGOPT_8cpp_source.html +14 -14
  125. package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +9 -9
  126. package/SVF-doxygen/html/html/SVFGReadWrite_8cpp_source.html +3 -3
  127. package/SVF-doxygen/html/html/SVFGStat_8cpp_source.html +7 -7
  128. package/SVF-doxygen/html/html/SVFG_8cpp.html +3 -2
  129. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +23 -23
  130. package/SVF-doxygen/html/html/SVFG_8h.html +1 -3
  131. package/SVF-doxygen/html/html/SVFG_8h_source.html +13 -13
  132. package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +15 -14
  133. package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +4 -4
  134. package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +8 -8
  135. package/SVF-doxygen/html/html/SVFIR_8h_source.html +4 -4
  136. package/SVF-doxygen/html/html/SVFModule_8cpp_source.html +2 -2
  137. package/SVF-doxygen/html/html/SVFModule_8h_source.html +4 -4
  138. package/SVF-doxygen/html/html/SVFStat_8cpp_source.html +9 -9
  139. package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +9 -9
  140. package/SVF-doxygen/html/html/SVFStatements_8h_source.html +12 -12
  141. package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +4 -4
  142. package/SVF-doxygen/html/html/SVFUtil_8h_source.html +9 -9
  143. package/SVF-doxygen/html/html/SVFValue_8cpp_source.html +16 -19
  144. package/SVF-doxygen/html/html/SVFValue_8h.html +3 -3
  145. package/SVF-doxygen/html/html/SVFValue_8h_source.html +210 -213
  146. package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +7 -7
  147. package/SVF-doxygen/html/html/SVFVariables_8h_source.html +13 -14
  148. package/SVF-doxygen/html/html/SaberCheckerAPI_8h_source.html +3 -3
  149. package/SVF-doxygen/html/html/SaberCondAllocator_8cpp_source.html +17 -17
  150. package/SVF-doxygen/html/html/SaberCondAllocator_8h_source.html +6 -6
  151. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +8 -8
  152. package/SVF-doxygen/html/html/SparseBitVector_8h_source.html +1 -1
  153. package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +7 -7
  154. package/SVF-doxygen/html/html/SrcSnkDDA_8h_source.html +1 -1
  155. package/SVF-doxygen/html/html/SrcSnkSolver_8h_source.html +3 -3
  156. package/SVF-doxygen/html/html/Steensgaard_8cpp_source.html +3 -3
  157. package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +7 -10
  158. package/SVF-doxygen/html/html/SymbolTableBuilder_8h_source.html +3 -4
  159. package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +4 -4
  160. package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +2 -2
  161. package/SVF-doxygen/html/html/TCT_8cpp.html +3 -2
  162. package/SVF-doxygen/html/html/TCT_8cpp_source.html +38 -37
  163. package/SVF-doxygen/html/html/TCT_8h.html +4 -6
  164. package/SVF-doxygen/html/html/TCT_8h_source.html +27 -26
  165. package/SVF-doxygen/html/html/ThreadAPI_8cpp_source.html +10 -10
  166. package/SVF-doxygen/html/html/ThreadAPI_8h_source.html +6 -6
  167. package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +2 -2
  168. package/SVF-doxygen/html/html/ThreadCallGraph_8h_source.html +7 -7
  169. package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +8 -8
  170. package/SVF-doxygen/html/html/VFGEdge_8h_source.html +6 -6
  171. package/SVF-doxygen/html/html/VFGNode_8h_source.html +8 -8
  172. package/SVF-doxygen/html/html/VFG_8cpp.html +3 -2
  173. package/SVF-doxygen/html/html/VFG_8cpp_source.html +20 -19
  174. package/SVF-doxygen/html/html/VFG_8h.html +4 -6
  175. package/SVF-doxygen/html/html/VFG_8h_source.html +14 -13
  176. package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +4 -4
  177. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +10 -10
  178. package/SVF-doxygen/html/html/WPAFSSolver_8h_source.html +3 -2
  179. package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +8 -8
  180. package/SVF-doxygen/html/html/WPAPass_8h_source.html +1 -1
  181. package/SVF-doxygen/html/html/WPASolver_8h_source.html +4 -2
  182. package/SVF-doxygen/html/html/annotated.html +291 -278
  183. package/SVF-doxygen/html/html/cfl_8cpp_source.html +1 -1
  184. package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode.html +4 -4
  185. package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode.html +4 -4
  186. package/SVF-doxygen/html/html/classSVF_1_1ActualParmVFGNode.html +3 -3
  187. package/SVF-doxygen/html/html/classSVF_1_1ActualRetVFGNode.html +3 -3
  188. package/SVF-doxygen/html/html/classSVF_1_1AddrCGEdge.html +2 -2
  189. package/SVF-doxygen/html/html/classSVF_1_1AddrStmt.html +1 -1
  190. package/SVF-doxygen/html/html/classSVF_1_1AddrVFGNode.html +1 -1
  191. package/SVF-doxygen/html/html/classSVF_1_1AliasCFLGraphBuilder.html +1 -1
  192. package/SVF-doxygen/html/html/classSVF_1_1AliasDDAClient.html +3 -3
  193. package/SVF-doxygen/html/html/classSVF_1_1Andersen-members.html +1 -1
  194. package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +33 -33
  195. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase-members.html +1 -1
  196. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +7 -7
  197. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD-members.html +1 -1
  198. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +10 -10
  199. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR-members.html +1 -1
  200. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +7 -7
  201. package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +17 -17
  202. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff-members.html +1 -1
  203. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +4 -4
  204. package/SVF-doxygen/html/html/classSVF_1_1ArgumentVFGNode.html +1 -1
  205. package/SVF-doxygen/html/html/classSVF_1_1AssignStmt.html +4 -4
  206. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +12 -12
  207. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt.html +1 -1
  208. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +3 -3
  209. package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +4 -4
  210. package/SVF-doxygen/html/html/classSVF_1_1BranchVFGNode.html +1 -1
  211. package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.html +11 -11
  212. package/SVF-doxygen/html/html/classSVF_1_1CFLEdge.html +4 -4
  213. package/SVF-doxygen/html/html/classSVF_1_1CFLGraph.html +5 -4
  214. package/SVF-doxygen/html/html/classSVF_1_1CFLNode-members.html +45 -44
  215. package/SVF-doxygen/html/html/classSVF_1_1CFLNode.html +29 -29
  216. package/SVF-doxygen/html/html/classSVF_1_1CFLSolver.html +4 -4
  217. package/SVF-doxygen/html/html/classSVF_1_1CFLStat.html +1 -1
  218. package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +16 -16
  219. package/SVF-doxygen/html/html/classSVF_1_1CHGraph.html +18 -17
  220. package/SVF-doxygen/html/html/classSVF_1_1CallCFGEdge.html +3 -3
  221. package/SVF-doxygen/html/html/classSVF_1_1CallCHI.html +1 -1
  222. package/SVF-doxygen/html/html/classSVF_1_1CallDirSVFGEdge.html +2 -2
  223. package/SVF-doxygen/html/html/classSVF_1_1CallGraphBuilder.html +3 -3
  224. package/SVF-doxygen/html/html/classSVF_1_1CallICFGNode.html +7 -7
  225. package/SVF-doxygen/html/html/classSVF_1_1CallIndSVFGEdge.html +2 -2
  226. package/SVF-doxygen/html/html/classSVF_1_1CallMU.html +1 -1
  227. package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +1 -1
  228. package/SVF-doxygen/html/html/classSVF_1_1CallSite.html +56 -56
  229. package/SVF-doxygen/html/html/classSVF_1_1CmpStmt.html +1 -1
  230. package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +3 -3
  231. package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +1 -1
  232. package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +31 -30
  233. package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode-members.html +26 -26
  234. package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode.html +43 -43
  235. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +12 -12
  236. package/SVF-doxygen/html/html/classSVF_1_1CopyStmt.html +1 -1
  237. package/SVF-doxygen/html/html/classSVF_1_1CopyVFGNode.html +1 -1
  238. package/SVF-doxygen/html/html/classSVF_1_1CxtProc.html +1 -1
  239. package/SVF-doxygen/html/html/classSVF_1_1CxtStmt.html +2 -2
  240. package/SVF-doxygen/html/html/classSVF_1_1CxtThread.html +2 -2
  241. package/SVF-doxygen/html/html/classSVF_1_1CxtThreadProc.html +1 -1
  242. package/SVF-doxygen/html/html/classSVF_1_1CxtThreadStmt.html +2 -2
  243. package/SVF-doxygen/html/html/classSVF_1_1DCHEdge.html +2 -2
  244. package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +35 -32
  245. package/SVF-doxygen/html/html/classSVF_1_1DDAClient.html +3 -3
  246. package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +16 -16
  247. package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +1 -1
  248. package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +3 -3
  249. package/SVF-doxygen/html/html/classSVF_1_1DirectSVFGEdge.html +2 -2
  250. package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG.html +1 -1
  251. package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker-members.html +2 -2
  252. package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker.html +16 -16
  253. package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar.html +1 -1
  254. package/SVF-doxygen/html/html/classSVF_1_1DummyValVar.html +1 -1
  255. package/SVF-doxygen/html/html/classSVF_1_1ExtAPI.html +6 -6
  256. package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.html +3 -4
  257. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA-members.html +1 -1
  258. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +4 -4
  259. package/SVF-doxygen/html/html/classSVF_1_1FileChecker-members.html +2 -2
  260. package/SVF-doxygen/html/html/classSVF_1_1FileChecker.html +8 -8
  261. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +3 -3
  262. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive-members.html +1 -1
  263. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +21 -21
  264. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +17 -17
  265. package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +29 -29
  266. package/SVF-doxygen/html/html/classSVF_1_1FormalINSVFGNode.html +2 -2
  267. package/SVF-doxygen/html/html/classSVF_1_1FormalOUTSVFGNode.html +2 -2
  268. package/SVF-doxygen/html/html/classSVF_1_1FormalParmVFGNode.html +3 -3
  269. package/SVF-doxygen/html/html/classSVF_1_1FormalRetVFGNode.html +3 -3
  270. package/SVF-doxygen/html/html/classSVF_1_1FunEntryICFGNode.html +6 -6
  271. package/SVF-doxygen/html/html/classSVF_1_1FunExitICFGNode.html +8 -8
  272. package/SVF-doxygen/html/html/classSVF_1_1GenericEdge.html +31 -31
  273. package/SVF-doxygen/html/html/classSVF_1_1GenericGraph.html +44 -44
  274. package/SVF-doxygen/html/html/classSVF_1_1GenericNode.html +78 -78
  275. package/SVF-doxygen/html/html/classSVF_1_1GenericNode.png +0 -0
  276. package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +3 -4
  277. package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +1 -1
  278. package/SVF-doxygen/html/html/classSVF_1_1GepVFGNode.html +1 -1
  279. package/SVF-doxygen/html/html/classSVF_1_1GepValVar.html +3 -4
  280. package/SVF-doxygen/html/html/classSVF_1_1GlobalICFGNode.html +1 -1
  281. package/SVF-doxygen/html/html/classSVF_1_1GraphPrinter-members.html +83 -0
  282. package/SVF-doxygen/html/html/classSVF_1_1GraphPrinter.html +236 -0
  283. package/SVF-doxygen/html/html/classSVF_1_1GraphReachSolver-members.html +2 -2
  284. package/SVF-doxygen/html/html/classSVF_1_1GraphReachSolver.html +12 -12
  285. package/SVF-doxygen/html/html/classSVF_1_1GraphWriter-members.html +100 -0
  286. package/SVF-doxygen/html/html/classSVF_1_1GraphWriter.html +882 -0
  287. package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +20 -19
  288. package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +12 -12
  289. package/SVF-doxygen/html/html/classSVF_1_1ICFGEdge.html +7 -7
  290. package/SVF-doxygen/html/html/classSVF_1_1ICFGNode.html +1 -1
  291. package/SVF-doxygen/html/html/classSVF_1_1ICFGStat.html +2 -2
  292. package/SVF-doxygen/html/html/classSVF_1_1IRGraph.html +12 -11
  293. package/SVF-doxygen/html/html/classSVF_1_1IndirectSVFGEdge.html +2 -2
  294. package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG.html +1 -1
  295. package/SVF-doxygen/html/html/classSVF_1_1InterMSSAPHISVFGNode.html +3 -3
  296. package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode.html +2 -2
  297. package/SVF-doxygen/html/html/classSVF_1_1IntraCFGEdge.html +3 -3
  298. package/SVF-doxygen/html/html/classSVF_1_1IntraDirSVFGEdge.html +2 -2
  299. package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG.html +1 -1
  300. package/SVF-doxygen/html/html/classSVF_1_1IntraICFGNode.html +6 -6
  301. package/SVF-doxygen/html/html/classSVF_1_1IntraIndSVFGEdge.html +2 -2
  302. package/SVF-doxygen/html/html/classSVF_1_1IntraMSSAPHISVFGNode.html +2 -2
  303. package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode.html +2 -2
  304. package/SVF-doxygen/html/html/classSVF_1_1LLVMLoopAnalysis.html +7 -6
  305. package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +129 -129
  306. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker-members.html +2 -2
  307. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +22 -22
  308. package/SVF-doxygen/html/html/classSVF_1_1LoadStmt.html +1 -1
  309. package/SVF-doxygen/html/html/classSVF_1_1LoadVFGNode.html +1 -1
  310. package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +3 -3
  311. package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +50 -50
  312. package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +7 -7
  313. package/SVF-doxygen/html/html/classSVF_1_1MHP.html +55 -55
  314. package/SVF-doxygen/html/html/classSVF_1_1MHPValidator.html +1 -1
  315. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +22 -22
  316. package/SVF-doxygen/html/html/classSVF_1_1MRSVFGNode.html +1 -1
  317. package/SVF-doxygen/html/html/classSVF_1_1MSSAPHISVFGNode.html +4 -4
  318. package/SVF-doxygen/html/html/classSVF_1_1MTA.html +3 -3
  319. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +6 -6
  320. package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +8 -8
  321. package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +37 -37
  322. package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +9 -9
  323. package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +1 -1
  324. package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +36 -36
  325. package/SVF-doxygen/html/html/classSVF_1_1MultiOpndStmt.html +3 -3
  326. package/SVF-doxygen/html/html/classSVF_1_1NullPtrVFGNode.html +4 -4
  327. package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +3 -4
  328. package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +3 -3
  329. package/SVF-doxygen/html/html/classSVF_1_1PCG.html +28 -28
  330. package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +3 -3
  331. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraph.html +26 -25
  332. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphEdge.html +3 -3
  333. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphNode.html +7 -7
  334. package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +9 -9
  335. package/SVF-doxygen/html/html/classSVF_1_1PhiStmt.html +2 -2
  336. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +40 -40
  337. package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +7 -7
  338. package/SVF-doxygen/html/html/classSVF_1_1RaceResultValidator.html +4 -4
  339. package/SVF-doxygen/html/html/classSVF_1_1RaceValidator.html +1 -1
  340. package/SVF-doxygen/html/html/classSVF_1_1RetCFGEdge.html +3 -3
  341. package/SVF-doxygen/html/html/classSVF_1_1RetDirSVFGEdge.html +2 -2
  342. package/SVF-doxygen/html/html/classSVF_1_1RetICFGNode.html +5 -5
  343. package/SVF-doxygen/html/html/classSVF_1_1RetIndSVFGEdge.html +2 -2
  344. package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +1 -1
  345. package/SVF-doxygen/html/html/classSVF_1_1RetPN.html +2 -2
  346. package/SVF-doxygen/html/html/classSVF_1_1SCCDetection-members.html +1 -1
  347. package/SVF-doxygen/html/html/classSVF_1_1SCCDetection.html +8 -8
  348. package/SVF-doxygen/html/html/classSVF_1_1SVFArgument-members.html +7 -9
  349. package/SVF-doxygen/html/html/classSVF_1_1SVFArgument.html +16 -20
  350. package/SVF-doxygen/html/html/classSVF_1_1SVFBasicBlock-members.html +8 -10
  351. package/SVF-doxygen/html/html/classSVF_1_1SVFBasicBlock.html +56 -63
  352. package/SVF-doxygen/html/html/classSVF_1_1SVFBlackHoleValue-members.html +6 -8
  353. package/SVF-doxygen/html/html/classSVF_1_1SVFBlackHoleValue.html +7 -11
  354. package/SVF-doxygen/html/html/classSVF_1_1SVFCallInst-members.html +12 -14
  355. package/SVF-doxygen/html/html/classSVF_1_1SVFCallInst.html +34 -38
  356. package/SVF-doxygen/html/html/classSVF_1_1SVFConstant-members.html +6 -8
  357. package/SVF-doxygen/html/html/classSVF_1_1SVFConstant.html +5 -9
  358. package/SVF-doxygen/html/html/classSVF_1_1SVFConstantData-members.html +6 -8
  359. package/SVF-doxygen/html/html/classSVF_1_1SVFConstantData.html +7 -11
  360. package/SVF-doxygen/html/html/classSVF_1_1SVFConstantFP-members.html +6 -8
  361. package/SVF-doxygen/html/html/classSVF_1_1SVFConstantFP.html +10 -14
  362. package/SVF-doxygen/html/html/classSVF_1_1SVFConstantInt-members.html +6 -8
  363. package/SVF-doxygen/html/html/classSVF_1_1SVFConstantInt.html +14 -18
  364. package/SVF-doxygen/html/html/classSVF_1_1SVFConstantNullPtr-members.html +6 -8
  365. package/SVF-doxygen/html/html/classSVF_1_1SVFConstantNullPtr.html +7 -11
  366. package/SVF-doxygen/html/html/classSVF_1_1SVFFunction-members.html +23 -25
  367. package/SVF-doxygen/html/html/classSVF_1_1SVFFunction.html +115 -119
  368. package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +16 -16
  369. package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +1 -1
  370. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +43 -43
  371. package/SVF-doxygen/html/html/classSVF_1_1SVFGStat.html +9 -9
  372. package/SVF-doxygen/html/html/classSVF_1_1SVFGlobalValue-members.html +9 -11
  373. package/SVF-doxygen/html/html/classSVF_1_1SVFGlobalValue.html +14 -18
  374. package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +35 -35
  375. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +48 -47
  376. package/SVF-doxygen/html/html/classSVF_1_1SVFInstruction-members.html +11 -13
  377. package/SVF-doxygen/html/html/classSVF_1_1SVFInstruction.html +31 -35
  378. package/SVF-doxygen/html/html/classSVF_1_1SVFLoopAndDomInfo.html +2 -2
  379. package/SVF-doxygen/html/html/classSVF_1_1SVFMetadataAsValue-members.html +6 -8
  380. package/SVF-doxygen/html/html/classSVF_1_1SVFMetadataAsValue.html +7 -11
  381. package/SVF-doxygen/html/html/classSVF_1_1SVFModule.html +3 -3
  382. package/SVF-doxygen/html/html/classSVF_1_1SVFOtherValue-members.html +6 -8
  383. package/SVF-doxygen/html/html/classSVF_1_1SVFOtherValue.html +5 -9
  384. package/SVF-doxygen/html/html/classSVF_1_1SVFStat.html +9 -9
  385. package/SVF-doxygen/html/html/classSVF_1_1SVFStmt.html +9 -9
  386. package/SVF-doxygen/html/html/classSVF_1_1SVFType.html +3 -3
  387. package/SVF-doxygen/html/html/classSVF_1_1SVFValue-members.html +25 -28
  388. package/SVF-doxygen/html/html/classSVF_1_1SVFValue.html +38 -128
  389. package/SVF-doxygen/html/html/classSVF_1_1SVFVar.html +12 -12
  390. package/SVF-doxygen/html/html/classSVF_1_1SVFVirtualCallInst-members.html +14 -16
  391. package/SVF-doxygen/html/html/classSVF_1_1SVFVirtualCallInst.html +29 -33
  392. package/SVF-doxygen/html/html/classSVF_1_1SaberCondAllocator.html +46 -46
  393. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +13 -13
  394. package/SVF-doxygen/html/html/classSVF_1_1SelectStmt.html +2 -2
  395. package/SVF-doxygen/html/html/classSVF_1_1SparseBitVector-members.html +1 -1
  396. package/SVF-doxygen/html/html/classSVF_1_1SparseBitVector.html +7 -7
  397. package/SVF-doxygen/html/html/classSVF_1_1SparseBitVector_1_1SparseBitVectorIterator.html +4 -4
  398. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA-members.html +2 -2
  399. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +16 -16
  400. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkSolver-members.html +2 -2
  401. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkSolver.html +12 -12
  402. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard-members.html +1 -1
  403. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard.html +9 -9
  404. package/SVF-doxygen/html/html/classSVF_1_1StmtVFGNode.html +5 -5
  405. package/SVF-doxygen/html/html/classSVF_1_1StoreStmt.html +1 -1
  406. package/SVF-doxygen/html/html/classSVF_1_1StoreVFGNode.html +2 -2
  407. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder-members.html +2 -3
  408. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +21 -54
  409. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +5 -5
  410. package/SVF-doxygen/html/html/classSVF_1_1TCT.html +72 -72
  411. package/SVF-doxygen/html/html/classSVF_1_1TCTNode.html +1 -1
  412. package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +1 -1
  413. package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +1 -1
  414. package/SVF-doxygen/html/html/classSVF_1_1ThreadAPI.html +11 -11
  415. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +5 -5
  416. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraphBuilder.html +3 -3
  417. package/SVF-doxygen/html/html/classSVF_1_1ThreadForkEdge.html +4 -4
  418. package/SVF-doxygen/html/html/classSVF_1_1ThreadJoinEdge.html +4 -4
  419. package/SVF-doxygen/html/html/classSVF_1_1ThreadMHPIndSVFGEdge.html +2 -2
  420. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis-members.html +1 -1
  421. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +12 -12
  422. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt.html +5 -5
  423. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode.html +3 -3
  424. package/SVF-doxygen/html/html/classSVF_1_1VFG.html +22 -21
  425. package/SVF-doxygen/html/html/classSVF_1_1VFGEdge.html +13 -13
  426. package/SVF-doxygen/html/html/classSVF_1_1VFGNode.html +1 -1
  427. package/SVF-doxygen/html/html/classSVF_1_1ValVar.html +3 -4
  428. package/SVF-doxygen/html/html/classSVF_1_1VarArgPN.html +2 -2
  429. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive-members.html +1 -1
  430. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +35 -35
  431. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +6 -6
  432. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive_1_1SCC.html +4 -4
  433. package/SVF-doxygen/html/html/classSVF_1_1WPAFSSolver-members.html +1 -1
  434. package/SVF-doxygen/html/html/classSVF_1_1WPAFSSolver.html +4 -4
  435. package/SVF-doxygen/html/html/classSVF_1_1WPAMinimumSolver.html +7 -6
  436. package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +9 -9
  437. package/SVF-doxygen/html/html/classSVF_1_1WPASCCSolver.html +4 -4
  438. package/SVF-doxygen/html/html/classSVF_1_1WPASolver-members.html +1 -1
  439. package/SVF-doxygen/html/html/classSVF_1_1WPASolver.html +8 -8
  440. package/SVF-doxygen/html/html/classSVF_1_1iter__adaptor__base-members.html +112 -0
  441. package/SVF-doxygen/html/html/classSVF_1_1iter__adaptor__base.html +633 -0
  442. package/SVF-doxygen/html/html/classSVF_1_1iter__adaptor__base.png +0 -0
  443. package/SVF-doxygen/html/html/classSVF_1_1iter__facade__base-members.html +102 -0
  444. package/SVF-doxygen/html/html/classSVF_1_1iter__facade__base.html +787 -0
  445. package/SVF-doxygen/html/html/classSVF_1_1iter__facade__base.png +0 -0
  446. package/SVF-doxygen/html/html/classSVF_1_1iter__facade__base_1_1ReferenceProxy-members.html +84 -0
  447. package/SVF-doxygen/html/html/classSVF_1_1iter__facade__base_1_1ReferenceProxy.html +229 -0
  448. package/SVF-doxygen/html/html/classSVF_1_1iter__range-members.html +87 -0
  449. package/SVF-doxygen/html/html/classSVF_1_1iter__range.html +342 -0
  450. package/SVF-doxygen/html/html/classSVF_1_1mapped__iter-members.html +112 -0
  451. package/SVF-doxygen/html/html/classSVF_1_1mapped__iter.html +322 -0
  452. package/SVF-doxygen/html/html/classSVF_1_1mapped__iter.png +0 -0
  453. package/SVF-doxygen/html/html/classSVF_1_1pointer__iterator-members.html +113 -0
  454. package/SVF-doxygen/html/html/classSVF_1_1pointer__iterator.html +343 -0
  455. package/SVF-doxygen/html/html/classSVF_1_1pointer__iterator.png +0 -0
  456. package/SVF-doxygen/html/html/classes.html +105 -102
  457. package/SVF-doxygen/html/html/classllvm_1_1GraphPrinter.html +9 -7
  458. package/SVF-doxygen/html/html/classllvm_1_1GraphWriter-members.html +100 -0
  459. package/SVF-doxygen/html/html/classllvm_1_1GraphWriter.html +882 -0
  460. package/SVF-doxygen/html/html/classllvm_1_1iterator__adaptor__base-members.html +112 -0
  461. package/SVF-doxygen/html/html/classllvm_1_1iterator__adaptor__base.html +633 -0
  462. package/SVF-doxygen/html/html/classllvm_1_1iterator__adaptor__base.png +0 -0
  463. package/SVF-doxygen/html/html/classllvm_1_1iterator__facade__base-members.html +102 -0
  464. package/SVF-doxygen/html/html/classllvm_1_1iterator__facade__base.html +787 -0
  465. package/SVF-doxygen/html/html/classllvm_1_1iterator__facade__base.png +0 -0
  466. package/SVF-doxygen/html/html/classllvm_1_1iterator__facade__base_1_1ReferenceProxy-members.html +84 -0
  467. package/SVF-doxygen/html/html/classllvm_1_1iterator__facade__base_1_1ReferenceProxy.html +229 -0
  468. package/SVF-doxygen/html/html/classllvm_1_1iterator__range-members.html +87 -0
  469. package/SVF-doxygen/html/html/classllvm_1_1iterator__range.html +342 -0
  470. package/SVF-doxygen/html/html/classllvm_1_1mapped__iter-members.html +112 -0
  471. package/SVF-doxygen/html/html/classllvm_1_1mapped__iter.html +322 -0
  472. package/SVF-doxygen/html/html/classllvm_1_1mapped__iter.png +0 -0
  473. package/SVF-doxygen/html/html/classllvm_1_1pointer__iterator-members.html +113 -0
  474. package/SVF-doxygen/html/html/classllvm_1_1pointer__iterator.html +343 -0
  475. package/SVF-doxygen/html/html/classllvm_1_1pointer__iterator.png +0 -0
  476. package/SVF-doxygen/html/html/dda_8cpp_source.html +1 -1
  477. package/SVF-doxygen/html/html/dir_1870ebf480d659cc38d2dd7ac3aa8993.html +2 -0
  478. package/SVF-doxygen/html/html/dir_95e22971b5dbae2382075a3453e365b4.html +4 -0
  479. package/SVF-doxygen/html/html/dir_fa02919a30fec2d2c2d591b4d920d648.html +6 -0
  480. package/SVF-doxygen/html/html/fastcluster__R__dm_8cpp_8inc_source.html +2 -1
  481. package/SVF-doxygen/html/html/files.html +42 -36
  482. package/SVF-doxygen/html/html/functions_a.html +11 -8
  483. package/SVF-doxygen/html/html/functions_b.html +19 -12
  484. package/SVF-doxygen/html/html/functions_c.html +43 -42
  485. package/SVF-doxygen/html/html/functions_d.html +27 -15
  486. package/SVF-doxygen/html/html/functions_e.html +19 -7
  487. package/SVF-doxygen/html/html/functions_eval_b.html +4 -4
  488. package/SVF-doxygen/html/html/functions_eval_i.html +6 -0
  489. package/SVF-doxygen/html/html/functions_f.html +21 -18
  490. package/SVF-doxygen/html/html/functions_func.html +13 -10
  491. package/SVF-doxygen/html/html/functions_func_b.html +2 -1
  492. package/SVF-doxygen/html/html/functions_func_c.html +4 -4
  493. package/SVF-doxygen/html/html/functions_func_d.html +18 -14
  494. package/SVF-doxygen/html/html/functions_func_e.html +13 -2
  495. package/SVF-doxygen/html/html/functions_func_g.html +107 -75
  496. package/SVF-doxygen/html/html/functions_func_h.html +4 -4
  497. package/SVF-doxygen/html/html/functions_func_i.html +22 -11
  498. package/SVF-doxygen/html/html/functions_func_m.html +3 -0
  499. package/SVF-doxygen/html/html/functions_func_n.html +5 -2
  500. package/SVF-doxygen/html/html/functions_func_o.html +42 -8
  501. package/SVF-doxygen/html/html/functions_func_p.html +8 -2
  502. package/SVF-doxygen/html/html/functions_func_r.html +7 -1
  503. package/SVF-doxygen/html/html/functions_func_s.html +15 -18
  504. package/SVF-doxygen/html/html/functions_func_w.html +22 -1
  505. package/SVF-doxygen/html/html/functions_g.html +119 -78
  506. package/SVF-doxygen/html/html/functions_h.html +3 -6
  507. package/SVF-doxygen/html/html/functions_i.html +43 -15
  508. package/SVF-doxygen/html/html/functions_m.html +4 -1
  509. package/SVF-doxygen/html/html/functions_n.html +31 -25
  510. package/SVF-doxygen/html/html/functions_o.html +51 -22
  511. package/SVF-doxygen/html/html/functions_p.html +29 -19
  512. package/SVF-doxygen/html/html/functions_r.html +10 -5
  513. package/SVF-doxygen/html/html/functions_rela.html +6 -3
  514. package/SVF-doxygen/html/html/functions_s.html +22 -27
  515. package/SVF-doxygen/html/html/functions_t.html +6 -6
  516. package/SVF-doxygen/html/html/functions_type_b.html +3 -0
  517. package/SVF-doxygen/html/html/functions_type_c.html +6 -5
  518. package/SVF-doxygen/html/html/functions_type_d.html +5 -0
  519. package/SVF-doxygen/html/html/functions_type_e.html +4 -4
  520. package/SVF-doxygen/html/html/functions_type_g.html +6 -5
  521. package/SVF-doxygen/html/html/functions_type_i.html +3 -2
  522. package/SVF-doxygen/html/html/functions_type_n.html +26 -23
  523. package/SVF-doxygen/html/html/functions_type_p.html +2 -1
  524. package/SVF-doxygen/html/html/functions_type_r.html +1 -0
  525. package/SVF-doxygen/html/html/functions_type_v.html +1 -0
  526. package/SVF-doxygen/html/html/functions_v.html +8 -7
  527. package/SVF-doxygen/html/html/functions_vars_b.html +3 -0
  528. package/SVF-doxygen/html/html/functions_vars_d.html +3 -0
  529. package/SVF-doxygen/html/html/functions_vars_e.html +3 -0
  530. package/SVF-doxygen/html/html/functions_vars_f.html +3 -0
  531. package/SVF-doxygen/html/html/functions_vars_g.html +9 -1
  532. package/SVF-doxygen/html/html/functions_vars_h.html +0 -3
  533. package/SVF-doxygen/html/html/functions_vars_i.html +10 -0
  534. package/SVF-doxygen/html/html/functions_vars_o.html +3 -0
  535. package/SVF-doxygen/html/html/functions_vars_p.html +3 -0
  536. package/SVF-doxygen/html/html/functions_w.html +22 -1
  537. package/SVF-doxygen/html/html/hierarchy.html +444 -397
  538. package/SVF-doxygen/html/html/include_2MTA_2MTAResultValidator_8h_source.html +4 -4
  539. package/SVF-doxygen/html/html/iterator_8h.html +124 -0
  540. package/SVF-doxygen/html/html/iterator_8h_source.html +134 -0
  541. package/SVF-doxygen/html/html/iterator__range_8h.html +110 -0
  542. package/SVF-doxygen/html/html/iterator__range_8h_source.html +90 -0
  543. package/SVF-doxygen/html/html/menudata.js +17 -16
  544. package/SVF-doxygen/html/html/mta_8cpp_source.html +1 -1
  545. package/SVF-doxygen/html/html/namespaceSVF.html +575 -9
  546. package/SVF-doxygen/html/html/namespaceSVF_1_1DOT.html +107 -0
  547. package/SVF-doxygen/html/html/namespaceSVF_1_1GraphProgram.html +122 -0
  548. package/SVF-doxygen/html/html/namespaceSVF_1_1LLVMUtil.html +65 -7
  549. package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +3 -3
  550. package/SVF-doxygen/html/html/namespacellvm.html +1 -95
  551. package/SVF-doxygen/html/html/namespacellvm_1_1DOT.html +107 -0
  552. package/SVF-doxygen/html/html/namespacellvm_1_1GraphProgram.html +122 -0
  553. package/SVF-doxygen/html/html/namespacemembers_c.html +9 -0
  554. package/SVF-doxygen/html/html/namespacemembers_d.html +5 -2
  555. package/SVF-doxygen/html/html/namespacemembers_e.html +3 -0
  556. package/SVF-doxygen/html/html/namespacemembers_enum.html +3 -0
  557. package/SVF-doxygen/html/html/namespacemembers_eval.html +15 -0
  558. package/SVF-doxygen/html/html/namespacemembers_f.html +3 -0
  559. package/SVF-doxygen/html/html/namespacemembers_func.html +0 -495
  560. package/SVF-doxygen/html/html/namespacemembers_func_b.html +88 -0
  561. package/SVF-doxygen/html/html/namespacemembers_func_c.html +97 -0
  562. package/SVF-doxygen/html/html/namespacemembers_func_d.html +97 -0
  563. package/SVF-doxygen/html/html/namespacemembers_func_e.html +82 -0
  564. package/SVF-doxygen/html/html/namespacemembers_func_f.html +76 -0
  565. package/SVF-doxygen/html/html/namespacemembers_func_g.html +186 -0
  566. package/SVF-doxygen/html/html/namespacemembers_func_h.html +76 -0
  567. package/SVF-doxygen/html/html/namespacemembers_func_i.html +253 -0
  568. package/SVF-doxygen/html/html/namespacemembers_func_m.html +91 -0
  569. package/SVF-doxygen/html/html/namespacemembers_func_n.html +76 -0
  570. package/SVF-doxygen/html/html/namespacemembers_func_o.html +94 -0
  571. package/SVF-doxygen/html/html/namespacemembers_func_p.html +82 -0
  572. package/SVF-doxygen/html/html/namespacemembers_func_r.html +79 -0
  573. package/SVF-doxygen/html/html/namespacemembers_func_s.html +91 -0
  574. package/SVF-doxygen/html/html/namespacemembers_func_t.html +76 -0
  575. package/SVF-doxygen/html/html/namespacemembers_func_v.html +85 -0
  576. package/SVF-doxygen/html/html/namespacemembers_func_w.html +82 -0
  577. package/SVF-doxygen/html/html/namespacemembers_g.html +1 -1
  578. package/SVF-doxygen/html/html/namespacemembers_i.html +12 -3
  579. package/SVF-doxygen/html/html/namespacemembers_m.html +12 -0
  580. package/SVF-doxygen/html/html/namespacemembers_n.html +9 -0
  581. package/SVF-doxygen/html/html/namespacemembers_r.html +4 -1
  582. package/SVF-doxygen/html/html/namespacemembers_t.html +3 -0
  583. package/SVF-doxygen/html/html/namespacemembers_type_g.html +1 -1
  584. package/SVF-doxygen/html/html/namespacemembers_type_r.html +3 -0
  585. package/SVF-doxygen/html/html/namespacemembers_v.html +3 -0
  586. package/SVF-doxygen/html/html/namespacemembers_w.html +3 -0
  587. package/SVF-doxygen/html/html/namespaces.html +4 -2
  588. package/SVF-doxygen/html/html/saber_8cpp_source.html +1 -1
  589. package/SVF-doxygen/html/html/search/all_1.js +1 -0
  590. package/SVF-doxygen/html/html/search/all_10.js +13 -10
  591. package/SVF-doxygen/html/html/search/all_11.js +6 -3
  592. package/SVF-doxygen/html/html/search/all_12.js +7 -6
  593. package/SVF-doxygen/html/html/search/all_13.js +5 -4
  594. package/SVF-doxygen/html/html/search/all_15.js +6 -5
  595. package/SVF-doxygen/html/html/search/all_16.js +8 -1
  596. package/SVF-doxygen/html/html/search/all_2.js +6 -4
  597. package/SVF-doxygen/html/html/search/all_3.js +10 -7
  598. package/SVF-doxygen/html/html/search/all_4.js +21 -14
  599. package/SVF-doxygen/html/html/search/all_5.js +9 -4
  600. package/SVF-doxygen/html/html/search/all_6.js +3 -1
  601. package/SVF-doxygen/html/html/search/all_7.js +90 -46
  602. package/SVF-doxygen/html/html/search/all_8.js +1 -2
  603. package/SVF-doxygen/html/html/search/all_9.js +23 -5
  604. package/SVF-doxygen/html/html/search/all_d.js +6 -1
  605. package/SVF-doxygen/html/html/search/all_e.js +11 -8
  606. package/SVF-doxygen/html/html/search/all_f.js +19 -15
  607. package/SVF-doxygen/html/html/search/classes_3.js +13 -9
  608. package/SVF-doxygen/html/html/search/classes_6.js +64 -32
  609. package/SVF-doxygen/html/html/search/classes_8.js +11 -1
  610. package/SVF-doxygen/html/html/search/classes_a.js +1 -0
  611. package/SVF-doxygen/html/html/search/classes_d.js +2 -0
  612. package/SVF-doxygen/html/html/search/classes_e.js +1 -0
  613. package/SVF-doxygen/html/html/search/enums_8.js +1 -6
  614. package/SVF-doxygen/html/html/search/enums_9.js +6 -1
  615. package/SVF-doxygen/html/html/search/enums_a.js +1 -4
  616. package/SVF-doxygen/html/html/search/enums_b.js +4 -2
  617. package/SVF-doxygen/html/html/search/enums_c.js +2 -4
  618. package/SVF-doxygen/html/html/search/enums_d.js +4 -1
  619. package/SVF-doxygen/html/html/search/enums_e.html +26 -0
  620. package/SVF-doxygen/html/html/search/enums_e.js +4 -0
  621. package/SVF-doxygen/html/html/search/enumvalues_1.js +3 -3
  622. package/SVF-doxygen/html/html/search/enumvalues_10.js +1 -0
  623. package/SVF-doxygen/html/html/search/enumvalues_2.js +1 -0
  624. package/SVF-doxygen/html/html/search/enumvalues_3.js +1 -0
  625. package/SVF-doxygen/html/html/search/enumvalues_5.js +1 -0
  626. package/SVF-doxygen/html/html/search/enumvalues_8.js +3 -1
  627. package/SVF-doxygen/html/html/search/enumvalues_b.js +1 -0
  628. package/SVF-doxygen/html/html/search/files_3.js +1 -0
  629. package/SVF-doxygen/html/html/search/files_6.js +4 -1
  630. package/SVF-doxygen/html/html/search/files_7.js +3 -1
  631. package/SVF-doxygen/html/html/search/functions_0.js +1 -0
  632. package/SVF-doxygen/html/html/search/functions_1.js +1 -1
  633. package/SVF-doxygen/html/html/search/functions_10.js +2 -0
  634. package/SVF-doxygen/html/html/search/functions_11.js +1 -2
  635. package/SVF-doxygen/html/html/search/functions_14.js +1 -0
  636. package/SVF-doxygen/html/html/search/functions_15.js +8 -1
  637. package/SVF-doxygen/html/html/search/functions_2.js +4 -2
  638. package/SVF-doxygen/html/html/search/functions_3.js +5 -4
  639. package/SVF-doxygen/html/html/search/functions_4.js +7 -3
  640. package/SVF-doxygen/html/html/search/functions_6.js +21 -12
  641. package/SVF-doxygen/html/html/search/functions_7.js +1 -1
  642. package/SVF-doxygen/html/html/search/functions_8.js +10 -4
  643. package/SVF-doxygen/html/html/search/functions_c.js +5 -0
  644. package/SVF-doxygen/html/html/search/functions_d.js +4 -2
  645. package/SVF-doxygen/html/html/search/functions_e.js +14 -8
  646. package/SVF-doxygen/html/html/search/functions_f.js +3 -1
  647. package/SVF-doxygen/html/html/search/namespaces_1.js +2 -0
  648. package/SVF-doxygen/html/html/search/related_9.js +3 -3
  649. package/SVF-doxygen/html/html/search/searchdata.js +1 -1
  650. package/SVF-doxygen/html/html/search/typedefs_1.js +1 -0
  651. package/SVF-doxygen/html/html/search/typedefs_13.js +1 -1
  652. package/SVF-doxygen/html/html/search/typedefs_2.js +2 -2
  653. package/SVF-doxygen/html/html/search/typedefs_3.js +2 -1
  654. package/SVF-doxygen/html/html/search/typedefs_4.js +1 -1
  655. package/SVF-doxygen/html/html/search/typedefs_6.js +3 -3
  656. package/SVF-doxygen/html/html/search/typedefs_7.js +2 -2
  657. package/SVF-doxygen/html/html/search/typedefs_c.js +4 -4
  658. package/SVF-doxygen/html/html/search/typedefs_e.js +2 -2
  659. package/SVF-doxygen/html/html/search/typedefs_f.js +2 -1
  660. package/SVF-doxygen/html/html/search/variables_10.js +1 -0
  661. package/SVF-doxygen/html/html/search/variables_13.js +3 -3
  662. package/SVF-doxygen/html/html/search/variables_2.js +1 -0
  663. package/SVF-doxygen/html/html/search/variables_3.js +1 -1
  664. package/SVF-doxygen/html/html/search/variables_4.js +1 -0
  665. package/SVF-doxygen/html/html/search/variables_5.js +1 -0
  666. package/SVF-doxygen/html/html/search/variables_6.js +1 -0
  667. package/SVF-doxygen/html/html/search/variables_7.js +2 -1
  668. package/SVF-doxygen/html/html/search/variables_8.js +0 -1
  669. package/SVF-doxygen/html/html/search/variables_9.js +3 -0
  670. package/SVF-doxygen/html/html/search/variables_e.js +1 -1
  671. package/SVF-doxygen/html/html/search/variables_f.js +1 -0
  672. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits-members.html +99 -0
  673. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits.html +193 -0
  674. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits.png +0 -0
  675. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01CFLGraph_01_5_01_4-members.html +105 -0
  676. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01CFLGraph_01_5_01_4.html +443 -0
  677. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01CFLGraph_01_5_01_4.png +0 -0
  678. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01CHGraph_01_5_01_4-members.html +104 -0
  679. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01CHGraph_01_5_01_4.html +388 -0
  680. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01CHGraph_01_5_01_4.png +0 -0
  681. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4-members.html +106 -0
  682. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +481 -0
  683. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.png +0 -0
  684. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01ICFG_01_5_01_4-members.html +106 -0
  685. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html +475 -0
  686. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.png +0 -0
  687. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4-members.html +107 -0
  688. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +486 -0
  689. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.png +0 -0
  690. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01PTACallGraph_01_5_01_4-members.html +106 -0
  691. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01PTACallGraph_01_5_01_4.html +457 -0
  692. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01PTACallGraph_01_5_01_4.png +0 -0
  693. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01SVFG_01_5_01_4-members.html +108 -0
  694. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01SVFG_01_5_01_4.html +595 -0
  695. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01SVFG_01_5_01_4.png +0 -0
  696. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01TCT_01_5_01_4-members.html +105 -0
  697. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01TCT_01_5_01_4.html +409 -0
  698. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01TCT_01_5_01_4.png +0 -0
  699. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01VFG_01_5_01_4-members.html +107 -0
  700. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html +543 -0
  701. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01VFG_01_5_01_4.png +0 -0
  702. package/SVF-doxygen/html/html/structSVF_1_1DefaultDOTGraphTraits-members.html +99 -0
  703. package/SVF-doxygen/html/html/structSVF_1_1DefaultDOTGraphTraits.html +855 -0
  704. package/SVF-doxygen/html/html/structSVF_1_1DefaultDOTGraphTraits.png +0 -0
  705. package/SVF-doxygen/html/html/structSVF_1_1GenericEdge_1_1equalGEdge.html +3 -3
  706. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits-members.html +81 -0
  707. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits.html +116 -0
  708. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01Inverse_3_01T_01_4_01_4_01_4-members.html +81 -0
  709. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01Inverse_3_01T_01_4_01_4_01_4.html +106 -0
  710. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01Inverse_3_01T_01_4_01_4_01_4.png +0 -0
  711. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1CFLNode_01_5_01_4_01_4-members.html +81 -0
  712. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1CFLNode_01_5_01_4_01_4.html +110 -0
  713. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1CFLNode_01_5_01_4_01_4.png +0 -0
  714. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1CHNode_01_5_01_4_01_4-members.html +81 -0
  715. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1CHNode_01_5_01_4_01_4.html +110 -0
  716. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1CHNode_01_5_01_4_01_4.png +0 -0
  717. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1ConstraintNode_01_5_01_4_01_4-members.html +81 -0
  718. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1ConstraintNode_01_5_01_4_01_4.html +110 -0
  719. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1ConstraintNode_01_5_01_4_01_4.png +0 -0
  720. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1DCHNode_01_5_01_4_01_4-members.html +81 -0
  721. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1DCHNode_01_5_01_4_01_4.html +110 -0
  722. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1DCHNode_01_5_01_4_01_4.png +0 -0
  723. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1GenericNode_3_01NodeTy_00_01EdgeTy_01_4_01_5_4_01_4-members.html +88 -0
  724. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1GenericNode_3_01NodeTy_00_01EdgeTy_01_4_01_5_4_01_4.html +324 -0
  725. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1ICFGNode_01_5_01_4_01_4-members.html +81 -0
  726. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1ICFGNode_01_5_01_4_01_4.html +110 -0
  727. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1ICFGNode_01_5_01_4_01_4.png +0 -0
  728. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1PTACallGraphNode_01_5_01_4_01_4-members.html +81 -0
  729. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1PTACallGraphNode_01_5_01_4_01_4.html +110 -0
  730. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1PTACallGraphNode_01_5_01_4_01_4.png +0 -0
  731. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1SVFVar_01_5_01_4_01_4-members.html +81 -0
  732. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1SVFVar_01_5_01_4_01_4.html +110 -0
  733. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1SVFVar_01_5_01_4_01_4.png +0 -0
  734. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1TCTNode_01_5_01_4_01_4-members.html +81 -0
  735. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1TCTNode_01_5_01_4_01_4.html +110 -0
  736. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1TCTNode_01_5_01_4_01_4.png +0 -0
  737. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1VFGNode_01_5_01_4_01_4-members.html +81 -0
  738. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1VFGNode_01_5_01_4_01_4.html +110 -0
  739. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1VFGNode_01_5_01_4_01_4.png +0 -0
  740. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1CFLGraph_01_5_01_4-members.html +81 -0
  741. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1CFLGraph_01_5_01_4.html +126 -0
  742. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1CFLGraph_01_5_01_4.png +0 -0
  743. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1CFLNode_01_5_01_4-members.html +81 -0
  744. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1CFLNode_01_5_01_4.html +106 -0
  745. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1CFLNode_01_5_01_4.png +0 -0
  746. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1CHGraph_01_5_01_4-members.html +81 -0
  747. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1CHGraph_01_5_01_4.html +126 -0
  748. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1CHGraph_01_5_01_4.png +0 -0
  749. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1CHNode_01_5_01_4-members.html +81 -0
  750. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1CHNode_01_5_01_4.html +106 -0
  751. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1CHNode_01_5_01_4.png +0 -0
  752. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1ConstraintGraph_01_5_01_4-members.html +81 -0
  753. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1ConstraintGraph_01_5_01_4.html +126 -0
  754. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1ConstraintGraph_01_5_01_4.png +0 -0
  755. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1ConstraintNode_01_5_01_4-members.html +81 -0
  756. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1ConstraintNode_01_5_01_4.html +106 -0
  757. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1ConstraintNode_01_5_01_4.png +0 -0
  758. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1DCHGraph_01_5_01_4-members.html +81 -0
  759. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1DCHGraph_01_5_01_4.html +126 -0
  760. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1DCHGraph_01_5_01_4.png +0 -0
  761. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1DCHNode_01_5_01_4-members.html +81 -0
  762. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1DCHNode_01_5_01_4.html +106 -0
  763. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1DCHNode_01_5_01_4.png +0 -0
  764. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1GenericGraph_3_01NodeTy_00_01EdgeTy_01_4_01_5_4-members.html +99 -0
  765. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1GenericGraph_3_01NodeTy_00_01EdgeTy_01_4_01_5_4.html +467 -0
  766. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1GenericGraph_3_01NodeTy_00_01EdgeTy_01_4_01_5_4.png +0 -0
  767. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1GenericNode_3_01NodeTy_00_01EdgeTy_01_4_01_5_01_4-members.html +89 -0
  768. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1GenericNode_3_01NodeTy_00_01EdgeTy_01_4_01_5_01_4.html +367 -0
  769. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1GenericNode_3_01NodeTy_00_01EdgeTy_01_4_01_5_01_4.png +0 -0
  770. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1ICFGNode_01_5_01_4-members.html +81 -0
  771. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1ICFGNode_01_5_01_4.html +106 -0
  772. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1ICFGNode_01_5_01_4.png +0 -0
  773. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1ICFG_01_5_01_4-members.html +81 -0
  774. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1ICFG_01_5_01_4.html +126 -0
  775. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1ICFG_01_5_01_4.png +0 -0
  776. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1IRGraph_01_5_01_4-members.html +81 -0
  777. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1IRGraph_01_5_01_4.html +126 -0
  778. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1IRGraph_01_5_01_4.png +0 -0
  779. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1PTACallGraphNode_01_5_01_4-members.html +81 -0
  780. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1PTACallGraphNode_01_5_01_4.html +106 -0
  781. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1PTACallGraphNode_01_5_01_4.png +0 -0
  782. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1PTACallGraph_01_5_01_4-members.html +81 -0
  783. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1PTACallGraph_01_5_01_4.html +126 -0
  784. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1PTACallGraph_01_5_01_4.png +0 -0
  785. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1SVFG_01_5_01_4-members.html +81 -0
  786. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1SVFG_01_5_01_4.html +126 -0
  787. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1SVFG_01_5_01_4.png +0 -0
  788. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1SVFVar_01_5_01_4-members.html +81 -0
  789. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1SVFVar_01_5_01_4.html +106 -0
  790. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1SVFVar_01_5_01_4.png +0 -0
  791. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1TCTNode_01_5_01_4-members.html +81 -0
  792. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1TCTNode_01_5_01_4.html +106 -0
  793. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1TCTNode_01_5_01_4.png +0 -0
  794. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1TCT_01_5_01_4-members.html +81 -0
  795. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1TCT_01_5_01_4.html +126 -0
  796. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1TCT_01_5_01_4.png +0 -0
  797. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1VFGNode_01_5_01_4-members.html +81 -0
  798. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1VFGNode_01_5_01_4.html +106 -0
  799. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1VFGNode_01_5_01_4.png +0 -0
  800. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1VFG_01_5_01_4-members.html +81 -0
  801. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1VFG_01_5_01_4.html +126 -0
  802. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1VFG_01_5_01_4.png +0 -0
  803. package/SVF-doxygen/html/html/structSVF_1_1Inverse-members.html +82 -0
  804. package/SVF-doxygen/html/html/structSVF_1_1Inverse.html +154 -0
  805. package/SVF-doxygen/html/html/structSVF_1_1SparseBitVectorElement-members.html +3 -3
  806. package/SVF-doxygen/html/html/structSVF_1_1SparseBitVectorElement.html +46 -46
  807. package/SVF-doxygen/html/html/structSVF_1_1pointee__iter-members.html +111 -0
  808. package/SVF-doxygen/html/html/structSVF_1_1pointee__iter.html +279 -0
  809. package/SVF-doxygen/html/html/structSVF_1_1pointee__iter.png +0 -0
  810. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits-members.html +99 -0
  811. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits.html +193 -0
  812. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits.png +0 -0
  813. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01CFLGraph_01_5_01_4-members.html +22 -4
  814. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01CFLGraph_01_5_01_4.html +67 -10
  815. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01CFLGraph_01_5_01_4.png +0 -0
  816. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01CHGraph_01_5_01_4-members.html +21 -3
  817. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01CHGraph_01_5_01_4.html +65 -8
  818. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01CHGraph_01_5_01_4.png +0 -0
  819. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4-members.html +22 -4
  820. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +72 -12
  821. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.png +0 -0
  822. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4-members.html +23 -5
  823. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html +70 -10
  824. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.png +0 -0
  825. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4-members.html +23 -5
  826. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +68 -11
  827. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.png +0 -0
  828. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01PTACallGraph_01_5_01_4-members.html +23 -5
  829. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01PTACallGraph_01_5_01_4.html +68 -11
  830. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01PTACallGraph_01_5_01_4.png +0 -0
  831. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01SVFG_01_5_01_4-members.html +24 -6
  832. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01SVFG_01_5_01_4.html +76 -15
  833. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01SVFG_01_5_01_4.png +0 -0
  834. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01TCT_01_5_01_4-members.html +22 -4
  835. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01TCT_01_5_01_4.html +67 -10
  836. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01TCT_01_5_01_4.png +0 -0
  837. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4-members.html +24 -6
  838. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html +73 -12
  839. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.png +0 -0
  840. package/SVF-doxygen/html/html/structllvm_1_1DefaultDOTGraphTraits-members.html +99 -0
  841. package/SVF-doxygen/html/html/structllvm_1_1DefaultDOTGraphTraits.html +855 -0
  842. package/SVF-doxygen/html/html/structllvm_1_1DefaultDOTGraphTraits.png +0 -0
  843. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits-members.html +81 -0
  844. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits.html +116 -0
  845. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01Inverse_3_01T_01_4_01_4_01_4-members.html +81 -0
  846. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01Inverse_3_01T_01_4_01_4_01_4.html +106 -0
  847. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01Inverse_3_01T_01_4_01_4_01_4.png +0 -0
  848. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1CFLNode_01_5_01_4_01_4-members.html +81 -0
  849. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1CFLNode_01_5_01_4_01_4.html +12 -2
  850. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1CFLNode_01_5_01_4_01_4.png +0 -0
  851. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1CHNode_01_5_01_4_01_4-members.html +81 -0
  852. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1CHNode_01_5_01_4_01_4.html +12 -2
  853. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1CHNode_01_5_01_4_01_4.png +0 -0
  854. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1ConstraintNode_01_5_01_4_01_4-members.html +81 -0
  855. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1ConstraintNode_01_5_01_4_01_4.html +12 -2
  856. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1ConstraintNode_01_5_01_4_01_4.png +0 -0
  857. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1DCHNode_01_5_01_4_01_4-members.html +81 -0
  858. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1DCHNode_01_5_01_4_01_4.html +12 -2
  859. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1DCHNode_01_5_01_4_01_4.png +0 -0
  860. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1GenericNode_3_01NodeTy_00_01EdgeTy_01_4_01_5_4_01_4-members.html +1 -1
  861. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1GenericNode_3_01NodeTy_00_01EdgeTy_01_4_01_5_4_01_4.html +33 -31
  862. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1ICFGNode_01_5_01_4_01_4-members.html +81 -0
  863. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1ICFGNode_01_5_01_4_01_4.html +12 -2
  864. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1ICFGNode_01_5_01_4_01_4.png +0 -0
  865. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1PTACallGraphNode_01_5_01_4_01_4-members.html +81 -0
  866. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1PTACallGraphNode_01_5_01_4_01_4.html +12 -2
  867. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1PTACallGraphNode_01_5_01_4_01_4.png +0 -0
  868. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1SVFVar_01_5_01_4_01_4-members.html +81 -0
  869. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1SVFVar_01_5_01_4_01_4.html +12 -2
  870. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1SVFVar_01_5_01_4_01_4.png +0 -0
  871. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1TCTNode_01_5_01_4_01_4-members.html +81 -0
  872. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1TCTNode_01_5_01_4_01_4.html +12 -2
  873. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1TCTNode_01_5_01_4_01_4.png +0 -0
  874. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1VFGNode_01_5_01_4_01_4-members.html +81 -0
  875. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1VFGNode_01_5_01_4_01_4.html +12 -2
  876. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1VFGNode_01_5_01_4_01_4.png +0 -0
  877. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1CFLGraph_01_5_01_4.html +5 -1
  878. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1CFLGraph_01_5_01_4.png +0 -0
  879. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1CFLNode_01_5_01_4-members.html +81 -0
  880. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1CFLNode_01_5_01_4.html +10 -0
  881. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1CFLNode_01_5_01_4.png +0 -0
  882. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1CHGraph_01_5_01_4.html +5 -1
  883. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1CHGraph_01_5_01_4.png +0 -0
  884. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1CHNode_01_5_01_4-members.html +81 -0
  885. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1CHNode_01_5_01_4.html +10 -0
  886. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1CHNode_01_5_01_4.png +0 -0
  887. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1ConstraintGraph_01_5_01_4.html +5 -1
  888. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1ConstraintGraph_01_5_01_4.png +0 -0
  889. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1ConstraintNode_01_5_01_4-members.html +81 -0
  890. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1ConstraintNode_01_5_01_4.html +10 -0
  891. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1ConstraintNode_01_5_01_4.png +0 -0
  892. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1DCHGraph_01_5_01_4.html +5 -1
  893. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1DCHGraph_01_5_01_4.png +0 -0
  894. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1DCHNode_01_5_01_4-members.html +81 -0
  895. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1DCHNode_01_5_01_4.html +10 -0
  896. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1DCHNode_01_5_01_4.png +0 -0
  897. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1GenericGraph_3_01NodeTy_00_01EdgeTy_01_4_01_5_4-members.html +2 -2
  898. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1GenericGraph_3_01NodeTy_00_01EdgeTy_01_4_01_5_4.html +46 -44
  899. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1GenericNode_3_01NodeTy_00_01EdgeTy_01_4_01_5_01_4-members.html +1 -1
  900. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1GenericNode_3_01NodeTy_00_01EdgeTy_01_4_01_5_01_4.html +38 -34
  901. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1ICFGNode_01_5_01_4-members.html +81 -0
  902. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1ICFGNode_01_5_01_4.html +10 -0
  903. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1ICFGNode_01_5_01_4.png +0 -0
  904. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1ICFG_01_5_01_4.html +5 -1
  905. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1ICFG_01_5_01_4.png +0 -0
  906. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1IRGraph_01_5_01_4.html +5 -1
  907. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1IRGraph_01_5_01_4.png +0 -0
  908. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1PTACallGraphNode_01_5_01_4-members.html +81 -0
  909. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1PTACallGraphNode_01_5_01_4.html +10 -0
  910. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1PTACallGraphNode_01_5_01_4.png +0 -0
  911. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1PTACallGraph_01_5_01_4.html +5 -1
  912. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1PTACallGraph_01_5_01_4.png +0 -0
  913. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1SVFG_01_5_01_4.html +5 -1
  914. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1SVFG_01_5_01_4.png +0 -0
  915. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1SVFVar_01_5_01_4-members.html +81 -0
  916. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1SVFVar_01_5_01_4.html +10 -0
  917. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1SVFVar_01_5_01_4.png +0 -0
  918. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1TCTNode_01_5_01_4-members.html +81 -0
  919. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1TCTNode_01_5_01_4.html +10 -0
  920. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1TCTNode_01_5_01_4.png +0 -0
  921. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1TCT_01_5_01_4.html +5 -1
  922. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1TCT_01_5_01_4.png +0 -0
  923. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1VFGNode_01_5_01_4-members.html +81 -0
  924. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1VFGNode_01_5_01_4.html +10 -0
  925. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1VFGNode_01_5_01_4.png +0 -0
  926. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1VFG_01_5_01_4.html +5 -1
  927. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1VFG_01_5_01_4.png +0 -0
  928. package/SVF-doxygen/html/html/structllvm_1_1Inverse-members.html +82 -0
  929. package/SVF-doxygen/html/html/structllvm_1_1Inverse.html +154 -0
  930. package/SVF-doxygen/html/html/structllvm_1_1pointee__iterator-members.html +111 -0
  931. package/SVF-doxygen/html/html/structllvm_1_1pointee__iterator.html +279 -0
  932. package/SVF-doxygen/html/html/structllvm_1_1pointee__iterator.png +0 -0
  933. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CallSite_01_4.html +3 -3
  934. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CxtProc_01_4.html +1 -1
  935. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CxtStmt_01_4.html +1 -1
  936. package/SVF-doxygen/html/html/svf-ex_8cpp.html +9 -9
  937. package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +7 -7
  938. package/SVF-doxygen/html/html/tools_2MTA_2MTAResultValidator_8h_source.html +4 -4
  939. package/SVF-doxygen/html/html/wpa_8cpp_source.html +1 -1
  940. package/include/Graphs/CFLGraph.h +6 -6
  941. package/include/Graphs/CHG.h +6 -6
  942. package/include/Graphs/ConsG.h +6 -6
  943. package/include/Graphs/DOTGraphTraits.h +188 -0
  944. package/include/Graphs/GenericGraph.h +58 -18
  945. package/include/Graphs/GraphPrinter.h +14 -22
  946. package/include/Graphs/GraphTraits.h +150 -0
  947. package/include/Graphs/GraphWriter.h +380 -0
  948. package/include/Graphs/ICFG.h +6 -6
  949. package/include/Graphs/IRGraph.h +6 -7
  950. package/include/Graphs/PTACallGraph.h +6 -6
  951. package/include/Graphs/SVFG.h +6 -6
  952. package/include/Graphs/VFG.h +6 -6
  953. package/include/MTA/TCT.h +6 -6
  954. package/include/SABER/SrcSnkSolver.h +2 -2
  955. package/include/SVF-LLVM/DCHG.h +6 -6
  956. package/include/SVF-LLVM/LLVMUtil.h +5 -0
  957. package/include/SVF-LLVM/SymbolTableBuilder.h +0 -3
  958. package/include/SVFIR/SVFValue.h +2 -11
  959. package/include/SVFIR/SVFVariables.h +5 -5
  960. package/include/Util/GraphReachSolver.h +2 -2
  961. package/include/Util/SCC.h +1 -1
  962. package/include/Util/iterator.h +407 -0
  963. package/include/Util/iterator_range.h +76 -0
  964. package/include/WPA/WPASolver.h +1 -1
  965. package/lib/Graphs/CFLGraph.cpp +2 -2
  966. package/lib/Graphs/CHG.cpp +2 -2
  967. package/lib/Graphs/ConsG.cpp +2 -2
  968. package/lib/Graphs/GraphWriter.cpp +53 -0
  969. package/lib/Graphs/ICFG.cpp +2 -2
  970. package/lib/Graphs/IRGraph.cpp +2 -2
  971. package/lib/Graphs/PTACallGraph.cpp +2 -2
  972. package/lib/Graphs/SVFG.cpp +1 -1
  973. package/lib/Graphs/VFG.cpp +2 -2
  974. package/lib/MTA/TCT.cpp +1 -1
  975. package/lib/SVF-LLVM/LLVMModule.cpp +1 -2
  976. package/lib/SVF-LLVM/LLVMUtil.cpp +40 -0
  977. package/lib/SVF-LLVM/SVFIRBuilder.cpp +1 -1
  978. package/lib/SVF-LLVM/SymbolTableBuilder.cpp +0 -34
  979. package/lib/SVFIR/SVFValue.cpp +0 -1
  980. package/package.json +1 -1
@@ -67,11 +67,11 @@ $(function() {
67
67
  </div><!--header-->
68
68
  <div class="contents">
69
69
  <a href="MHP_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">//===- MHP.cpp -- May-happen-in-parallel analysis-------------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// SVF: Static Value-Flow Analysis</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Copyright (C) &lt;2013-&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"> * MHP.cpp</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * Created on: Jan 21, 2014</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * Author: Yulei Sui, Peng Di</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="Options_8h.html">Util/Options.h</a>&quot;</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="MHP_8h.html">MTA/MHP.h</a>&quot;</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="MTA_8h.html">MTA/MTA.h</a>&quot;</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="LockAnalysis_8h.html">MTA/LockAnalysis.h</a>&quot;</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="SVFUtil_8h.html">Util/SVFUtil.h</a>&quot;</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="PTAStat_8h.html">Util/PTAStat.h</a>&quot;</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="keyword">using namespace </span><a class="code" href="namespaceSVF.html">SVF</a>;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="keyword">using namespace </span><a class="code" href="namespaceSVFUtil.html">SVFUtil</a>;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="classSVF_1_1MHP.html#abf1f5a7c365dfb95b42015b7b2ad6fbe"> 44</a></span>&#160;<a class="code" href="classSVF_1_1MHP.html#abf1f5a7c365dfb95b42015b7b2ad6fbe">MHP::MHP</a>(<a class="code" href="classSVF_1_1TCT.html">TCT</a>* t) :tcg(t-&gt;getThreadCallGraph()),tct(t),numOfTotalQueries(0),numOfMHPQueries(0),</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; interleavingTime(0),interleavingQueriesTime(0)</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; <a class="code" href="classSVF_1_1MHP.html#a98857a1837cef5519c938d07bb771a60">fja</a> = <span class="keyword">new</span> <a class="code" href="classSVF_1_1ForkJoinAnalysis.html">ForkJoinAnalysis</a>(<a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <a class="code" href="classSVF_1_1MHP.html#a98857a1837cef5519c938d07bb771a60">fja</a>-&gt;<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a16061e7c28e7a9177d9ab798c102b815">analyzeForkJoinPair</a>();</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;}</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="classSVF_1_1MHP.html#a6b7133f1767c3636ce253c5325be5053"> 54</a></span>&#160;<a class="code" href="classSVF_1_1MHP.html#a6b7133f1767c3636ce253c5325be5053">MHP::~MHP</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; <span class="keyword">delete</span> <a class="code" href="classSVF_1_1MHP.html#a98857a1837cef5519c938d07bb771a60">fja</a>;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;}</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;</div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="classSVF_1_1MHP.html#a02457fa6e3c85c897ec3b3d8db18cc4b"> 62</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MHP.html#a02457fa6e3c85c897ec3b3d8db18cc4b">MHP::analyze</a>()</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;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a2c64190a065f342897573a3ef4973adb">DGENERAL</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;MHP interleaving analysis\n&quot;</span>));</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_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;MHP interleaving analysis\n&quot;</span>));</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <a class="code" href="SVFType_8h.html#ab6f41e9db3675dc689c5492418885041">DOTIMESTAT</a>(<span class="keywordtype">double</span> interleavingStart = <a class="code" href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">PTAStat::getClk</a>(<span class="keyword">true</span>));</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <a class="code" href="classSVF_1_1MHP.html#adfd90a8d20d630bc3813f5ed71d3abf7">analyzeInterleaving</a>();</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <a class="code" href="SVFType_8h.html#ab6f41e9db3675dc689c5492418885041">DOTIMESTAT</a>(<span class="keywordtype">double</span> interleavingEnd = <a class="code" href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">PTAStat::getClk</a>(<span class="keyword">true</span>));</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <a class="code" href="SVFType_8h.html#ab6f41e9db3675dc689c5492418885041">DOTIMESTAT</a>(<a class="code" href="classSVF_1_1MHP.html#aca306b97c6dcd47a8f407038436473a2">interleavingTime</a> += (interleavingEnd - interleavingStart) / <a class="code" href="SVFType_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a>);</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;}</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;</div><div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="classSVF_1_1MHP.html#adfd90a8d20d630bc3813f5ed71d3abf7"> 77</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MHP.html#adfd90a8d20d630bc3813f5ed71d3abf7">MHP::analyzeInterleaving</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; <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1GenericGraph.html#a5dfa3f178d4abf37177d0d74ff4c6a97">TCT::const_iterator</a> it = <a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(), eit = <a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); it!=eit; ++it)</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; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtThread.html">CxtThread</a>&amp; ct = it-&gt;second-&gt;getCxtThread();</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> rootTid = it-&gt;first;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* routine = <a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#ae25bbfc9c8616186f03c1555d5009ce3">getStartRoutineOfCxtThread</a>(ct);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfInst = routine-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#a793f485e92d12cf407f2ffa41861eb3d">getEntryBlock</a>()-&gt;<a class="code" href="classSVF_1_1SVFBasicBlock.html#a7bde256bc906af7f7204929019f4a33e">front</a>();</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <a class="code" href="classSVF_1_1CxtThreadStmt.html">CxtThreadStmt</a> rootcts(rootTid,ct.<a class="code" href="classSVF_1_1CxtThread.html#a93d75593046e26eafcf1af3a596bba4a">getContext</a>(),svfInst);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <a class="code" href="classSVF_1_1MHP.html#a6343dd11dd75d3730dc463321a11445e">addInterleavingThread</a>(rootcts,rootTid);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <a class="code" href="classSVF_1_1MHP.html#ae9423c868ba4d26337428b96db9fc77b">updateAncestorThreads</a>(rootTid);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <a class="code" href="classSVF_1_1MHP.html#a23ab5a03b7c00ba0ebac65568a83a5cc">updateSiblingThreads</a>(rootTid);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordflow">while</span>(!<a class="code" href="classSVF_1_1MHP.html#a0300d46dd22ee7cc8c62fada694d3acb">cxtStmtList</a>.<a class="code" href="classSVF_1_1FIFOWorkList.html#a7056704c224dfb4b57287fe90c004aa8">empty</a>())</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; <a class="code" href="classSVF_1_1CxtThreadStmt.html">CxtThreadStmt</a> cts = <a class="code" href="classSVF_1_1MHP.html#ad8d3aa1a12fb1e8668eb4138fbe23b7d">popFromCTSWorkList</a>();</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* curInst = cts.<a class="code" href="classSVF_1_1CxtStmt.html#a0b593c4ba425937212e2889e64ce4791">getStmt</a>();</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>,<a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;-----\nMHP analysis root thread: &quot;</span> &lt;&lt; rootTid &lt;&lt; <span class="stringliteral">&quot; &quot;</span>);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>,cts.<a class="code" href="classSVF_1_1CxtThreadStmt.html#a735d71af28b26d9576f679e53141e303">dump</a>());</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>,<a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;current thread interleaving: &lt; &quot;</span>);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>,<a class="code" href="namespaceSVF_1_1SVFUtil.html#aeb570e9267fd7b189bd1bc877896d7ab">dumpSet</a>(<a class="code" href="classSVF_1_1MHP.html#a653460ed316804bea377eecdde412d36">getInterleavingThreads</a>(cts)));</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>,<a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot; &gt;\n-----\n&quot;</span>);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#aa69b82c888c8193e97f9e95c62ac99d4">isCandidateFun</a>(curInst-&gt;<a class="code" href="classSVF_1_1SVFInstruction.html#ae009f41cbf48d949d4325e08fe8d7198">getParent</a>()-&gt;<a class="code" href="classSVF_1_1SVFBasicBlock.html#af48d08d3adf7dd3ed69d97e4df360059">getParent</a>()))</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; {</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <a class="code" href="classSVF_1_1MHP.html#a2c1e4fac7b810021939ed26307d37816">handleNonCandidateFun</a>(cts);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; }</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keywordflow">else</span></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="keywordflow">if</span>(<a class="code" href="classSVF_1_1MHP.html#a7af8320c524acaf3cf004ff37f9b4e42">isTDFork</a>(curInst))</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; {</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <a class="code" href="classSVF_1_1MHP.html#a8a95f8ae419b66310ce6f572caea2ca5">handleFork</a>(cts,rootTid);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; }</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1MHP.html#a3352c8718f909c9fbed4ef7f5cf050a2">isTDJoin</a>(curInst))</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; <a class="code" href="classSVF_1_1MHP.html#a3a535274cd3349a05eeccf3c9231396a">handleJoin</a>(cts,rootTid);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; }</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#afdc3358522417de9a0d3a181a329f722">SVFUtil::isCallSite</a>(curInst) &amp;&amp; !<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">isExtCall</a>(curInst))</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; {</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <a class="code" href="classSVF_1_1MHP.html#af769afe6ba6baccda5a497df181c9fb0">handleCall</a>(cts,rootTid);</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <a class="code" href="classSVF_1_1PTACallGraph.html#a5f5a5ec7e707a21994d301cc07d32a5a">PTACallGraph::FunctionSet</a> callees;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keywordflow">if</span>(!<a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#aa69b82c888c8193e97f9e95c62ac99d4">isCandidateFun</a>(<a class="code" href="classSVF_1_1MHP.html#a5a537e2f89e8cfe10a2d16ae1654be6e">getCallee</a>(curInst, callees)))</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <a class="code" href="classSVF_1_1MHP.html#af4d6f0884ce18ea5caf0dfd9799d1aae">handleIntra</a>(cts);</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; }</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(curInst-&gt;<a class="code" href="classSVF_1_1SVFInstruction.html#a454f676881eecf4b7399649a81180b5d">isRetInst</a>())</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; <a class="code" href="classSVF_1_1MHP.html#a76ac9d388529f090ab6dad5829dd0753">handleRet</a>(cts);</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="keywordflow">else</span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; {</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <a class="code" href="classSVF_1_1MHP.html#af4d6f0884ce18ea5caf0dfd9799d1aae">handleIntra</a>(cts);</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; }</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; }</div><div class="line"><a name="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;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <a class="code" href="classSVF_1_1MHP.html#abeb76ad63d9362ba8fa8f7088b0d942b">updateNonCandidateFunInterleaving</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;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1Options.html#aa3e6c78eb346a52bbaaac2610573604a">Options::PrintInterLev</a>)</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <a class="code" href="classSVF_1_1MHP.html#a22f7dc5043fed97f1b4b273b8b710415">printInterleaving</a>();</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;}</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;</div><div class="line"><a name="l00147"></a><span class="lineno"><a class="line" href="classSVF_1_1MHP.html#abeb76ad63d9362ba8fa8f7088b0d942b"> 147</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MHP.html#abeb76ad63d9362ba8fa8f7088b0d942b">MHP::updateNonCandidateFunInterleaving</a>()</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;{</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* module = <a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#aabc2c84e951ed9ae64207e379acb3074">getSVFModule</a>();</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun : module-&gt;<a class="code" href="classSVF_1_1SVFModule.html#abbaf48d9702ec1f38dc6ae137ca630a1">getFunctionSet</a>())</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; <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#aa69b82c888c8193e97f9e95c62ac99d4">isCandidateFun</a>(fun) &amp;&amp; !<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">isExtCall</a>(fun))</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; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* entryinst = fun-&gt;getEntryBlock()-&gt;front();</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1MHP.html#a27d031e9c7c4706d7ee1750668e83b99">hasThreadStmtSet</a>(entryinst))</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1MHP.html#a28031502c4f8f0d4012c0827c57efb32">CxtThreadStmtSet</a>&amp; tsSet = <a class="code" href="classSVF_1_1MHP.html#a4ce3b9ad740aa7b74a1ae2192aeeb9d8">getThreadStmtSet</a>(entryinst);</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="keywordflow">for</span> (CxtThreadStmtSet::const_iterator it1 = tsSet.begin(), eit1 = tsSet.end(); it1 != eit1; ++it1)</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; {</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtThreadStmt.html">CxtThreadStmt</a>&amp; cts = *it1;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a>&amp; curCxt = cts.<a class="code" href="classSVF_1_1CxtStmt.html#a3ce19b8f2de2e199ed4165dbe9d21f28">getContext</a>();</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* svfbb : fun-&gt;getBasicBlockList())</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; {</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfInst : svfbb-&gt;getInstructionList())</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; {</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keywordflow">if</span> (svfInst == entryinst)</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <a class="code" href="classSVF_1_1CxtThreadStmt.html">CxtThreadStmt</a> newCts(cts.<a class="code" href="classSVF_1_1CxtThreadStmt.html#a3b8f641f2fb7ade7052cae1ee6463884">getTid</a>(), curCxt, svfInst);</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <a class="code" href="classSVF_1_1MHP.html#afcfc409e625b74cbefd240170627c541">threadStmtToTheadInterLeav</a>[newCts] |= <a class="code" href="classSVF_1_1MHP.html#afcfc409e625b74cbefd240170627c541">threadStmtToTheadInterLeav</a>[cts];</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <a class="code" href="classSVF_1_1MHP.html#a6b238ee6342da990840162845bba547f">instToTSMap</a>[svfInst].insert(newCts);</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; }</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; }</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; }</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; }</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; }</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;}</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;</div><div class="line"><a name="l00184"></a><span class="lineno"><a class="line" href="classSVF_1_1MHP.html#a2c1e4fac7b810021939ed26307d37816"> 184</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MHP.html#a2c1e4fac7b810021939ed26307d37816">MHP::handleNonCandidateFun</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtThreadStmt.html">CxtThreadStmt</a>&amp; cts)</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;{</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* curInst = cts.<a class="code" href="classSVF_1_1CxtStmt.html#a0b593c4ba425937212e2889e64ce4791">getStmt</a>();</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* curfun = curInst-&gt;<a class="code" href="classSVF_1_1SVFInstruction.html#ae009f41cbf48d949d4325e08fe8d7198">getParent</a>()-&gt;<a class="code" href="classSVF_1_1SVFBasicBlock.html#af48d08d3adf7dd3ed69d97e4df360059">getParent</a>();</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfInst = curfun-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#a793f485e92d12cf407f2ffa41861eb3d">getEntryBlock</a>()-&gt;<a class="code" href="classSVF_1_1SVFBasicBlock.html#a7bde256bc906af7f7204929019f4a33e">front</a>();</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; assert((curInst == svfInst) &amp;&amp; <span class="stringliteral">&quot;curInst is not the entry of non candidate function.&quot;</span>);</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a>&amp; curCxt = cts.<a class="code" href="classSVF_1_1CxtStmt.html#a3ce19b8f2de2e199ed4165dbe9d21f28">getContext</a>();</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a>* node = <a class="code" href="classSVF_1_1MHP.html#a4b73d112880ad940e078e801f8725799">tcg</a>-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">getCallGraphNode</a>(curfun);</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1PTACallGraphNode.html#adf17f5699c9f40ffc8837e813e3af3ec">PTACallGraphNode::const_iterator</a> nit = node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#aa4f103330118c8976bf95e4bf53416eb">OutEdgeBegin</a>(), neit = node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a19a3366fd8a58290d0c740c46c3dcb3d">OutEdgeEnd</a>(); nit != neit; nit++)</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; {</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* callee = (*nit)-&gt;getDstNode()-&gt;getFunction();</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">isExtCall</a>(callee))</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; {</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* calleeInst = callee-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#a793f485e92d12cf407f2ffa41861eb3d">getEntryBlock</a>()-&gt;<a class="code" href="classSVF_1_1SVFBasicBlock.html#a7bde256bc906af7f7204929019f4a33e">front</a>();</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <a class="code" href="classSVF_1_1CxtThreadStmt.html">CxtThreadStmt</a> newCts(cts.<a class="code" href="classSVF_1_1CxtThreadStmt.html#a3b8f641f2fb7ade7052cae1ee6463884">getTid</a>(), curCxt, calleeInst);</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <a class="code" href="classSVF_1_1MHP.html#a6343dd11dd75d3730dc463321a11445e">addInterleavingThread</a>(newCts, cts);</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; }</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;}</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160;</div><div class="line"><a name="l00207"></a><span class="lineno"><a class="line" href="classSVF_1_1MHP.html#a8a95f8ae419b66310ce6f572caea2ca5"> 207</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MHP.html#a8a95f8ae419b66310ce6f572caea2ca5">MHP::handleFork</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtThreadStmt.html">CxtThreadStmt</a>&amp; cts, <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> rootTid)</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;</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* call = cts.<a class="code" href="classSVF_1_1CxtStmt.html#a0b593c4ba425937212e2889e64ce4791">getStmt</a>();</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a>&amp; curCxt = cts.<a class="code" href="classSVF_1_1CxtStmt.html#a3ce19b8f2de2e199ed4165dbe9d21f28">getContext</a>();</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160;</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; assert(<a class="code" href="classSVF_1_1MHP.html#a7af8320c524acaf3cf004ff37f9b4e42">isTDFork</a>(call));</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cbn = <a class="code" href="classSVF_1_1MHP.html#acd61be4be1b285fa333c5435912ece0e">getCBN</a>(call);</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#a1602d02773578bca73dcbd29b95c67d0">getThreadCallGraph</a>()-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#af8df9ca6d906453fa3f7168aa84fd087">hasCallGraphEdge</a>(cbn))</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; {</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160;</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <span class="keywordflow">for</span> (ThreadCallGraph::ForkEdgeSet::const_iterator cgIt = <a class="code" href="classSVF_1_1MHP.html#a4b73d112880ad940e078e801f8725799">tcg</a>-&gt;<a class="code" href="classSVF_1_1ThreadCallGraph.html#a8721610a39212613ad55bbd46a35c576">getForkEdgeBegin</a>(cbn),</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; ecgIt = <a class="code" href="classSVF_1_1MHP.html#a4b73d112880ad940e078e801f8725799">tcg</a>-&gt;<a class="code" href="classSVF_1_1ThreadCallGraph.html#a8351e7ab445cb7faf0209d1fbc63fce1">getForkEdgeEnd</a>(cbn); cgIt != ecgIt; ++cgIt)</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="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svfroutine = (*cgIt)-&gt;getDstNode()-&gt;getFunction();</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a> newCxt = curCxt;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <a class="code" href="classSVF_1_1MHP.html#a68a2ad4480af7d40bd604d81afbc3d0b">pushCxt</a>(newCxt,call,svfroutine);</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* stmt = svfroutine-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#a793f485e92d12cf407f2ffa41861eb3d">getEntryBlock</a>()-&gt;<a class="code" href="classSVF_1_1SVFBasicBlock.html#a7bde256bc906af7f7204929019f4a33e">front</a>();</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <a class="code" href="classSVF_1_1CxtThread.html">CxtThread</a> ct(newCxt,call);</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <a class="code" href="classSVF_1_1CxtThreadStmt.html">CxtThreadStmt</a> newcts(<a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#a7b4ad0b052e1f8b6869733eef15f4e4d">getTCTNode</a>(ct)-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(),ct.<a class="code" href="classSVF_1_1CxtThread.html#a93d75593046e26eafcf1af3a596bba4a">getContext</a>(),stmt);</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <a class="code" href="classSVF_1_1MHP.html#a6343dd11dd75d3730dc463321a11445e">addInterleavingThread</a>(newcts,cts);</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; <a class="code" href="classSVF_1_1MHP.html#af4d6f0884ce18ea5caf0dfd9799d1aae">handleIntra</a>(cts);</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="l00236"></a><span class="lineno"><a class="line" href="classSVF_1_1MHP.html#a3a535274cd3349a05eeccf3c9231396a"> 236</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MHP.html#a3a535274cd3349a05eeccf3c9231396a">MHP::handleJoin</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtThreadStmt.html">CxtThreadStmt</a>&amp; cts, <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> rootTid)</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;{</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160;</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* call = cts.<a class="code" href="classSVF_1_1CxtStmt.html#a0b593c4ba425937212e2889e64ce4791">getStmt</a>();</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a>&amp; curCxt = cts.<a class="code" href="classSVF_1_1CxtStmt.html#a3ce19b8f2de2e199ed4165dbe9d21f28">getContext</a>();</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; assert(<a class="code" href="classSVF_1_1MHP.html#a3352c8718f909c9fbed4ef7f5cf050a2">isTDJoin</a>(call));</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160;</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> joinedTids = <a class="code" href="classSVF_1_1MHP.html#aed0633101a35b43a1769261db14fb1a1">getDirAndIndJoinedTid</a>(curCxt,call);</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <span class="keywordflow">if</span>(!joinedTids.<a class="code" href="classSVF_1_1SparseBitVector.html#aea5389ad7e5fe4c8bef686940a1a6056">empty</a>())</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; {</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1MHP.html#a98857a1837cef5519c938d07bb771a60">fja</a>-&gt;<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a197ab02e8320affc4ba2c67fae5bf020">hasJoinLoop</a>(call))</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; {</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; std::vector&lt;const SVFBasicBlock*&gt; exitbbs;</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; call-&gt;<a class="code" href="classSVF_1_1SVFInstruction.html#aef7ad257ea809101df33779463907f3e">getFunction</a>()-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#a61505b528343c7d728eba3a705930a16">getExitBlocksOfLoop</a>(call-&gt;<a class="code" href="classSVF_1_1SVFInstruction.html#ae009f41cbf48d949d4325e08fe8d7198">getParent</a>(),exitbbs);</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <span class="keywordflow">while</span>(!exitbbs.empty())</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="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* eb = exitbbs.<a class="code" href="classSVF_1_1SVFBasicBlock.html#ad05f85ce931d4479f71d1947a25599dc">back</a>();</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; exitbbs.pop_back();</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfEntryInst = eb-&gt;<a class="code" href="classSVF_1_1SVFBasicBlock.html#a7bde256bc906af7f7204929019f4a33e">front</a>();</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <a class="code" href="classSVF_1_1CxtThreadStmt.html">CxtThreadStmt</a> newCts(cts.<a class="code" href="classSVF_1_1CxtThreadStmt.html#a3b8f641f2fb7ade7052cae1ee6463884">getTid</a>(),curCxt,svfEntryInst);</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; <a class="code" href="classSVF_1_1MHP.html#a6343dd11dd75d3730dc463321a11445e">addInterleavingThread</a>(newCts,cts);</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1MHP.html#a7585f40b80c5488828576eb2f035ac61">hasJoinInSymmetricLoop</a>(curCxt,call))</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <a class="code" href="classSVF_1_1MHP.html#a02b4ab18067c9b911b4bd53f0426aec3">rmInterleavingThread</a>(newCts,joinedTids,call);</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; }</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; }</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; {</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <a class="code" href="classSVF_1_1MHP.html#a02b4ab18067c9b911b4bd53f0426aec3">rmInterleavingThread</a>(cts,joinedTids,call);</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>,<a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\n\t match join site &quot;</span> &lt;&lt; call-&gt;<a class="code" href="classSVF_1_1SVFValue.html#aa678ca4616a3e69b53726b33d0b9c5a2">toString</a>() &lt;&lt; <span class="stringliteral">&quot; for thread &quot;</span> &lt;&lt; rootTid &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</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="l00270"></a><span class="lineno"> 270</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; {</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1MHP.html#a98857a1837cef5519c938d07bb771a60">fja</a>-&gt;<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a197ab02e8320affc4ba2c67fae5bf020">hasJoinLoop</a>(call))</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; {</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; std::vector&lt;const SVFBasicBlock*&gt; exitbbs;</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; call-&gt;<a class="code" href="classSVF_1_1SVFInstruction.html#aef7ad257ea809101df33779463907f3e">getFunction</a>()-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#a61505b528343c7d728eba3a705930a16">getExitBlocksOfLoop</a>(call-&gt;<a class="code" href="classSVF_1_1SVFInstruction.html#ae009f41cbf48d949d4325e08fe8d7198">getParent</a>(),exitbbs);</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <span class="keywordflow">while</span>(!exitbbs.empty())</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; {</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* eb = exitbbs.<a class="code" href="classSVF_1_1SVFBasicBlock.html#ad05f85ce931d4479f71d1947a25599dc">back</a>();</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; exitbbs.pop_back();</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfEntryInst = eb-&gt;<a class="code" href="classSVF_1_1SVFBasicBlock.html#a7bde256bc906af7f7204929019f4a33e">front</a>();</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <a class="code" href="classSVF_1_1CxtThreadStmt.html">CxtThreadStmt</a> newCts(cts.<a class="code" href="classSVF_1_1CxtThreadStmt.html#a3b8f641f2fb7ade7052cae1ee6463884">getTid</a>(),cts.<a class="code" href="classSVF_1_1CxtStmt.html#a3ce19b8f2de2e199ed4165dbe9d21f28">getContext</a>(),svfEntryInst);</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <a class="code" href="classSVF_1_1MHP.html#a6343dd11dd75d3730dc463321a11445e">addInterleavingThread</a>(newCts,cts);</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; }</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; }</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; }</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <a class="code" href="classSVF_1_1MHP.html#af4d6f0884ce18ea5caf0dfd9799d1aae">handleIntra</a>(cts);</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160;}</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160;</div><div class="line"><a name="l00292"></a><span class="lineno"><a class="line" href="classSVF_1_1MHP.html#af769afe6ba6baccda5a497df181c9fb0"> 292</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MHP.html#af769afe6ba6baccda5a497df181c9fb0">MHP::handleCall</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtThreadStmt.html">CxtThreadStmt</a>&amp; cts, <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> rootTid)</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160;{</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160;</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* call = cts.<a class="code" href="classSVF_1_1CxtStmt.html#a0b593c4ba425937212e2889e64ce4791">getStmt</a>();</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a>&amp; curCxt = cts.<a class="code" href="classSVF_1_1CxtStmt.html#a3ce19b8f2de2e199ed4165dbe9d21f28">getContext</a>();</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cbn = <a class="code" href="classSVF_1_1MHP.html#acd61be4be1b285fa333c5435912ece0e">getCBN</a>(call);</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#a1602d02773578bca73dcbd29b95c67d0">getThreadCallGraph</a>()-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#af8df9ca6d906453fa3f7168aa84fd087">hasCallGraphEdge</a>(cbn))</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; {</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <span class="keywordflow">for</span> (PTACallGraph::CallGraphEdgeSet::const_iterator cgIt = <a class="code" href="classSVF_1_1MHP.html#a4b73d112880ad940e078e801f8725799">tcg</a>-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#a4ed2fd37007de9c873d5e197a0b3bd4e">getCallEdgeBegin</a>(cbn),</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; ecgIt = <a class="code" href="classSVF_1_1MHP.html#a4b73d112880ad940e078e801f8725799">tcg</a>-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#a170a33ac22673dfd363c3e3b96987737">getCallEdgeEnd</a>(cbn); cgIt != ecgIt; ++cgIt)</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; {</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160;</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svfcallee = (*cgIt)-&gt;getDstNode()-&gt;getFunction();</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">isExtCall</a>(svfcallee))</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a> newCxt = curCxt;</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <a class="code" href="classSVF_1_1MHP.html#a68a2ad4480af7d40bd604d81afbc3d0b">pushCxt</a>(newCxt,call,svfcallee);</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfEntryInst = svfcallee-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#a793f485e92d12cf407f2ffa41861eb3d">getEntryBlock</a>()-&gt;<a class="code" href="classSVF_1_1SVFBasicBlock.html#a7bde256bc906af7f7204929019f4a33e">front</a>();</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <a class="code" href="classSVF_1_1CxtThreadStmt.html">CxtThreadStmt</a> newCts(cts.<a class="code" href="classSVF_1_1CxtThreadStmt.html#a3b8f641f2fb7ade7052cae1ee6463884">getTid</a>(),newCxt,svfEntryInst);</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <a class="code" href="classSVF_1_1MHP.html#a6343dd11dd75d3730dc463321a11445e">addInterleavingThread</a>(newCts,cts);</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; }</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; }</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160;}</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160;</div><div class="line"><a name="l00319"></a><span class="lineno"><a class="line" href="classSVF_1_1MHP.html#a76ac9d388529f090ab6dad5829dd0753"> 319</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MHP.html#a76ac9d388529f090ab6dad5829dd0753">MHP::handleRet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtThreadStmt.html">CxtThreadStmt</a>&amp; cts)</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="l00322"></a><span class="lineno"> 322</span>&#160; <a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a>* curFunNode = <a class="code" href="classSVF_1_1MHP.html#a4b73d112880ad940e078e801f8725799">tcg</a>-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">getCallGraphNode</a>(cts.<a class="code" href="classSVF_1_1CxtStmt.html#a0b593c4ba425937212e2889e64ce4791">getStmt</a>()-&gt;<a class="code" href="classSVF_1_1SVFInstruction.html#ae009f41cbf48d949d4325e08fe8d7198">getParent</a>()-&gt;<a class="code" href="classSVF_1_1SVFBasicBlock.html#af48d08d3adf7dd3ed69d97e4df360059">getParent</a>());</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1PTACallGraphNode.html#adf17f5699c9f40ffc8837e813e3af3ec">PTACallGraphNode::const_iterator</a> it = curFunNode-&gt;<a class="code" href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">getInEdges</a>().begin(), eit = curFunNode-&gt;<a class="code" href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">getInEdges</a>().end(); it!=eit; ++it)</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; {</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <a class="code" href="classSVF_1_1PTACallGraphEdge.html">PTACallGraphEdge</a>* edge = *it;</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;ThreadForkEdge&gt;(edge) || SVFUtil::isa&lt;ThreadJoinEdge&gt;(edge))</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <span class="keywordflow">for</span>(PTACallGraphEdge::CallInstSet::const_iterator cit = (edge)-&gt;directCallsBegin(),</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; ecit = (edge)-&gt;directCallsEnd(); cit!=ecit; ++cit)</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; {</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a> newCxt = cts.<a class="code" href="classSVF_1_1CxtStmt.html#a3ce19b8f2de2e199ed4165dbe9d21f28">getContext</a>();</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1MHP.html#a3dc4c80d60039ce5f73583ce32784d82">matchCxt</a>(newCxt,(*cit)-&gt;getCallSite(),curFunNode-&gt;<a class="code" href="classSVF_1_1PTACallGraphNode.html#a959445c97605953fbdebbbd999437a09">getFunction</a>()))</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; <span class="keyword">const</span> <a class="code" href="classSVF_1_1MHP.html#a8fecc443c4d92a36a9c50ec6a4f5dea8">InstVec</a>&amp; nextInsts = (*cit)-&gt;getCallSite()-&gt;getSuccInstructions();</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <span class="keywordflow">for</span>(InstVec::const_iterator nit = nextInsts.begin(), enit = nextInsts.end(); nit!=enit; ++nit)</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; {</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; <a class="code" href="classSVF_1_1CxtThreadStmt.html">CxtThreadStmt</a> newCts(cts.<a class="code" href="classSVF_1_1CxtThreadStmt.html#a3b8f641f2fb7ade7052cae1ee6463884">getTid</a>(),newCxt,*nit);</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; <a class="code" href="classSVF_1_1MHP.html#a6343dd11dd75d3730dc463321a11445e">addInterleavingThread</a>(newCts,cts);</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; }</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; }</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; }</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <span class="keywordflow">for</span>(PTACallGraphEdge::CallInstSet::const_iterator cit = (edge)-&gt;indirectCallsBegin(),</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; ecit = (edge)-&gt;indirectCallsEnd(); cit!=ecit; ++cit)</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; {</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a> newCxt = cts.<a class="code" href="classSVF_1_1CxtStmt.html#a3ce19b8f2de2e199ed4165dbe9d21f28">getContext</a>();</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1MHP.html#a3dc4c80d60039ce5f73583ce32784d82">matchCxt</a>(newCxt,(*cit)-&gt;getCallSite(),curFunNode-&gt;<a class="code" href="classSVF_1_1PTACallGraphNode.html#a959445c97605953fbdebbbd999437a09">getFunction</a>()))</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; {</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1MHP.html#a8fecc443c4d92a36a9c50ec6a4f5dea8">InstVec</a>&amp; nextInsts = (*cit)-&gt;getCallSite()-&gt;getSuccInstructions();</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; <span class="keywordflow">for</span>(InstVec::const_iterator nit = nextInsts.begin(), enit = nextInsts.end(); nit!=enit; ++nit)</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; {</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; <a class="code" href="classSVF_1_1CxtThreadStmt.html">CxtThreadStmt</a> newCts(cts.<a class="code" href="classSVF_1_1CxtThreadStmt.html#a3b8f641f2fb7ade7052cae1ee6463884">getTid</a>(),newCxt,*nit);</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <a class="code" href="classSVF_1_1MHP.html#a6343dd11dd75d3730dc463321a11445e">addInterleavingThread</a>(newCts,cts);</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; }</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; }</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; }</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; }</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160;}</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160;</div><div class="line"><a name="l00362"></a><span class="lineno"><a class="line" href="classSVF_1_1MHP.html#af4d6f0884ce18ea5caf0dfd9799d1aae"> 362</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MHP.html#af4d6f0884ce18ea5caf0dfd9799d1aae">MHP::handleIntra</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtThreadStmt.html">CxtThreadStmt</a>&amp; cts)</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160;{</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160;</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1MHP.html#a8fecc443c4d92a36a9c50ec6a4f5dea8">InstVec</a>&amp; nextInsts = cts.<a class="code" href="classSVF_1_1CxtStmt.html#a0b593c4ba425937212e2889e64ce4791">getStmt</a>()-&gt;<a class="code" href="classSVF_1_1SVFInstruction.html#a281d6b024afeeb96bac281eb23ce3f1f">getSuccInstructions</a>();</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; <span class="keywordflow">for</span>(InstVec::const_iterator nit = nextInsts.begin(), enit = nextInsts.end(); nit!=enit; ++nit)</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; {</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; <a class="code" href="classSVF_1_1CxtThreadStmt.html">CxtThreadStmt</a> newCts(cts.<a class="code" href="classSVF_1_1CxtThreadStmt.html#a3b8f641f2fb7ade7052cae1ee6463884">getTid</a>(),cts.<a class="code" href="classSVF_1_1CxtStmt.html#a3ce19b8f2de2e199ed4165dbe9d21f28">getContext</a>(),*nit);</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <a class="code" href="classSVF_1_1MHP.html#a6343dd11dd75d3730dc463321a11445e">addInterleavingThread</a>(newCts,cts);</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; }</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160;}</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160;</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160;</div><div class="line"><a name="l00377"></a><span class="lineno"><a class="line" href="classSVF_1_1MHP.html#ae9423c868ba4d26337428b96db9fc77b"> 377</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MHP.html#ae9423c868ba4d26337428b96db9fc77b">MHP::updateAncestorThreads</a>(<a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> curTid)</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160;{</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> tds = <a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#aeb7dff0c02a90cb338c8d054d2b78984">getAncestorThread</a>(curTid);</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>,<a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;##Ancestor thread of &quot;</span> &lt;&lt; curTid &lt;&lt; <span class="stringliteral">&quot; is : &quot;</span>);</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>,<a class="code" href="namespaceSVF_1_1SVFUtil.html#aeb570e9267fd7b189bd1bc877896d7ab">dumpSet</a>(tds));</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>,<a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; tds.<a class="code" href="classSVF_1_1SparseBitVector.html#a61bd86909a141f9de873d92c0f904832">set</a>(curTid);</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160;</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1SparseBitVector_1_1SparseBitVectorIterator.html">NodeBS::iterator</a> it = tds.<a class="code" href="classSVF_1_1SparseBitVector.html#abf76d8157c49ddba24bdc9dab3655772">begin</a>(), eit = tds.<a class="code" href="classSVF_1_1SparseBitVector.html#a1b5abe09fd0fcd337385653cb47343c1">end</a>(); it!=eit; ++it)</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; {</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtThread.html">CxtThread</a>&amp; ct = <a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#a7b4ad0b052e1f8b6869733eef15f4e4d">getTCTNode</a>(*it)-&gt;<a class="code" href="classSVF_1_1TCTNode.html#a21591b19f6a9267151c31178f9543ee6">getCxtThread</a>();</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* forkInst = ct.<a class="code" href="classSVF_1_1CxtThread.html#addee4e560a470eec9fbbf17efee906a9">getThread</a>())</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; {</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a> forkSiteCxt = <a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#ab4bc72ca330b315df06f2d4d2c1a7b4f">getCxtOfCxtThread</a>(ct);</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1MHP.html#a8fecc443c4d92a36a9c50ec6a4f5dea8">InstVec</a>&amp; nextInsts = forkInst-&gt;getSuccInstructions();</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <span class="keywordflow">for</span>(InstVec::const_iterator nit = nextInsts.begin(), enit = nextInsts.end(); nit!=enit; ++nit)</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; {</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <a class="code" href="classSVF_1_1CxtThreadStmt.html">CxtThreadStmt</a> cts(<a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#a516578af1f8666ff672e6611e61d7152">getParentThread</a>(*it),forkSiteCxt,*nit);</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <a class="code" href="classSVF_1_1MHP.html#a6343dd11dd75d3730dc463321a11445e">addInterleavingThread</a>(cts,curTid);</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; }</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; }</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; }</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160;}</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160;</div><div class="line"><a name="l00411"></a><span class="lineno"><a class="line" href="classSVF_1_1MHP.html#a23ab5a03b7c00ba0ebac65568a83a5cc"> 411</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MHP.html#a23ab5a03b7c00ba0ebac65568a83a5cc">MHP::updateSiblingThreads</a>(<a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> curTid)</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160;{</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> tds = <a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#aeb7dff0c02a90cb338c8d054d2b78984">getAncestorThread</a>(curTid);</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; tds.<a class="code" href="classSVF_1_1SparseBitVector.html#a61bd86909a141f9de873d92c0f904832">set</a>(curTid);</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1SparseBitVector_1_1SparseBitVectorIterator.html">NodeBS::iterator</a> cit = tds.<a class="code" href="classSVF_1_1SparseBitVector.html#abf76d8157c49ddba24bdc9dab3655772">begin</a>(), ecit = tds.<a class="code" href="classSVF_1_1SparseBitVector.html#a1b5abe09fd0fcd337385653cb47343c1">end</a>(); cit!=ecit; ++cit)</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; {</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> siblingTds = <a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#a60e63f6ddfe78c4cf4fd3a70875b727f">getSiblingThread</a>(*cit);</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1SparseBitVector_1_1SparseBitVectorIterator.html">NodeBS::iterator</a> it = siblingTds.<a class="code" href="classSVF_1_1SparseBitVector.html#abf76d8157c49ddba24bdc9dab3655772">begin</a>(), eit = siblingTds.<a class="code" href="classSVF_1_1SparseBitVector.html#a1b5abe09fd0fcd337385653cb47343c1">end</a>(); it!=eit; ++it)</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; {</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160;</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; <span class="keywordflow">if</span>((<a class="code" href="classSVF_1_1MHP.html#a6f07427b45991b2d8a3ff21582121d23">isHBPair</a>(*cit,*it) &amp;&amp; <a class="code" href="classSVF_1_1MHP.html#a0356a8ccc53999549fb369f67faad306">isRecurFullJoin</a>(*cit,curTid)) || <a class="code" href="classSVF_1_1MHP.html#a6f07427b45991b2d8a3ff21582121d23">isHBPair</a>(*it,*cit) )</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160;</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtThread.html">CxtThread</a>&amp; ct = <a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#a7b4ad0b052e1f8b6869733eef15f4e4d">getTCTNode</a>(*it)-&gt;<a class="code" href="classSVF_1_1TCTNode.html#a21591b19f6a9267151c31178f9543ee6">getCxtThread</a>();</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* routine = <a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#ae25bbfc9c8616186f03c1555d5009ce3">getStartRoutineOfCxtThread</a>(ct);</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* stmt = routine-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#a793f485e92d12cf407f2ffa41861eb3d">getEntryBlock</a>()-&gt;<a class="code" href="classSVF_1_1SVFBasicBlock.html#a7bde256bc906af7f7204929019f4a33e">front</a>();</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; <a class="code" href="classSVF_1_1CxtThreadStmt.html">CxtThreadStmt</a> cts(*it,ct.<a class="code" href="classSVF_1_1CxtThread.html#a93d75593046e26eafcf1af3a596bba4a">getContext</a>(),stmt);</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; <a class="code" href="classSVF_1_1MHP.html#a6343dd11dd75d3730dc463321a11445e">addInterleavingThread</a>(cts,curTid);</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; }</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160;</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>,<a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;##Sibling thread of &quot;</span> &lt;&lt; curTid &lt;&lt; <span class="stringliteral">&quot; is : &quot;</span>);</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>,<a class="code" href="namespaceSVF_1_1SVFUtil.html#aeb570e9267fd7b189bd1bc877896d7ab">dumpSet</a>(siblingTds));</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>,<a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; }</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160;}</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160;</div><div class="line"><a name="l00440"></a><span class="lineno"><a class="line" href="classSVF_1_1MHP.html#a0356a8ccc53999549fb369f67faad306"> 440</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MHP.html#a0356a8ccc53999549fb369f67faad306">MHP::isRecurFullJoin</a>(<a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> parentTid, <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> curTid)</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160;{</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; <span class="keywordflow">if</span>(parentTid==curTid)</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160;</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1TCTNode.html">TCTNode</a>* curNode = <a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#a7b4ad0b052e1f8b6869733eef15f4e4d">getTCTNode</a>(curTid);</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; <a class="code" href="classSVF_1_1FIFOWorkList.html">FIFOWorkList&lt;const TCTNode*&gt;</a> worklist;</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#a0df409a67428e528321869d201f2a474">push</a>(curNode);</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</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="l00449"></a><span class="lineno"> 449</span>&#160; {</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1TCTNode.html">TCTNode</a>* node = worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#a8fa72918fce7e9c0b2dc34b683a797c6">pop</a>();</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; <span class="keywordflow">for</span>(TCT::ThreadCreateEdgeSet::const_iterator it = node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">getInEdges</a>().begin(), eit = node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">getInEdges</a>().end(); it!=eit; ++it)</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; {</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> srcID = (*it)-&gt;getSrcID();</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1MHP.html#a98857a1837cef5519c938d07bb771a60">fja</a>-&gt;<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ab55532eefbcef639ced957ad82fbd340">isFullJoin</a>(srcID,node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>()))</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; {</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; <span class="keywordflow">if</span>(srcID == parentTid)</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#a0df409a67428e528321869d201f2a474">push</a>((*it)-&gt;getSrcNode());</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; }</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; {</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; }</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; }</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; }</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160;}</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160;</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160;</div><div class="line"><a name="l00476"></a><span class="lineno"><a class="line" href="classSVF_1_1MHP.html#a1c43a0f078f82a3c741de1c4dc2490c0"> 476</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MHP.html#a1c43a0f078f82a3c741de1c4dc2490c0">MHP::isMustJoin</a>(<a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> curTid, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* joinsite)</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160;{</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; assert(<a class="code" href="classSVF_1_1MHP.html#a3352c8718f909c9fbed4ef7f5cf050a2">isTDJoin</a>(joinsite) &amp;&amp; <span class="stringliteral">&quot;not a join site!&quot;</span>);</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; <span class="keywordflow">return</span> !<a class="code" href="classSVF_1_1MHP.html#a041392f704690e89d8acf5ec68d8682c">isMultiForkedThread</a>(curTid) &amp;&amp; !<a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#a78d2419493546ee2f91a6aeb2e778709">isJoinSiteInRecursion</a>(joinsite);</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160;}</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160;</div><div class="line"><a name="l00485"></a><span class="lineno"><a class="line" href="classSVF_1_1MHP.html#aed0633101a35b43a1769261db14fb1a1"> 485</a></span>&#160;<a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> <a class="code" href="classSVF_1_1MHP.html#aed0633101a35b43a1769261db14fb1a1">MHP::getDirAndIndJoinedTid</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a>&amp; cxt, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* call)</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160;{</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a> cs(cxt,call);</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MHP.html#a98857a1837cef5519c938d07bb771a60">fja</a>-&gt;<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a34ec31a6859cd94b525bfa26e549d8c1">getDirAndIndJoinedTid</a>(cs);</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160;}</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160;</div><div class="line"><a name="l00494"></a><span class="lineno"><a class="line" href="classSVF_1_1MHP.html#a7585f40b80c5488828576eb2f035ac61"> 494</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MHP.html#a7585f40b80c5488828576eb2f035ac61">MHP::hasJoinInSymmetricLoop</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a>&amp; cxt, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* call)<span class="keyword"> const</span></div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a> cs(cxt,call);</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MHP.html#a98857a1837cef5519c938d07bb771a60">fja</a>-&gt;<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ab69d11caf499612d108155e13adb300f">hasJoinInSymmetricLoop</a>(cs);</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160;}</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160;</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160;</div><div class="line"><a name="l00502"></a><span class="lineno"><a class="line" href="classSVF_1_1MHP.html#a8b80036bab834fa104f64bd3ed3ac667"> 502</a></span>&#160;<span class="keyword">const</span> <a class="code" href="classSVF_1_1MHP.html#a2c3dcb480ef332bd4aff991df39f3e34">MHP::LoopBBs</a>&amp; <a class="code" href="classSVF_1_1MHP.html#a8b80036bab834fa104f64bd3ed3ac667">MHP::getJoinInSymmetricLoop</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a>&amp; cxt, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* call)<span class="keyword"> const</span></div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a> cs(cxt,call);</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MHP.html#a98857a1837cef5519c938d07bb771a60">fja</a>-&gt;<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8b45294eef96f04370da341110599f4d">getJoinInSymmetricLoop</a>(cs);</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160;}</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160;</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160;</div><div class="line"><a name="l00512"></a><span class="lineno"><a class="line" href="classSVF_1_1MHP.html#a6f07427b45991b2d8a3ff21582121d23"> 512</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MHP.html#a6f07427b45991b2d8a3ff21582121d23">MHP::isHBPair</a>(<a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> tid1, <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> tid2)</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160;{</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MHP.html#a98857a1837cef5519c938d07bb771a60">fja</a>-&gt;<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a86c68ce5fd8825b1593d92a5a5bad389">isHBPair</a>(tid1,tid2);</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160;}</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160;</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160;</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160;</div><div class="line"><a name="l00519"></a><span class="lineno"><a class="line" href="classSVF_1_1MHP.html#a90c228214643bb6d37bacffc35b99a3e"> 519</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MHP.html#a90c228214643bb6d37bacffc35b99a3e">MHP::isConnectedfromMain</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun)</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160;{</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; <a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a>* cgnode = <a class="code" href="classSVF_1_1MHP.html#a4b73d112880ad940e078e801f8725799">tcg</a>-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">getCallGraphNode</a>(fun);</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; <a class="code" href="classSVF_1_1FIFOWorkList.html">FIFOWorkList&lt;const PTACallGraphNode*&gt;</a> worklist;</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; <a class="code" href="classSVF_1_1TCT.html#afb579a5bdcc0a1c6b075bb9aae36c237">TCT::PTACGNodeSet</a> visited;</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#a0df409a67428e528321869d201f2a474">push</a>(cgnode);</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; visited.insert(cgnode);</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</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="l00527"></a><span class="lineno"> 527</span>&#160; {</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a>* node = worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#a8fa72918fce7e9c0b2dc34b683a797c6">pop</a>();</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; <span class="keywordflow">if</span>(<span class="stringliteral">&quot;main&quot;</span> == node-&gt;<a class="code" href="classSVF_1_1PTACallGraphNode.html#a959445c97605953fbdebbbd999437a09">getFunction</a>()-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a68b40576b24c4cb81cc3ba75550f4654">getName</a>())</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1PTACallGraphNode.html#adf17f5699c9f40ffc8837e813e3af3ec">PTACallGraphNode::const_iterator</a> nit = node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ae5b113921530eee6afe58a65d8e5b3a7">InEdgeBegin</a>(), neit = node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#afe6a7b286d9af4992f41b59612fd2900">InEdgeEnd</a>(); nit != neit; nit++)</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; {</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a>* srcNode = (*nit)-&gt;getSrcNode();</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; <span class="keywordflow">if</span> (visited.find(srcNode) == visited.end())</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; {</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; visited.insert(srcNode);</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#a0df409a67428e528321869d201f2a474">push</a>(srcNode);</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; }</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; }</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; }</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160;}</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160;</div><div class="line"><a name="l00554"></a><span class="lineno"><a class="line" href="classSVF_1_1MHP.html#a0cb1db9943ddc0928afa8e370cbf60c6"> 554</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MHP.html#a0cb1db9943ddc0928afa8e370cbf60c6">MHP::mayHappenInParallelInst</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* i1, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* i2)</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160;{</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160;</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; <span class="keywordflow">if</span>(!<a class="code" href="classSVF_1_1MHP.html#a27d031e9c7c4706d7ee1750668e83b99">hasThreadStmtSet</a>(i1) || !<a class="code" href="classSVF_1_1MHP.html#a27d031e9c7c4706d7ee1750668e83b99">hasThreadStmtSet</a>(i2))</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160;</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1MHP.html#a28031502c4f8f0d4012c0827c57efb32">CxtThreadStmtSet</a>&amp; tsSet1 = <a class="code" href="classSVF_1_1MHP.html#a4ce3b9ad740aa7b74a1ae2192aeeb9d8">getThreadStmtSet</a>(i1);</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1MHP.html#a28031502c4f8f0d4012c0827c57efb32">CxtThreadStmtSet</a>&amp; tsSet2 = <a class="code" href="classSVF_1_1MHP.html#a4ce3b9ad740aa7b74a1ae2192aeeb9d8">getThreadStmtSet</a>(i2);</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; <span class="keywordflow">for</span>(CxtThreadStmtSet::const_iterator it1 = tsSet1.begin(), eit1 = tsSet1.end(); it1!=eit1; ++it1)</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; {</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtThreadStmt.html">CxtThreadStmt</a>&amp; ts1 = *it1;</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> l1 = <a class="code" href="classSVF_1_1MHP.html#a653460ed316804bea377eecdde412d36">getInterleavingThreads</a>(ts1);</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; <span class="keywordflow">for</span>(CxtThreadStmtSet::const_iterator it2 = tsSet2.begin(), eit2 = tsSet2.end(); it2!=eit2; ++it2)</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; {</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtThreadStmt.html">CxtThreadStmt</a>&amp; ts2 = *it2;</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> l2 = <a class="code" href="classSVF_1_1MHP.html#a653460ed316804bea377eecdde412d36">getInterleavingThreads</a>(ts2);</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; <span class="keywordflow">if</span>(ts1.<a class="code" href="classSVF_1_1CxtThreadStmt.html#a3b8f641f2fb7ade7052cae1ee6463884">getTid</a>()!=ts2.<a class="code" href="classSVF_1_1CxtThreadStmt.html#a3b8f641f2fb7ade7052cae1ee6463884">getTid</a>())</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; {</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; <span class="keywordflow">if</span>(l1.<a class="code" href="classSVF_1_1SparseBitVector.html#a112f2ede1240c95f9fe810f2882fab80">test</a>(ts2.<a class="code" href="classSVF_1_1CxtThreadStmt.html#a3b8f641f2fb7ade7052cae1ee6463884">getTid</a>()) &amp;&amp; l2.<a class="code" href="classSVF_1_1SparseBitVector.html#a112f2ede1240c95f9fe810f2882fab80">test</a>(ts1.<a class="code" href="classSVF_1_1CxtThreadStmt.html#a3b8f641f2fb7ade7052cae1ee6463884">getTid</a>()))</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; {</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; <a class="code" href="classSVF_1_1MHP.html#ab8bd382e0c70b0feb2a291ecc4043106">numOfMHPQueries</a>++;</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; }</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; }</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; {</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1MHP.html#a041392f704690e89d8acf5ec68d8682c">isMultiForkedThread</a>(ts1.<a class="code" href="classSVF_1_1CxtThreadStmt.html#a3b8f641f2fb7ade7052cae1ee6463884">getTid</a>()))</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; {</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; <a class="code" href="classSVF_1_1MHP.html#ab8bd382e0c70b0feb2a291ecc4043106">numOfMHPQueries</a>++;</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; }</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; }</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; }</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; }</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160;}</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160;</div><div class="line"><a name="l00592"></a><span class="lineno"><a class="line" href="classSVF_1_1MHP.html#a843f1fa52625ec9e844307ba51fec202"> 592</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MHP.html#a843f1fa52625ec9e844307ba51fec202">MHP::mayHappenInParallelCache</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* i1, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* i2)</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160;{</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; <span class="keywordflow">if</span>(!<a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#aa69b82c888c8193e97f9e95c62ac99d4">isCandidateFun</a>(i1-&gt;<a class="code" href="classSVF_1_1SVFInstruction.html#ae009f41cbf48d949d4325e08fe8d7198">getParent</a>()-&gt;<a class="code" href="classSVF_1_1SVFBasicBlock.html#af48d08d3adf7dd3ed69d97e4df360059">getParent</a>()) &amp;&amp;!<a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#aa69b82c888c8193e97f9e95c62ac99d4">isCandidateFun</a>(i2-&gt;<a class="code" href="classSVF_1_1SVFInstruction.html#ae009f41cbf48d949d4325e08fe8d7198">getParent</a>()-&gt;<a class="code" href="classSVF_1_1SVFBasicBlock.html#af48d08d3adf7dd3ed69d97e4df360059">getParent</a>()))</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; {</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; <a class="code" href="classSVF_1_1MHP.html#ad8930750fd4316003686b215ace46525">FuncPair</a> funpair = std::make_pair(i1-&gt;<a class="code" href="classSVF_1_1SVFInstruction.html#aef7ad257ea809101df33779463907f3e">getFunction</a>(), i2-&gt;<a class="code" href="classSVF_1_1SVFInstruction.html#aef7ad257ea809101df33779463907f3e">getFunction</a>());</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; FuncPairToBool::const_iterator it = <a class="code" href="classSVF_1_1MHP.html#a1f057ef082484a1997cb02287e063f00">nonCandidateFuncMHPRelMap</a>.find(funpair);</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; <span class="keywordflow">if</span> (it==<a class="code" href="classSVF_1_1MHP.html#a1f057ef082484a1997cb02287e063f00">nonCandidateFuncMHPRelMap</a>.end())</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; {</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; <span class="keywordtype">bool</span> mhp = <a class="code" href="classSVF_1_1MHP.html#a0cb1db9943ddc0928afa8e370cbf60c6">mayHappenInParallelInst</a>(i1, i2);</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; <a class="code" href="classSVF_1_1MHP.html#a1f057ef082484a1997cb02287e063f00">nonCandidateFuncMHPRelMap</a>[funpair] = mhp;</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; <span class="keywordflow">return</span> mhp;</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; }</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; {</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; <span class="keywordflow">if</span>(it-&gt;second)</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; <a class="code" href="classSVF_1_1MHP.html#ab8bd382e0c70b0feb2a291ecc4043106">numOfMHPQueries</a>++;</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; }</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; }</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MHP.html#a0cb1db9943ddc0928afa8e370cbf60c6">mayHappenInParallelInst</a>(i1,i2);</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160;}</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160;</div><div class="line"><a name="l00614"></a><span class="lineno"><a class="line" href="classSVF_1_1MHP.html#a15b624924254f5362a3d02fa539a24fb"> 614</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MHP.html#a15b624924254f5362a3d02fa539a24fb">MHP::mayHappenInParallel</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* i1, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* i2)</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160;{</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; <a class="code" href="classSVF_1_1MHP.html#a26ae18993915d76b704232cded9811c2">numOfTotalQueries</a>++;</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160;</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; <a class="code" href="SVFType_8h.html#ab6f41e9db3675dc689c5492418885041">DOTIMESTAT</a>(<span class="keywordtype">double</span> queryStart = <a class="code" href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">PTAStat::getClk</a>(<span class="keyword">true</span>));</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; <span class="keywordtype">bool</span> mhp=<a class="code" href="classSVF_1_1MHP.html#a843f1fa52625ec9e844307ba51fec202">mayHappenInParallelCache</a>(i1,i2);</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; <a class="code" href="SVFType_8h.html#ab6f41e9db3675dc689c5492418885041">DOTIMESTAT</a>(<span class="keywordtype">double</span> queryEnd = <a class="code" href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">PTAStat::getClk</a>(<span class="keyword">true</span>));</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; <a class="code" href="SVFType_8h.html#ab6f41e9db3675dc689c5492418885041">DOTIMESTAT</a>(<a class="code" href="classSVF_1_1MHP.html#ab7d9fe837844197b7acdc0493a50aaa5">interleavingQueriesTime</a> += (queryEnd - queryStart) / <a class="code" href="SVFType_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a>);</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160;</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; <span class="keywordflow">return</span> mhp;</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160;}</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160;</div><div class="line"><a name="l00626"></a><span class="lineno"><a class="line" href="classSVF_1_1MHP.html#ac10a8f3a4b09dc257be9edabccea3fbb"> 626</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MHP.html#ac10a8f3a4b09dc257be9edabccea3fbb">MHP::executedByTheSameThread</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* i1, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* i2)</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160;{</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; <span class="keywordflow">if</span>(!<a class="code" href="classSVF_1_1MHP.html#a27d031e9c7c4706d7ee1750668e83b99">hasThreadStmtSet</a>(i1) || !<a class="code" href="classSVF_1_1MHP.html#a27d031e9c7c4706d7ee1750668e83b99">hasThreadStmtSet</a>(i2))</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160;</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1MHP.html#a28031502c4f8f0d4012c0827c57efb32">CxtThreadStmtSet</a>&amp; tsSet1 = <a class="code" href="classSVF_1_1MHP.html#a4ce3b9ad740aa7b74a1ae2192aeeb9d8">getThreadStmtSet</a>(i1);</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1MHP.html#a28031502c4f8f0d4012c0827c57efb32">CxtThreadStmtSet</a>&amp; tsSet2 = <a class="code" href="classSVF_1_1MHP.html#a4ce3b9ad740aa7b74a1ae2192aeeb9d8">getThreadStmtSet</a>(i2);</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; <span class="keywordflow">for</span>(CxtThreadStmtSet::const_iterator it1 = tsSet1.begin(), eit1 = tsSet1.end(); it1!=eit1; ++it1)</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; {</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtThreadStmt.html">CxtThreadStmt</a>&amp; ts1 = *it1;</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; <span class="keywordflow">for</span>(CxtThreadStmtSet::const_iterator it2 = tsSet2.begin(), eit2 = tsSet2.end(); it2!=eit2; ++it2)</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; {</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtThreadStmt.html">CxtThreadStmt</a>&amp; ts2 = *it2;</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; <span class="keywordflow">if</span>(ts1.<a class="code" href="classSVF_1_1CxtThreadStmt.html#a3b8f641f2fb7ade7052cae1ee6463884">getTid</a>()!=ts2.<a class="code" href="classSVF_1_1CxtThreadStmt.html#a3b8f641f2fb7ade7052cae1ee6463884">getTid</a>())</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1MHP.html#a041392f704690e89d8acf5ec68d8682c">isMultiForkedThread</a>(ts1.<a class="code" href="classSVF_1_1CxtThreadStmt.html#a3b8f641f2fb7ade7052cae1ee6463884">getTid</a>()))</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; }</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; }</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160;}</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160;</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160;</div><div class="line"><a name="l00652"></a><span class="lineno"><a class="line" href="classSVF_1_1MHP.html#a22f7dc5043fed97f1b4b273b8b710415"> 652</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MHP.html#a22f7dc5043fed97f1b4b273b8b710415">MHP::printInterleaving</a>()</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160;{</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; <span class="keywordflow">for</span>(ThreadStmtToThreadInterleav::const_iterator it = <a class="code" href="classSVF_1_1MHP.html#afcfc409e625b74cbefd240170627c541">threadStmtToTheadInterLeav</a>.begin(), eit = <a class="code" href="classSVF_1_1MHP.html#afcfc409e625b74cbefd240170627c541">threadStmtToTheadInterLeav</a>.end(); it!=eit; ++it)</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; {</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;( t&quot;</span> &lt;&lt; it-&gt;first.getTid() &lt;&lt; <span class="stringliteral">&quot; , $&quot;</span> &lt;&lt; it-&gt;first.getStmt()-&gt;getSourceLoc() &lt;&lt; <span class="stringliteral">&quot;$&quot;</span> &lt;&lt; it-&gt;first.getStmt()-&gt;toString() &lt;&lt; <span class="stringliteral">&quot; ) ==&gt; [&quot;</span>;</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1SparseBitVector_1_1SparseBitVectorIterator.html">NodeBS::iterator</a> ii = it-&gt;second.begin(), ie = it-&gt;second.end();</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; ii != ie; ii++)</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; {</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot; &quot;</span> &lt;&lt; *ii &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; }</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;]\n&quot;</span>;</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; }</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160;}</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160;</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160;</div><div class="line"><a name="l00673"></a><span class="lineno"><a class="line" href="classSVF_1_1ForkJoinAnalysis.html#a731ece7e21bfa2b08ae16780b55f9f5f"> 673</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a731ece7e21bfa2b08ae16780b55f9f5f">ForkJoinAnalysis::collectSCEVInfo</a>()</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160;{</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const SVFInstruction*&gt;</a> CallInstSet;</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const SVFFunction*, CallInstSet &gt;</a> FunToFJSites;</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; FunToFJSites funToFJSites;</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160;</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160; <span class="keywordflow">for</span>(ThreadCallGraph::CallSiteSet::const_iterator it = <a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#a1602d02773578bca73dcbd29b95c67d0">getThreadCallGraph</a>()-&gt;<a class="code" href="classSVF_1_1ThreadCallGraph.html#a37f2e076713a9aeb0e4313fb05dfb92e">forksitesBegin</a>(),</div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; eit = <a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#a1602d02773578bca73dcbd29b95c67d0">getThreadCallGraph</a>()-&gt;<a class="code" href="classSVF_1_1ThreadCallGraph.html#a1ebbd26c17cff1c1a1bee9caa9a8f825">forksitesEnd</a>(); it!=eit; ++it)</div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; {</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* fork = (*it)-&gt;getCallSite();</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; funToFJSites[fork-&gt;<a class="code" href="classSVF_1_1SVFInstruction.html#aef7ad257ea809101df33779463907f3e">getFunction</a>()].insert(fork);</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; }</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160;</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; <span class="keywordflow">for</span>(ThreadCallGraph::CallSiteSet::const_iterator it = <a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#a1602d02773578bca73dcbd29b95c67d0">getThreadCallGraph</a>()-&gt;<a class="code" href="classSVF_1_1ThreadCallGraph.html#a98ecfe14be2d38d292b5919716cdd29d">joinsitesBegin</a>(),</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; eit = <a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#a1602d02773578bca73dcbd29b95c67d0">getThreadCallGraph</a>()-&gt;<a class="code" href="classSVF_1_1ThreadCallGraph.html#a50502f398e5eac9c6da3e26ea6052057">joinsitesEnd</a>(); it!=eit; ++it)</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; {</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* join = (*it)-&gt;getCallSite();</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; funToFJSites[join-&gt;<a class="code" href="classSVF_1_1SVFInstruction.html#aef7ad257ea809101df33779463907f3e">getFunction</a>()].insert(join);</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; }</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160;</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; <span class="comment">// for(FunToFJSites::const_iterator it = funToFJSites.begin(), eit = funToFJSites.end(); it!=eit; ++it)</span></div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; <span class="comment">// {</span></div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; <span class="comment">// // ScalarEvolution* SE = MTA::getSE(it-&gt;first);</span></div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; <span class="comment">// for(CallInstSet::const_iterator sit = it-&gt;second.begin(), esit = it-&gt;second.end(); sit!=esit; ++sit)</span></div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; <span class="comment">// {</span></div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; <span class="comment">// const SVFInstruction* callInst = *sit;</span></div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; <span class="comment">// if(tct-&gt;getThreadCallGraph()-&gt;isForksite(getCBN(callInst)))</span></div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; <span class="comment">// {</span></div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; <span class="comment">// // const SVFValue* forkSiteTidPtr = getForkedThread(callInst);</span></div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; <span class="comment">// // const SCEV *forkSiteTidPtrSCEV = SE-&gt;getSCEV(const_cast&lt;Value*&gt;(forkSiteTidPtr));</span></div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; <span class="comment">// // const SCEV *baseForkTidPtrSCEV = SE-&gt;getSCEV(const_cast&lt;Value*&gt;(getBasePtr(forkSiteTidPtr)));</span></div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; <span class="comment">// // forkSiteTidPtrSCEV = getSCEVMinusExpr(forkSiteTidPtrSCEV, baseForkTidPtrSCEV, SE);</span></div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; <span class="comment">// // PTASCEV scev(forkSiteTidPtr,nullptr,nullptr);</span></div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; <span class="comment">// // fkjnToPTASCEVMap.insert(std::make_pair(callInst,scev));</span></div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; <span class="comment">// }</span></div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; <span class="comment">// else</span></div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; <span class="comment">// {</span></div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; <span class="comment">// // const SVFValue* joinSiteTidPtr = getJoinedThread(callInst);</span></div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; <span class="comment">// //const SCEV *joinSiteTidPtrSCEV = SE-&gt;getSCEV(const_cast&lt;Value*&gt;(joinSiteTidPtr));</span></div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; <span class="comment">// //const SCEV *baseJoinTidPtrSCEV = SE-&gt;getSCEV(const_cast&lt;Value*&gt;(getBasePtr(joinSiteTidPtr)));</span></div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; <span class="comment">// //joinSiteTidPtrSCEV = getSCEVMinusExpr(joinSiteTidPtrSCEV, baseJoinTidPtrSCEV, SE);</span></div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160;</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; <span class="comment">// // PTASCEV scev(joinSiteTidPtr,nullptr,nullptr);</span></div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; <span class="comment">// // fkjnToPTASCEVMap.insert(std::make_pair(callInst,scev));</span></div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; <span class="comment">// }</span></div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; <span class="comment">// }</span></div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; <span class="comment">// }</span></div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160;}</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160;</div><div class="line"><a name="l00725"></a><span class="lineno"><a class="line" href="classSVF_1_1ForkJoinAnalysis.html#a16061e7c28e7a9177d9ab798c102b815"> 725</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a16061e7c28e7a9177d9ab798c102b815">ForkJoinAnalysis::analyzeForkJoinPair</a>()</div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160;{</div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1GenericGraph.html#a5dfa3f178d4abf37177d0d74ff4c6a97">TCT::const_iterator</a> it = <a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(), eit = <a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); it!=eit; ++it)</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; {</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtThread.html">CxtThread</a>&amp; ct = it-&gt;second-&gt;getCxtThread();</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> rootTid = it-&gt;first;</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; clearFlagMap();</div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* forkInst = ct.<a class="code" href="classSVF_1_1CxtThread.html#addee4e560a470eec9fbbf17efee906a9">getThread</a>())</div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; {</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a> forkSiteCxt = <a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#ab4bc72ca330b315df06f2d4d2c1a7b4f">getCxtOfCxtThread</a>(ct);</div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* exitInst = getExitInstOfParentRoutineFun(rootTid);</div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160;</div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a613d763731058899e6819acdb2d7315f">InstVec</a>&amp; nextInsts = forkInst-&gt;getSuccInstructions();</div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; <span class="keywordflow">for</span>(InstVec::const_iterator nit = nextInsts.begin(), enit = nextInsts.end(); nit!=enit; ++nit)</div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; {</div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160; <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a> cs(forkSiteCxt,*nit);</div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; markCxtStmtFlag(cs,TDAlive);</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; }</div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160;</div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; <span class="keywordflow">while</span>(!<a class="code" href="classSVF_1_1MHP.html#a0300d46dd22ee7cc8c62fada694d3acb">cxtStmtList</a>.<a class="code" href="classSVF_1_1FIFOWorkList.html#a7056704c224dfb4b57287fe90c004aa8">empty</a>())</div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160; {</div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160; <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a> cts = <a class="code" href="classSVF_1_1MHP.html#ad8d3aa1a12fb1e8668eb4138fbe23b7d">popFromCTSWorkList</a>();</div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* curInst = cts.<a class="code" href="classSVF_1_1CxtStmt.html#a0b593c4ba425937212e2889e64ce4791">getStmt</a>();</div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>,<a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;-----\nForkJoinAnalysis root thread: &quot;</span> &lt;&lt; it-&gt;first &lt;&lt; <span class="stringliteral">&quot; &quot;</span>);</div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>,cts.<a class="code" href="classSVF_1_1CxtStmt.html#a56e2767c327a383db09dca96edb19614">dump</a>());</div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>,<a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;-----\n&quot;</span>);</div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160; <a class="code" href="classSVF_1_1PTACallGraph.html#a5f5a5ec7e707a21994d301cc07d32a5a">PTACallGraph::FunctionSet</a> callees;</div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1MHP.html#a7af8320c524acaf3cf004ff37f9b4e42">isTDFork</a>(curInst))</div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160; {</div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160; <a class="code" href="classSVF_1_1MHP.html#a8a95f8ae419b66310ce6f572caea2ca5">handleFork</a>(cts,rootTid);</div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160; }</div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1MHP.html#a3352c8718f909c9fbed4ef7f5cf050a2">isTDJoin</a>(curInst))</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160; {</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160; <a class="code" href="classSVF_1_1MHP.html#a3a535274cd3349a05eeccf3c9231396a">handleJoin</a>(cts,rootTid);</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; }</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#afdc3358522417de9a0d3a181a329f722">SVFUtil::isCallSite</a>(curInst) &amp;&amp; <a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#aa69b82c888c8193e97f9e95c62ac99d4">isCandidateFun</a>(<a class="code" href="classSVF_1_1MHP.html#a5a537e2f89e8cfe10a2d16ae1654be6e">getCallee</a>(curInst, callees)))</div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160; {</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160;</div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160; <a class="code" href="classSVF_1_1MHP.html#af769afe6ba6baccda5a497df181c9fb0">handleCall</a>(cts,rootTid);</div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160; }</div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(curInst-&gt;<a class="code" href="classSVF_1_1SVFInstruction.html#a454f676881eecf4b7399649a81180b5d">isRetInst</a>())</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; {</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; <a class="code" href="classSVF_1_1MHP.html#a76ac9d388529f090ab6dad5829dd0753">handleRet</a>(cts);</div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; }</div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160; {</div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160; <a class="code" href="classSVF_1_1MHP.html#af4d6f0884ce18ea5caf0dfd9799d1aae">handleIntra</a>(cts);</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160; }</div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160;</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; <span class="keywordflow">if</span>(curInst==exitInst)</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160; {</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160; <span class="keywordflow">if</span>(getMarkedFlag(cts)!=TDAlive)</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; addToFullJoin(<a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#a516578af1f8666ff672e6611e61d7152">getParentThread</a>(rootTid),rootTid);</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; addToPartial(<a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#a516578af1f8666ff672e6611e61d7152">getParentThread</a>(rootTid),rootTid);</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; }</div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; }</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160;</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; }</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160; }</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160;}</div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160;</div><div class="line"><a name="l00788"></a><span class="lineno"><a class="line" href="classSVF_1_1ForkJoinAnalysis.html#adddbc09b7b99170cd0941f22ccc7e561"> 788</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#adddbc09b7b99170cd0941f22ccc7e561">ForkJoinAnalysis::handleFork</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a>&amp; cts, <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> rootTid)</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160;{</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* call = cts.<a class="code" href="classSVF_1_1CxtStmt.html#a0b593c4ba425937212e2889e64ce4791">getStmt</a>();</div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a>&amp; curCxt = cts.<a class="code" href="classSVF_1_1CxtStmt.html#a3ce19b8f2de2e199ed4165dbe9d21f28">getContext</a>();</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160;</div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160; assert(<a class="code" href="classSVF_1_1MHP.html#a7af8320c524acaf3cf004ff37f9b4e42">isTDFork</a>(call));</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160; <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cbn = <a class="code" href="classSVF_1_1MHP.html#acd61be4be1b285fa333c5435912ece0e">getCBN</a>(call);</div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160; <span class="keywordflow">if</span>(getTCG()-&gt;hasThreadForkEdge(cbn))</div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160; {</div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160; <span class="keywordflow">for</span> (ThreadCallGraph::ForkEdgeSet::const_iterator cgIt = getTCG()-&gt;getForkEdgeBegin(cbn),</div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160; ecgIt = getTCG()-&gt;getForkEdgeEnd(cbn); cgIt != ecgIt; ++cgIt)</div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160; {</div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* callee = (*cgIt)-&gt;getDstNode()-&gt;getFunction();</div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160; <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a> newCxt = curCxt;</div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160; <a class="code" href="classSVF_1_1MHP.html#a68a2ad4480af7d40bd604d81afbc3d0b">pushCxt</a>(newCxt,call,callee);</div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160; <a class="code" href="classSVF_1_1CxtThread.html">CxtThread</a> ct(newCxt,call);</div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160; <span class="keywordflow">if</span>(getMarkedFlag(cts)!=TDAlive)</div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160; addToHBPair(rootTid,<a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#a7b4ad0b052e1f8b6869733eef15f4e4d">getTCTNode</a>(ct)-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>());</div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160; addToHPPair(rootTid,<a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#a7b4ad0b052e1f8b6869733eef15f4e4d">getTCTNode</a>(ct)-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>());</div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160; }</div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160; }</div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160; <a class="code" href="classSVF_1_1MHP.html#af4d6f0884ce18ea5caf0dfd9799d1aae">handleIntra</a>(cts);</div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160;}</div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160;</div><div class="line"><a name="l00814"></a><span class="lineno"><a class="line" href="classSVF_1_1ForkJoinAnalysis.html#ae4d0ee03b30220793d24f814e75a440e"> 814</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ae4d0ee03b30220793d24f814e75a440e">ForkJoinAnalysis::handleJoin</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a>&amp; cts, <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> rootTid)</div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160;{</div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* call = cts.<a class="code" href="classSVF_1_1CxtStmt.html#a0b593c4ba425937212e2889e64ce4791">getStmt</a>();</div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a>&amp; curCxt = cts.<a class="code" href="classSVF_1_1CxtStmt.html#a3ce19b8f2de2e199ed4165dbe9d21f28">getContext</a>();</div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160;</div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; assert(<a class="code" href="classSVF_1_1MHP.html#a3352c8718f909c9fbed4ef7f5cf050a2">isTDJoin</a>(call));</div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cbn = <a class="code" href="classSVF_1_1MHP.html#acd61be4be1b285fa333c5435912ece0e">getCBN</a>(call);</div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160; <span class="keywordflow">if</span>(getTCG()-&gt;hasCallGraphEdge(cbn))</div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160; {</div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* forkSite = <a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#a7b4ad0b052e1f8b6869733eef15f4e4d">getTCTNode</a>(rootTid)-&gt;<a class="code" href="classSVF_1_1TCTNode.html#a21591b19f6a9267151c31178f9543ee6">getCxtThread</a>().<a class="code" href="classSVF_1_1CxtThread.html#addee4e560a470eec9fbbf17efee906a9">getThread</a>();</div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* joinSite = cts.<a class="code" href="classSVF_1_1CxtStmt.html#a0b593c4ba425937212e2889e64ce4791">getStmt</a>();</div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160;</div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160; <span class="keywordflow">if</span>(isAliasedForkJoin(forkSite, joinSite))</div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160; {</div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160; <span class="keywordflow">if</span>(hasJoinLoop(joinSite))</div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; {</div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a159bbd4352fcffa93c97281ab9d229b1">LoopBBs</a>&amp; joinLoop = getJoinLoop(joinSite);</div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; std::vector&lt;const SVFBasicBlock*&gt; exitbbs;</div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; joinSite-&gt;<a class="code" href="classSVF_1_1SVFInstruction.html#aef7ad257ea809101df33779463907f3e">getFunction</a>()-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#a61505b528343c7d728eba3a705930a16">getExitBlocksOfLoop</a>(joinSite-&gt;<a class="code" href="classSVF_1_1SVFInstruction.html#ae009f41cbf48d949d4325e08fe8d7198">getParent</a>(),exitbbs);</div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; <span class="keywordflow">while</span>(!exitbbs.empty())</div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160; {</div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* eb = exitbbs.<a class="code" href="classSVF_1_1SVFBasicBlock.html#ad05f85ce931d4479f71d1947a25599dc">back</a>();</div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160; exitbbs.pop_back();</div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfEntryInst = eb-&gt;<a class="code" href="classSVF_1_1SVFBasicBlock.html#a7bde256bc906af7f7204929019f4a33e">front</a>();</div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160; <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a> newCts(curCxt,svfEntryInst);</div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160; addDirectlyJoinTID(cts,rootTid);</div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; <span class="keywordflow">if</span>(isSameSCEV(forkSite,joinSite))</div><div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160; {</div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160; markCxtStmtFlag(newCts,TDDead);</div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160; addSymmetricLoopJoin(cts,joinLoop);</div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160; }</div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160; markCxtStmtFlag(cts,TDAlive);</div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160; }</div><div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160; }</div><div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160; {</div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160; markCxtStmtFlag(cts,TDDead);</div><div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160; addDirectlyJoinTID(cts,rootTid);</div><div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>,<a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\n\t match join site &quot;</span> &lt;&lt; call-&gt;<a class="code" href="classSVF_1_1SVFValue.html#aa678ca4616a3e69b53726b33d0b9c5a2">toString</a>() &lt;&lt; <span class="stringliteral">&quot;for thread &quot;</span> &lt;&lt; rootTid &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160; }</div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160; }</div><div class="line"><a name="l00858"></a><span class="lineno"> 858</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00859"></a><span class="lineno"> 859</span>&#160; {</div><div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160; <span class="keywordflow">if</span>(hasJoinLoop(joinSite))</div><div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160; {</div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160; std::vector&lt;const SVFBasicBlock*&gt; exitbbs;</div><div class="line"><a name="l00863"></a><span class="lineno"> 863</span>&#160; joinSite-&gt;<a class="code" href="classSVF_1_1SVFInstruction.html#aef7ad257ea809101df33779463907f3e">getFunction</a>()-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#a61505b528343c7d728eba3a705930a16">getExitBlocksOfLoop</a>(joinSite-&gt;<a class="code" href="classSVF_1_1SVFInstruction.html#ae009f41cbf48d949d4325e08fe8d7198">getParent</a>(),exitbbs);</div><div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160; <span class="keywordflow">while</span>(!exitbbs.empty())</div><div class="line"><a name="l00865"></a><span class="lineno"> 865</span>&#160; {</div><div class="line"><a name="l00866"></a><span class="lineno"> 866</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* eb = exitbbs.<a class="code" href="classSVF_1_1SVFBasicBlock.html#ad05f85ce931d4479f71d1947a25599dc">back</a>();</div><div class="line"><a name="l00867"></a><span class="lineno"> 867</span>&#160; exitbbs.pop_back();</div><div class="line"><a name="l00868"></a><span class="lineno"> 868</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfEntryInst = eb-&gt;<a class="code" href="classSVF_1_1SVFBasicBlock.html#a7bde256bc906af7f7204929019f4a33e">front</a>();</div><div class="line"><a name="l00869"></a><span class="lineno"> 869</span>&#160; <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a> newCts(curCxt,svfEntryInst);</div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span>&#160; markCxtStmtFlag(newCts,cts);</div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160; }</div><div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160; }</div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span>&#160; }</div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160; }</div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160; <a class="code" href="classSVF_1_1MHP.html#af4d6f0884ce18ea5caf0dfd9799d1aae">handleIntra</a>(cts);</div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160;}</div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160;</div><div class="line"><a name="l00879"></a><span class="lineno"><a class="line" href="classSVF_1_1ForkJoinAnalysis.html#ab636777379aca0b53a06e4888d4b4c6b"> 879</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ab636777379aca0b53a06e4888d4b4c6b">ForkJoinAnalysis::handleCall</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a>&amp; cts, <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> rootTid)</div><div class="line"><a name="l00880"></a><span class="lineno"> 880</span>&#160;{</div><div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160;</div><div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* call = cts.<a class="code" href="classSVF_1_1CxtStmt.html#a0b593c4ba425937212e2889e64ce4791">getStmt</a>();</div><div class="line"><a name="l00883"></a><span class="lineno"> 883</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a>&amp; curCxt = cts.<a class="code" href="classSVF_1_1CxtStmt.html#a3ce19b8f2de2e199ed4165dbe9d21f28">getContext</a>();</div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span>&#160; <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cbn = <a class="code" href="classSVF_1_1MHP.html#acd61be4be1b285fa333c5435912ece0e">getCBN</a>(call);</div><div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160; <span class="keywordflow">if</span>(getTCG()-&gt;hasCallGraphEdge(cbn))</div><div class="line"><a name="l00886"></a><span class="lineno"> 886</span>&#160; {</div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span>&#160; <span class="keywordflow">for</span> (PTACallGraph::CallGraphEdgeSet::const_iterator cgIt = getTCG()-&gt;getCallEdgeBegin(cbn),</div><div class="line"><a name="l00888"></a><span class="lineno"> 888</span>&#160; ecgIt = getTCG()-&gt;getCallEdgeEnd(cbn); cgIt != ecgIt; ++cgIt)</div><div class="line"><a name="l00889"></a><span class="lineno"> 889</span>&#160; {</div><div class="line"><a name="l00890"></a><span class="lineno"> 890</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svfcallee = (*cgIt)-&gt;getDstNode()-&gt;getFunction();</div><div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">isExtCall</a>(svfcallee))</div><div class="line"><a name="l00892"></a><span class="lineno"> 892</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00893"></a><span class="lineno"> 893</span>&#160; <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a> newCxt = curCxt;</div><div class="line"><a name="l00894"></a><span class="lineno"> 894</span>&#160; <a class="code" href="classSVF_1_1MHP.html#a68a2ad4480af7d40bd604d81afbc3d0b">pushCxt</a>(newCxt,call,svfcallee);</div><div class="line"><a name="l00895"></a><span class="lineno"> 895</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfEntryInst = svfcallee-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#a793f485e92d12cf407f2ffa41861eb3d">getEntryBlock</a>()-&gt;<a class="code" href="classSVF_1_1SVFBasicBlock.html#a7bde256bc906af7f7204929019f4a33e">front</a>();</div><div class="line"><a name="l00896"></a><span class="lineno"> 896</span>&#160; <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a> newCts(newCxt,svfEntryInst);</div><div class="line"><a name="l00897"></a><span class="lineno"> 897</span>&#160; markCxtStmtFlag(newCts,cts);</div><div class="line"><a name="l00898"></a><span class="lineno"> 898</span>&#160; }</div><div class="line"><a name="l00899"></a><span class="lineno"> 899</span>&#160; }</div><div class="line"><a name="l00900"></a><span class="lineno"> 900</span>&#160;}</div><div class="line"><a name="l00901"></a><span class="lineno"> 901</span>&#160;</div><div class="line"><a name="l00903"></a><span class="lineno"><a class="line" href="classSVF_1_1ForkJoinAnalysis.html#a30e5ef1322216857513047d23b525829"> 903</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a30e5ef1322216857513047d23b525829">ForkJoinAnalysis::handleRet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a>&amp; cts)</div><div class="line"><a name="l00904"></a><span class="lineno"> 904</span>&#160;{</div><div class="line"><a name="l00905"></a><span class="lineno"> 905</span>&#160;</div><div class="line"><a name="l00906"></a><span class="lineno"> 906</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* curInst = cts.<a class="code" href="classSVF_1_1CxtStmt.html#a0b593c4ba425937212e2889e64ce4791">getStmt</a>();</div><div class="line"><a name="l00907"></a><span class="lineno"> 907</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a>&amp; curCxt = cts.<a class="code" href="classSVF_1_1CxtStmt.html#a3ce19b8f2de2e199ed4165dbe9d21f28">getContext</a>();</div><div class="line"><a name="l00908"></a><span class="lineno"> 908</span>&#160;</div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span>&#160; <a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a>* curFunNode = getTCG()-&gt;getCallGraphNode(curInst-&gt;<a class="code" href="classSVF_1_1SVFInstruction.html#aef7ad257ea809101df33779463907f3e">getFunction</a>());</div><div class="line"><a name="l00910"></a><span class="lineno"> 910</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1PTACallGraphNode.html#adf17f5699c9f40ffc8837e813e3af3ec">PTACallGraphNode::const_iterator</a> it = curFunNode-&gt;<a class="code" href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">getInEdges</a>().begin(), eit = curFunNode-&gt;<a class="code" href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">getInEdges</a>().end(); it!=eit; ++it)</div><div class="line"><a name="l00911"></a><span class="lineno"> 911</span>&#160; {</div><div class="line"><a name="l00912"></a><span class="lineno"> 912</span>&#160; <a class="code" href="classSVF_1_1PTACallGraphEdge.html">PTACallGraphEdge</a>* edge = *it;</div><div class="line"><a name="l00913"></a><span class="lineno"> 913</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;ThreadForkEdge&gt;(edge) || SVFUtil::isa&lt;ThreadJoinEdge&gt;(edge))</div><div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160; <span class="keywordflow">for</span>(PTACallGraphEdge::CallInstSet::const_iterator cit = (edge)-&gt;directCallsBegin(),</div><div class="line"><a name="l00916"></a><span class="lineno"> 916</span>&#160; ecit = (edge)-&gt;directCallsEnd(); cit!=ecit; ++cit)</div><div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160; {</div><div class="line"><a name="l00918"></a><span class="lineno"> 918</span>&#160; <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a> newCxt = curCxt;</div><div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1MHP.html#a3dc4c80d60039ce5f73583ce32784d82">matchCxt</a>(newCxt,(*cit)-&gt;getCallSite(),curFunNode-&gt;<a class="code" href="classSVF_1_1PTACallGraphNode.html#a959445c97605953fbdebbbd999437a09">getFunction</a>()))</div><div class="line"><a name="l00920"></a><span class="lineno"> 920</span>&#160; {</div><div class="line"><a name="l00921"></a><span class="lineno"> 921</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a613d763731058899e6819acdb2d7315f">InstVec</a>&amp; nextInsts = (*cit)-&gt;getCallSite()-&gt;getSuccInstructions();</div><div class="line"><a name="l00922"></a><span class="lineno"> 922</span>&#160; <span class="keywordflow">for</span>(InstVec::const_iterator nit = nextInsts.begin(), enit = nextInsts.end(); nit!=enit; ++nit)</div><div class="line"><a name="l00923"></a><span class="lineno"> 923</span>&#160; {</div><div class="line"><a name="l00924"></a><span class="lineno"> 924</span>&#160; <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a> newCts(newCxt,*nit);</div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span>&#160; markCxtStmtFlag(newCts,cts);</div><div class="line"><a name="l00926"></a><span class="lineno"> 926</span>&#160; }</div><div class="line"><a name="l00927"></a><span class="lineno"> 927</span>&#160; }</div><div class="line"><a name="l00928"></a><span class="lineno"> 928</span>&#160; }</div><div class="line"><a name="l00929"></a><span class="lineno"> 929</span>&#160; <span class="keywordflow">for</span>(PTACallGraphEdge::CallInstSet::const_iterator cit = (edge)-&gt;indirectCallsBegin(),</div><div class="line"><a name="l00930"></a><span class="lineno"> 930</span>&#160; ecit = (edge)-&gt;indirectCallsEnd(); cit!=ecit; ++cit)</div><div class="line"><a name="l00931"></a><span class="lineno"> 931</span>&#160; {</div><div class="line"><a name="l00932"></a><span class="lineno"> 932</span>&#160; <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a> newCxt = curCxt;</div><div class="line"><a name="l00933"></a><span class="lineno"> 933</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1MHP.html#a3dc4c80d60039ce5f73583ce32784d82">matchCxt</a>(newCxt,(*cit)-&gt;getCallSite(),curFunNode-&gt;<a class="code" href="classSVF_1_1PTACallGraphNode.html#a959445c97605953fbdebbbd999437a09">getFunction</a>()))</div><div class="line"><a name="l00934"></a><span class="lineno"> 934</span>&#160; {</div><div class="line"><a name="l00935"></a><span class="lineno"> 935</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a613d763731058899e6819acdb2d7315f">InstVec</a>&amp; nextInsts = (*cit)-&gt;getCallSite()-&gt;getSuccInstructions();</div><div class="line"><a name="l00936"></a><span class="lineno"> 936</span>&#160; <span class="keywordflow">for</span>(InstVec::const_iterator nit = nextInsts.begin(), enit = nextInsts.end(); nit!=enit; ++nit)</div><div class="line"><a name="l00937"></a><span class="lineno"> 937</span>&#160; {</div><div class="line"><a name="l00938"></a><span class="lineno"> 938</span>&#160; <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a> newCts(newCxt,*nit);</div><div class="line"><a name="l00939"></a><span class="lineno"> 939</span>&#160; markCxtStmtFlag(newCts,cts);</div><div class="line"><a name="l00940"></a><span class="lineno"> 940</span>&#160; }</div><div class="line"><a name="l00941"></a><span class="lineno"> 941</span>&#160; }</div><div class="line"><a name="l00942"></a><span class="lineno"> 942</span>&#160; }</div><div class="line"><a name="l00943"></a><span class="lineno"> 943</span>&#160; }</div><div class="line"><a name="l00944"></a><span class="lineno"> 944</span>&#160;}</div><div class="line"><a name="l00945"></a><span class="lineno"> 945</span>&#160;</div><div class="line"><a name="l00947"></a><span class="lineno"><a class="line" href="classSVF_1_1ForkJoinAnalysis.html#add09218cce8d8bd8dd9e73b2d26a5797"> 947</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#add09218cce8d8bd8dd9e73b2d26a5797">ForkJoinAnalysis::handleIntra</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a>&amp; cts)</div><div class="line"><a name="l00948"></a><span class="lineno"> 948</span>&#160;{</div><div class="line"><a name="l00949"></a><span class="lineno"> 949</span>&#160;</div><div class="line"><a name="l00950"></a><span class="lineno"> 950</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* curInst = cts.<a class="code" href="classSVF_1_1CxtStmt.html#a0b593c4ba425937212e2889e64ce4791">getStmt</a>();</div><div class="line"><a name="l00951"></a><span class="lineno"> 951</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a>&amp; curCxt = cts.<a class="code" href="classSVF_1_1CxtStmt.html#a3ce19b8f2de2e199ed4165dbe9d21f28">getContext</a>();</div><div class="line"><a name="l00952"></a><span class="lineno"> 952</span>&#160;</div><div class="line"><a name="l00953"></a><span class="lineno"> 953</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a613d763731058899e6819acdb2d7315f">InstVec</a>&amp; nextInsts = curInst-&gt;<a class="code" href="classSVF_1_1SVFInstruction.html#a281d6b024afeeb96bac281eb23ce3f1f">getSuccInstructions</a>();</div><div class="line"><a name="l00954"></a><span class="lineno"> 954</span>&#160; <span class="keywordflow">for</span>(InstVec::const_iterator nit = nextInsts.begin(), enit = nextInsts.end(); nit!=enit; ++nit)</div><div class="line"><a name="l00955"></a><span class="lineno"> 955</span>&#160; {</div><div class="line"><a name="l00956"></a><span class="lineno"> 956</span>&#160; <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a> newCts(curCxt,*nit);</div><div class="line"><a name="l00957"></a><span class="lineno"> 957</span>&#160; markCxtStmtFlag(newCts,cts);</div><div class="line"><a name="l00958"></a><span class="lineno"> 958</span>&#160; }</div><div class="line"><a name="l00959"></a><span class="lineno"> 959</span>&#160;}</div><div class="line"><a name="l00960"></a><span class="lineno"> 960</span>&#160;</div><div class="line"><a name="l00966"></a><span class="lineno"><a class="line" href="classSVF_1_1ForkJoinAnalysis.html#a34ec31a6859cd94b525bfa26e549d8c1"> 966</a></span>&#160;<a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a34ec31a6859cd94b525bfa26e549d8c1">ForkJoinAnalysis::getDirAndIndJoinedTid</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a>&amp; cs)</div><div class="line"><a name="l00967"></a><span class="lineno"> 967</span>&#160;{</div><div class="line"><a name="l00968"></a><span class="lineno"> 968</span>&#160;</div><div class="line"><a name="l00969"></a><span class="lineno"> 969</span>&#160; CxtStmtToTIDMap::const_iterator it = dirAndIndJoinMap.find(cs);</div><div class="line"><a name="l00970"></a><span class="lineno"> 970</span>&#160; <span class="keywordflow">if</span>(it!=dirAndIndJoinMap.end())</div><div class="line"><a name="l00971"></a><span class="lineno"> 971</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00972"></a><span class="lineno"> 972</span>&#160;</div><div class="line"><a name="l00973"></a><span class="lineno"> 973</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a>&amp; directJoinTids = getDirectlyJoinedTid(cs);</div><div class="line"><a name="l00974"></a><span class="lineno"> 974</span>&#160; <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> allJoinTids = directJoinTids;</div><div class="line"><a name="l00975"></a><span class="lineno"> 975</span>&#160;</div><div class="line"><a name="l00976"></a><span class="lineno"> 976</span>&#160; <a class="code" href="classSVF_1_1FIFOWorkList.html">FIFOWorkList&lt;NodeID&gt;</a> worklist;</div><div class="line"><a name="l00977"></a><span class="lineno"> 977</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1SparseBitVector_1_1SparseBitVectorIterator.html">NodeBS::iterator</a> it = directJoinTids.begin(), eit = directJoinTids.end(); it!=eit; ++it)</div><div class="line"><a name="l00978"></a><span class="lineno"> 978</span>&#160; {</div><div class="line"><a name="l00979"></a><span class="lineno"> 979</span>&#160; worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#a0df409a67428e528321869d201f2a474">push</a>(*it);</div><div class="line"><a name="l00980"></a><span class="lineno"> 980</span>&#160; }</div><div class="line"><a name="l00981"></a><span class="lineno"> 981</span>&#160;</div><div class="line"><a name="l00982"></a><span class="lineno"> 982</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="l00983"></a><span class="lineno"> 983</span>&#160; {</div><div class="line"><a name="l00984"></a><span class="lineno"> 984</span>&#160; <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> tid = worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#a8fa72918fce7e9c0b2dc34b683a797c6">pop</a>();</div><div class="line"><a name="l00985"></a><span class="lineno"> 985</span>&#160; <a class="code" href="classSVF_1_1TCTNode.html">TCTNode</a>* node = <a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#a7b4ad0b052e1f8b6869733eef15f4e4d">getTCTNode</a>(tid);</div><div class="line"><a name="l00986"></a><span class="lineno"> 986</span>&#160; <span class="keywordflow">for</span>(TCT::ThreadCreateEdgeSet::const_iterator it = <a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#a511c2ee4cfdc01a720135b2cd493fe3b">getChildrenBegin</a>(node), eit = <a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#af47837e30a80e8d6684f3ee6001afb7a">getChildrenEnd</a>(node); it!=eit; ++it)</div><div class="line"><a name="l00987"></a><span class="lineno"> 987</span>&#160; {</div><div class="line"><a name="l00988"></a><span class="lineno"> 988</span>&#160; <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> childTid = (*it)-&gt;getDstID();</div><div class="line"><a name="l00989"></a><span class="lineno"> 989</span>&#160; <span class="keywordflow">if</span>(isFullJoin(tid,childTid))</div><div class="line"><a name="l00990"></a><span class="lineno"> 990</span>&#160; {</div><div class="line"><a name="l00991"></a><span class="lineno"> 991</span>&#160; allJoinTids.<a class="code" href="classSVF_1_1SparseBitVector.html#a61bd86909a141f9de873d92c0f904832">set</a>(childTid);</div><div class="line"><a name="l00992"></a><span class="lineno"> 992</span>&#160; worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#a0df409a67428e528321869d201f2a474">push</a>(childTid);</div><div class="line"><a name="l00993"></a><span class="lineno"> 993</span>&#160; }</div><div class="line"><a name="l00994"></a><span class="lineno"> 994</span>&#160; }</div><div class="line"><a name="l00995"></a><span class="lineno"> 995</span>&#160; }</div><div class="line"><a name="l00996"></a><span class="lineno"> 996</span>&#160;</div><div class="line"><a name="l00997"></a><span class="lineno"> 997</span>&#160; dirAndIndJoinMap[cs] = allJoinTids;</div><div class="line"><a name="l00998"></a><span class="lineno"> 998</span>&#160;</div><div class="line"><a name="l00999"></a><span class="lineno"> 999</span>&#160; <span class="keywordflow">return</span> allJoinTids;</div><div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160;}</div><div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160;</div><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>&#160;<span class="comment">// static bool accessSameArrayIndex(const GetElementPtrInst* ptr1, const GetElementPtrInst* ptr2)</span></div><div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>&#160;<span class="comment">// {</span></div><div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>&#160;</div><div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160;<span class="comment">// std::vector&lt;u32_t&gt; ptr1vec;</span></div><div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160;<span class="comment">// for (gep_type_iterator gi = gep_type_begin(*ptr1), ge = gep_type_end(*ptr1);</span></div><div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>&#160;<span class="comment">// gi != ge; ++gi)</span></div><div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>&#160;<span class="comment">// {</span></div><div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>&#160;<span class="comment">// if(SVFConstantInt* ci = SVFUtil::dyn_cast&lt;SVFConstantInt&gt;(LLVMModuleSet::getLLVMModuleSet()-&gt;getSVFValue(gi.getOperand())))</span></div><div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>&#160;<span class="comment">// {</span></div><div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>&#160;<span class="comment">// s32_t idx = ci-&gt;getSExtValue();</span></div><div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>&#160;<span class="comment">// ptr1vec.push_back(idx);</span></div><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160;<span class="comment">// }</span></div><div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>&#160;<span class="comment">// else</span></div><div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>&#160;<span class="comment">// return false;</span></div><div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>&#160;<span class="comment">// }</span></div><div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>&#160;</div><div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>&#160;<span class="comment">// std::vector&lt;u32_t&gt; ptr2vec;</span></div><div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>&#160;<span class="comment">// for (gep_type_iterator gi = gep_type_begin(*ptr2), ge = gep_type_end(*ptr2);</span></div><div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>&#160;<span class="comment">// gi != ge; ++gi)</span></div><div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>&#160;<span class="comment">// {</span></div><div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>&#160;<span class="comment">// if(SVFConstantInt* ci = SVFUtil::dyn_cast&lt;SVFConstantInt&gt;(LLVMModuleSet::getLLVMModuleSet()-&gt;getSVFValue(gi.getOperand())))</span></div><div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>&#160;<span class="comment">// {</span></div><div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>&#160;<span class="comment">// s32_t idx = ci-&gt;getSExtValue();</span></div><div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>&#160;<span class="comment">// ptr2vec.push_back(idx);</span></div><div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>&#160;<span class="comment">// }</span></div><div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>&#160;<span class="comment">// else</span></div><div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>&#160;<span class="comment">// return false;</span></div><div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>&#160;<span class="comment">// }</span></div><div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>&#160;</div><div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>&#160;<span class="comment">// return ptr1vec==ptr2vec;</span></div><div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>&#160;<span class="comment">// }</span></div><div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>&#160;</div><div class="line"><a name="l01041"></a><span class="lineno"><a class="line" href="classSVF_1_1ForkJoinAnalysis.html#abbff6ea064e7241315932db77dccaad9"> 1041</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#abbff6ea064e7241315932db77dccaad9">ForkJoinAnalysis::isSameSCEV</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* forkSite, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* joinSite)</div><div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>&#160;{</div><div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>&#160;</div><div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>&#160; <span class="comment">// const PTASCEV&amp; forkse = fkjnToPTASCEVMap[forkSite];</span></div><div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>&#160; <span class="comment">// const PTASCEV&amp; joinse = fkjnToPTASCEVMap[joinSite];</span></div><div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>&#160;</div><div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>&#160; <span class="comment">// //if(sameLoopTripCount(forkSite,joinSite) == false)</span></div><div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>&#160; <span class="comment">// // return false;</span></div><div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>&#160;</div><div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160; <span class="comment">// if(forkse.inloop &amp;&amp; joinse.inloop)</span></div><div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160; <span class="comment">// return forkse.start==joinse.start &amp;&amp; forkse.step == joinse.step &amp;&amp; forkse.tripcount &lt;= joinse.tripcount;</span></div><div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>&#160; <span class="comment">// else if(SVFUtil::isa&lt;GetElementPtrInst&gt;(forkse.ptr) &amp;&amp; SVFUtil::isa&lt;GetElementPtrInst&gt;(joinse.ptr))</span></div><div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>&#160; <span class="comment">// return accessSameArrayIndex(SVFUtil::cast&lt;GetElementPtrInst&gt;(forkse.ptr),SVFUtil::cast&lt;GetElementPtrInst&gt;(joinse.ptr));</span></div><div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>&#160; <span class="comment">// else if(SVFUtil::isa&lt;GetElementPtrInst&gt;(forkse.ptr) || SVFUtil::isa&lt;GetElementPtrInst&gt;(joinse.ptr))</span></div><div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>&#160; <span class="comment">// return false;</span></div><div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>&#160; <span class="comment">// else</span></div><div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>&#160; <span class="comment">// return true;</span></div><div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>&#160;</div><div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>&#160;}</div><div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>&#160;</div><div class="line"><a name="l01065"></a><span class="lineno"><a class="line" href="classSVF_1_1ForkJoinAnalysis.html#a28e50b1ffdcdaba57d3515a5f6410c86"> 1065</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a28e50b1ffdcdaba57d3515a5f6410c86">ForkJoinAnalysis::sameLoopTripCount</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* forkSite, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* joinSite)</div><div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>&#160;{</div><div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>&#160;</div><div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>&#160; <span class="comment">// ScalarEvolution* forkSE = getSE(forkSite);</span></div><div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>&#160; <span class="comment">// ScalarEvolution* joinSE = getSE(joinSite);</span></div><div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>&#160;</div><div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>&#160; <span class="comment">// if(tct-&gt;hasLoop(forkSite) == false || tct-&gt;hasLoop(joinSite) == false)</span></div><div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>&#160; <span class="comment">// return false;</span></div><div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>&#160;</div><div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>&#160; <span class="comment">// // Get loops</span></div><div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160; <span class="comment">// const LoopBBs&amp; forkSiteLoop = tct-&gt;getLoop(forkSite);</span></div><div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>&#160; <span class="comment">// const LoopBBs&amp; joinSiteLoop = tct-&gt;getLoop(joinSite);</span></div><div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>&#160;</div><div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>&#160; <span class="comment">// const SCEV* forkLoopCountScev = forkSE-&gt;getBackedgeTakenCount(forkSiteLoop);</span></div><div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>&#160; <span class="comment">// const SCEV* joinLoopCountScev = joinSE-&gt;getBackedgeTakenCount(joinSiteLoop);</span></div><div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>&#160;</div><div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>&#160; <span class="comment">// if(forkLoopCountScev!=forkSE-&gt;getCouldNotCompute())</span></div><div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>&#160; <span class="comment">// {</span></div><div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160; <span class="comment">// if(forkLoopCountScev==joinLoopCountScev)</span></div><div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>&#160; <span class="comment">// {</span></div><div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160; <span class="comment">// return true;</span></div><div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160; <span class="comment">// }</span></div><div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>&#160; <span class="comment">// }</span></div><div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160;}</div><div class="ttc" id="classSVF_1_1SparseBitVector_1_1SparseBitVectorIterator_html"><div class="ttname"><a href="classSVF_1_1SparseBitVector_1_1SparseBitVectorIterator.html">SVF::SparseBitVector::SparseBitVectorIterator</a></div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l00536">SparseBitVector.h:536</a></div></div>
70
- <div class="ttc" id="classSVF_1_1GenericGraph_html_a0d9744b1b0e7a09a6f7af29188e243b7"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">SVF::GenericGraph::begin</a></div><div class="ttdeci">iterator begin()</div><div class="ttdoc">Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00367">GenericGraph.h:367</a></div></div>
70
+ <div class="ttc" id="classSVF_1_1GenericGraph_html_a0d9744b1b0e7a09a6f7af29188e243b7"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">SVF::GenericGraph::begin</a></div><div class="ttdeci">iterator begin()</div><div class="ttdoc">Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00369">GenericGraph.h:369</a></div></div>
71
71
  <div class="ttc" id="classSVF_1_1MHP_html_aed0633101a35b43a1769261db14fb1a1"><div class="ttname"><a href="classSVF_1_1MHP.html#aed0633101a35b43a1769261db14fb1a1">SVF::MHP::getDirAndIndJoinedTid</a></div><div class="ttdeci">NodeBS getDirAndIndJoinedTid(const CallStrCxt &amp;cxt, const SVFInstruction *call)</div><div class="ttdoc">Return thread id(s) which are directly or indirectly joined at this join site. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l00485">MHP.cpp:485</a></div></div>
72
72
  <div class="ttc" id="classSVF_1_1MHP_html_a1f057ef082484a1997cb02287e063f00"><div class="ttname"><a href="classSVF_1_1MHP.html#a1f057ef082484a1997cb02287e063f00">SVF::MHP::nonCandidateFuncMHPRelMap</a></div><div class="ttdeci">FuncPairToBool nonCandidateFuncMHPRelMap</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00273">MHP.h:273</a></div></div>
73
73
  <div class="ttc" id="classSVF_1_1MHP_html_a7585f40b80c5488828576eb2f035ac61"><div class="ttname"><a href="classSVF_1_1MHP.html#a7585f40b80c5488828576eb2f035ac61">SVF::MHP::hasJoinInSymmetricLoop</a></div><div class="ttdeci">bool hasJoinInSymmetricLoop(const CallStrCxt &amp;cxt, const SVFInstruction *call) const</div><div class="ttdoc">Whether a context-sensitive join satisfies symmetric loop pattern. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l00494">MHP.cpp:494</a></div></div>
74
- <div class="ttc" id="classSVF_1_1SVFInstruction_html"><div class="ttname"><a href="classSVF_1_1SVFInstruction.html">SVF::SVFInstruction</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00579">SVFValue.h:579</a></div></div>
74
+ <div class="ttc" id="classSVF_1_1SVFInstruction_html"><div class="ttname"><a href="classSVF_1_1SVFInstruction.html">SVF::SVFInstruction</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00570">SVFValue.h:570</a></div></div>
75
75
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aeb570e9267fd7b189bd1bc877896d7ab"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aeb570e9267fd7b189bd1bc877896d7ab">SVF::SVFUtil::dumpSet</a></div><div class="ttdeci">void dumpSet(NodeBS To, OutStream &amp;O=SVFUtil::outs())</div><div class="ttdoc">Dump sparse bitvector set. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00146">SVFUtil.cpp:146</a></div></div>
76
76
  <div class="ttc" id="classSVF_1_1TCT_html_aeb7dff0c02a90cb338c8d054d2b78984"><div class="ttname"><a href="classSVF_1_1TCT.html#aeb7dff0c02a90cb338c8d054d2b78984">SVF::TCT::getAncestorThread</a></div><div class="ttdeci">const NodeBS getAncestorThread(NodeID tid) const</div><div class="ttdoc">Get all ancestor threads. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00302">TCT.h:302</a></div></div>
77
77
  <div class="ttc" id="classSVF_1_1MHP_html_a0cb1db9943ddc0928afa8e370cbf60c6"><div class="ttname"><a href="classSVF_1_1MHP.html#a0cb1db9943ddc0928afa8e370cbf60c6">SVF::MHP::mayHappenInParallelInst</a></div><div class="ttdeci">virtual bool mayHappenInParallelInst(const SVFInstruction *i1, const SVFInstruction *i2)</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l00554">MHP.cpp:554</a></div></div>
@@ -85,25 +85,25 @@ $(function() {
85
85
  <div class="ttc" id="classSVF_1_1MHP_html_a4ce3b9ad740aa7b74a1ae2192aeeb9d8"><div class="ttname"><a href="classSVF_1_1MHP.html#a4ce3b9ad740aa7b74a1ae2192aeeb9d8">SVF::MHP::getThreadStmtSet</a></div><div class="ttdeci">const CxtThreadStmtSet &amp; getThreadStmtSet(const SVFInstruction *inst) const</div><div class="ttdoc">Get/has ThreadStmt. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00126">MHP.h:126</a></div></div>
86
86
  <div class="ttc" id="classSVF_1_1ThreadCallGraph_html_a8721610a39212613ad55bbd46a35c576"><div class="ttname"><a href="classSVF_1_1ThreadCallGraph.html#a8721610a39212613ad55bbd46a35c576">SVF::ThreadCallGraph::getForkEdgeBegin</a></div><div class="ttdeci">ForkEdgeSet::const_iterator getForkEdgeBegin(const CallICFGNode *cs) const</div><div class="ttdef"><b>Definition:</b> <a href="ThreadCallGraph_8h_source.html#l00208">ThreadCallGraph.h:208</a></div></div>
87
87
  <div class="ttc" id="namespaceSVF_html_a350ae9bf8606bdfe23c8679681b969dc"><div class="ttname"><a href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="include_2MTA_2MTAResultValidator_8h_source.html#l00020">MTAResultValidator.h:20</a></div></div>
88
- <div class="ttc" id="classSVF_1_1GenericNode_html_afc8b5f86d7795b6a0dfc0687d942d79b"><div class="ttname"><a href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">SVF::GenericNode::getInEdges</a></div><div class="ttdeci">const GEdgeSetTy &amp; getInEdges() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00186">GenericGraph.h:186</a></div></div>
88
+ <div class="ttc" id="classSVF_1_1GenericNode_html_afc8b5f86d7795b6a0dfc0687d942d79b"><div class="ttname"><a href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">SVF::GenericNode::getInEdges</a></div><div class="ttdeci">const GEdgeSetTy &amp; getInEdges() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00188">GenericGraph.h:188</a></div></div>
89
89
  <div class="ttc" id="classSVF_1_1MHP_html_ab7d9fe837844197b7acdc0493a50aaa5"><div class="ttname"><a href="classSVF_1_1MHP.html#ab7d9fe837844197b7acdc0493a50aaa5">SVF::MHP::interleavingQueriesTime</a></div><div class="ttdeci">double interleavingQueriesTime</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00280">MHP.h:280</a></div></div>
90
- <div class="ttc" id="classSVF_1_1SVFValue_html_a68b40576b24c4cb81cc3ba75550f4654"><div class="ttname"><a href="classSVF_1_1SVFValue.html#a68b40576b24c4cb81cc3ba75550f4654">SVF::SVFValue::getName</a></div><div class="ttdeci">virtual const std::string getName() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00215">SVFValue.h:215</a></div></div>
90
+ <div class="ttc" id="classSVF_1_1SVFValue_html_a68b40576b24c4cb81cc3ba75550f4654"><div class="ttname"><a href="classSVF_1_1SVFValue.html#a68b40576b24c4cb81cc3ba75550f4654">SVF::SVFValue::getName</a></div><div class="ttdeci">virtual const std::string getName() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00210">SVFValue.h:210</a></div></div>
91
91
  <div class="ttc" id="classSVF_1_1MHP_html_a27d031e9c7c4706d7ee1750668e83b99"><div class="ttname"><a href="classSVF_1_1MHP.html#a27d031e9c7c4706d7ee1750668e83b99">SVF::MHP::hasThreadStmtSet</a></div><div class="ttdeci">bool hasThreadStmtSet(const SVFInstruction *inst) const</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00132">MHP.h:132</a></div></div>
92
92
  <div class="ttc" id="classSVF_1_1TCT_html_a511c2ee4cfdc01a720135b2cd493fe3b"><div class="ttname"><a href="classSVF_1_1TCT.html#a511c2ee4cfdc01a720135b2cd493fe3b">SVF::TCT::getChildrenBegin</a></div><div class="ttdeci">ThreadCreateEdgeSet::const_iterator getChildrenBegin(const TCTNode *node) const</div><div class="ttdoc">Get children and parent nodes. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00203">TCT.h:203</a></div></div>
93
93
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a609eea630a8f88fe9eaba15ce7e48738"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a609eea630a8f88fe9eaba15ce7e48738">SVF::SVFUtil::pasMsg</a></div><div class="ttdeci">std::string pasMsg(std::string msg)</div><div class="ttdoc">Print each pass/phase message by converting a string into blue string output. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00098">SVFUtil.cpp:98</a></div></div>
94
94
  <div class="ttc" id="classSVF_1_1CxtThread_html_addee4e560a470eec9fbbf17efee906a9"><div class="ttname"><a href="classSVF_1_1CxtThread.html#addee4e560a470eec9fbbf17efee906a9">SVF::CxtThread::getThread</a></div><div class="ttdeci">const SVFInstruction * getThread() const</div><div class="ttdoc">Return forksite. </div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00210">CxtStmt.h:210</a></div></div>
95
- <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#l00206">GenericGraph.h:206</a></div></div>
95
+ <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#l00208">GenericGraph.h:208</a></div></div>
96
96
  <div class="ttc" id="classSVF_1_1MHP_html_aca306b97c6dcd47a8f407038436473a2"><div class="ttname"><a href="classSVF_1_1MHP.html#aca306b97c6dcd47a8f407038436473a2">SVF::MHP::interleavingTime</a></div><div class="ttdeci">double interleavingTime</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00279">MHP.h:279</a></div></div>
97
97
  <div class="ttc" id="classSVF_1_1MHP_html_a5a537e2f89e8cfe10a2d16ae1654be6e"><div class="ttname"><a href="classSVF_1_1MHP.html#a5a537e2f89e8cfe10a2d16ae1654be6e">SVF::MHP::getCallee</a></div><div class="ttdeci">const PTACallGraph::FunctionSet &amp; getCallee(const SVFInstruction *inst, PTACallGraph::FunctionSet &amp;callees)</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00143">MHP.h:143</a></div></div>
98
98
  <div class="ttc" id="classSVF_1_1ThreadCallGraph_html_a1ebbd26c17cff1c1a1bee9caa9a8f825"><div class="ttname"><a href="classSVF_1_1ThreadCallGraph.html#a1ebbd26c17cff1c1a1bee9caa9a8f825">SVF::ThreadCallGraph::forksitesEnd</a></div><div class="ttdeci">CallSiteSet::const_iterator forksitesEnd() const</div><div class="ttdef"><b>Definition:</b> <a href="ThreadCallGraph_8h_source.html#l00277">ThreadCallGraph.h:277</a></div></div>
99
- <div class="ttc" id="classSVF_1_1SVFInstruction_html_ae009f41cbf48d949d4325e08fe8d7198"><div class="ttname"><a href="classSVF_1_1SVFInstruction.html#ae009f41cbf48d949d4325e08fe8d7198">SVF::SVFInstruction::getParent</a></div><div class="ttdeci">const SVFBasicBlock * getParent() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00603">SVFValue.h:603</a></div></div>
99
+ <div class="ttc" id="classSVF_1_1SVFInstruction_html_ae009f41cbf48d949d4325e08fe8d7198"><div class="ttname"><a href="classSVF_1_1SVFInstruction.html#ae009f41cbf48d949d4325e08fe8d7198">SVF::SVFInstruction::getParent</a></div><div class="ttdeci">const SVFBasicBlock * getParent() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00594">SVFValue.h:594</a></div></div>
100
100
  <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a197ab02e8320affc4ba2c67fae5bf020"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a197ab02e8320affc4ba2c67fae5bf020">SVF::ForkJoinAnalysis::hasJoinLoop</a></div><div class="ttdeci">bool hasJoinLoop(const SVFInstruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00374">MHP.h:374</a></div></div>
101
101
  <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>
102
102
  <div class="ttc" id="classSVF_1_1MHP_html_acd61be4be1b285fa333c5435912ece0e"><div class="ttname"><a href="classSVF_1_1MHP.html#acd61be4be1b285fa333c5435912ece0e">SVF::MHP::getCBN</a></div><div class="ttdeci">CallICFGNode * getCBN(const SVFInstruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00088">MHP.h:88</a></div></div>
103
103
  <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a16061e7c28e7a9177d9ab798c102b815"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a16061e7c28e7a9177d9ab798c102b815">SVF::ForkJoinAnalysis::analyzeForkJoinPair</a></div><div class="ttdeci">void analyzeForkJoinPair()</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l00725">MHP.cpp:725</a></div></div>
104
104
  <div class="ttc" id="classSVF_1_1PTACallGraph_html_a5f5a5ec7e707a21994d301cc07d32a5a"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#a5f5a5ec7e707a21994d301cc07d32a5a">SVF::PTACallGraph::FunctionSet</a></div><div class="ttdeci">Set&lt; const SVFFunction * &gt; FunctionSet</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00228">PTACallGraph.h:228</a></div></div>
105
105
  <div class="ttc" id="classSVF_1_1CxtThread_html"><div class="ttname"><a href="classSVF_1_1CxtThread.html">SVF::CxtThread</a></div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00188">CxtStmt.h:188</a></div></div>
106
- <div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00266">SVFValue.h:266</a></div></div>
106
+ <div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00257">SVFValue.h:257</a></div></div>
107
107
  <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a613d763731058899e6819acdb2d7315f"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a613d763731058899e6819acdb2d7315f">SVF::ForkJoinAnalysis::InstVec</a></div><div class="ttdeci">TCT::InstVec InstVec</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00301">MHP.h:301</a></div></div>
108
108
  <div class="ttc" id="classSVF_1_1ThreadCallGraph_html_a8351e7ab445cb7faf0209d1fbc63fce1"><div class="ttname"><a href="classSVF_1_1ThreadCallGraph.html#a8351e7ab445cb7faf0209d1fbc63fce1">SVF::ThreadCallGraph::getForkEdgeEnd</a></div><div class="ttdeci">ForkEdgeSet::const_iterator getForkEdgeEnd(const CallICFGNode *cs) const</div><div class="ttdef"><b>Definition:</b> <a href="ThreadCallGraph_8h_source.html#l00214">ThreadCallGraph.h:214</a></div></div>
109
109
  <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_ab69d11caf499612d108155e13adb300f"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#ab69d11caf499612d108155e13adb300f">SVF::ForkJoinAnalysis::hasJoinInSymmetricLoop</a></div><div class="ttdeci">bool hasJoinInSymmetricLoop(const CxtStmt &amp;cs) const</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00335">MHP.h:335</a></div></div>
@@ -119,25 +119,25 @@ $(function() {
119
119
  <div class="ttc" id="classSVF_1_1MHP_html_a3352c8718f909c9fbed4ef7f5cf050a2"><div class="ttname"><a href="classSVF_1_1MHP.html#a3352c8718f909c9fbed4ef7f5cf050a2">SVF::MHP::isTDJoin</a></div><div class="ttdeci">bool isTDJoin(const SVFInstruction *call)</div><div class="ttdoc">Whether it is a join site. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00250">MHP.h:250</a></div></div>
120
120
  <div class="ttc" id="classSVF_1_1MHP_html_a15b624924254f5362a3d02fa539a24fb"><div class="ttname"><a href="classSVF_1_1MHP.html#a15b624924254f5362a3d02fa539a24fb">SVF::MHP::mayHappenInParallel</a></div><div class="ttdeci">virtual bool mayHappenInParallel(const SVFInstruction *i1, const SVFInstruction *i2)</div><div class="ttdoc">Interface to query whether two instructions may happen-in-parallel. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l00614">MHP.cpp:614</a></div></div>
121
121
  <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>
122
- <div class="ttc" id="classSVF_1_1SVFInstruction_html_a281d6b024afeeb96bac281eb23ce3f1f"><div class="ttname"><a href="classSVF_1_1SVFInstruction.html#a281d6b024afeeb96bac281eb23ce3f1f">SVF::SVFInstruction::getSuccInstructions</a></div><div class="ttdeci">InstVec &amp; getSuccInstructions()</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00608">SVFValue.h:608</a></div></div>
123
- <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#l00214">GenericGraph.h:214</a></div></div>
122
+ <div class="ttc" id="classSVF_1_1SVFInstruction_html_a281d6b024afeeb96bac281eb23ce3f1f"><div class="ttname"><a href="classSVF_1_1SVFInstruction.html#a281d6b024afeeb96bac281eb23ce3f1f">SVF::SVFInstruction::getSuccInstructions</a></div><div class="ttdeci">InstVec &amp; getSuccInstructions()</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00599">SVFValue.h:599</a></div></div>
123
+ <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#l00216">GenericGraph.h:216</a></div></div>
124
124
  <div class="ttc" id="classSVF_1_1MHP_html_af4d6f0884ce18ea5caf0dfd9799d1aae"><div class="ttname"><a href="classSVF_1_1MHP.html#af4d6f0884ce18ea5caf0dfd9799d1aae">SVF::MHP::handleIntra</a></div><div class="ttdeci">void handleIntra(const CxtThreadStmt &amp;cts)</div><div class="ttdoc">Handle intra. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l00362">MHP.cpp:362</a></div></div>
125
125
  <div class="ttc" id="classSVF_1_1CxtThreadStmt_html_a3b8f641f2fb7ade7052cae1ee6463884"><div class="ttname"><a href="classSVF_1_1CxtThreadStmt.html#a3b8f641f2fb7ade7052cae1ee6463884">SVF::CxtThreadStmt::getTid</a></div><div class="ttdeci">NodeID getTid() const</div><div class="ttdoc">Return current context. </div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00139">CxtStmt.h:139</a></div></div>
126
126
  <div class="ttc" id="classSVF_1_1MHP_html_a68a2ad4480af7d40bd604d81afbc3d0b"><div class="ttname"><a href="classSVF_1_1MHP.html#a68a2ad4480af7d40bd604d81afbc3d0b">SVF::MHP::pushCxt</a></div><div class="ttdeci">void pushCxt(CallStrCxt &amp;cxt, const SVFInstruction *call, const SVFFunction *callee)</div><div class="ttdoc">Push calling context. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00222">MHP.h:222</a></div></div>
127
- <div class="ttc" id="classSVF_1_1SVFFunction_html_a61505b528343c7d728eba3a705930a16"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#a61505b528343c7d728eba3a705930a16">SVF::SVFFunction::getExitBlocksOfLoop</a></div><div class="ttdeci">void getExitBlocksOfLoop(const SVFBasicBlock *bb, BBList &amp;exitbbs) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00428">SVFValue.h:428</a></div></div>
127
+ <div class="ttc" id="classSVF_1_1SVFFunction_html_a61505b528343c7d728eba3a705930a16"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#a61505b528343c7d728eba3a705930a16">SVF::SVFFunction::getExitBlocksOfLoop</a></div><div class="ttdeci">void getExitBlocksOfLoop(const SVFBasicBlock *bb, BBList &amp;exitbbs) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00419">SVFValue.h:419</a></div></div>
128
128
  <div class="ttc" id="namespaceSVF_html_a8234d4b959abc9123993bcff4eee34c1"><div class="ttname"><a href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">SVF::Map</a></div><div class="ttdeci">std::unordered_map&lt; Key, Value, Hash, KeyEqual, Allocator &gt; Map</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00099">SVFType.h:99</a></div></div>
129
- <div class="ttc" id="classSVF_1_1GenericGraph_html_a5dfa3f178d4abf37177d0d74ff4c6a97"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a5dfa3f178d4abf37177d0d74ff4c6a97">SVF::GenericGraph::const_iterator</a></div><div class="ttdeci">IDToNodeMapTy::const_iterator const_iterator</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00345">GenericGraph.h:345</a></div></div>
129
+ <div class="ttc" id="classSVF_1_1GenericGraph_html_a5dfa3f178d4abf37177d0d74ff4c6a97"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a5dfa3f178d4abf37177d0d74ff4c6a97">SVF::GenericGraph::const_iterator</a></div><div class="ttdeci">IDToNodeMapTy::const_iterator const_iterator</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00347">GenericGraph.h:347</a></div></div>
130
130
  <div class="ttc" id="classSVF_1_1MHP_html_a3dc4c80d60039ce5f73583ce32784d82"><div class="ttname"><a href="classSVF_1_1MHP.html#a3dc4c80d60039ce5f73583ce32784d82">SVF::MHP::matchCxt</a></div><div class="ttdeci">bool matchCxt(CallStrCxt &amp;cxt, const SVFInstruction *call, const SVFFunction *callee)</div><div class="ttdoc">Match context. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00227">MHP.h:227</a></div></div>
131
131
  <div class="ttc" id="classSVF_1_1MHP_html_ad8930750fd4316003686b215ace46525"><div class="ttname"><a href="classSVF_1_1MHP.html#ad8930750fd4316003686b215ace46525">SVF::MHP::FuncPair</a></div><div class="ttdeci">std::pair&lt; const SVFFunction *, const SVFFunction * &gt; FuncPair</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00060">MHP.h:60</a></div></div>
132
132
  <div class="ttc" id="classSVF_1_1ThreadCallGraph_html_a37f2e076713a9aeb0e4313fb05dfb92e"><div class="ttname"><a href="classSVF_1_1ThreadCallGraph.html#a37f2e076713a9aeb0e4313fb05dfb92e">SVF::ThreadCallGraph::forksitesBegin</a></div><div class="ttdeci">CallSiteSet::const_iterator forksitesBegin() const</div><div class="ttdoc">Fork sites iterators. </div><div class="ttdef"><b>Definition:</b> <a href="ThreadCallGraph_8h_source.html#l00273">ThreadCallGraph.h:273</a></div></div>
133
133
  <div class="ttc" id="classSVF_1_1MHP_html_ab8bd382e0c70b0feb2a291ecc4043106"><div class="ttname"><a href="classSVF_1_1MHP.html#ab8bd382e0c70b0feb2a291ecc4043106">SVF::MHP::numOfMHPQueries</a></div><div class="ttdeci">u32_t numOfMHPQueries</div><div class="ttdoc">Number of queries are answered as may-happen-in-parallel. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00278">MHP.h:278</a></div></div>
134
134
  <div class="ttc" id="classSVF_1_1FIFOWorkList_html_a0df409a67428e528321869d201f2a474"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html#a0df409a67428e528321869d201f2a474">SVF::FIFOWorkList::push</a></div><div class="ttdeci">bool push(const Data &amp;data)</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00165">WorkList.h:165</a></div></div>
135
- <div class="ttc" id="classSVF_1_1SVFFunction_html_a793f485e92d12cf407f2ffa41861eb3d"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#a793f485e92d12cf407f2ffa41861eb3d">SVF::SVFFunction::getEntryBlock</a></div><div class="ttdeci">const SVFBasicBlock * getEntryBlock() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00376">SVFValue.h:376</a></div></div>
135
+ <div class="ttc" id="classSVF_1_1SVFFunction_html_a793f485e92d12cf407f2ffa41861eb3d"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#a793f485e92d12cf407f2ffa41861eb3d">SVF::SVFFunction::getEntryBlock</a></div><div class="ttdeci">const SVFBasicBlock * getEntryBlock() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00367">SVFValue.h:367</a></div></div>
136
136
  <div class="ttc" id="classSVF_1_1MHP_html_a843f1fa52625ec9e844307ba51fec202"><div class="ttname"><a href="classSVF_1_1MHP.html#a843f1fa52625ec9e844307ba51fec202">SVF::MHP::mayHappenInParallelCache</a></div><div class="ttdeci">virtual bool mayHappenInParallelCache(const SVFInstruction *i1, const SVFInstruction *i2)</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l00592">MHP.cpp:592</a></div></div>
137
137
  <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a34ec31a6859cd94b525bfa26e549d8c1"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a34ec31a6859cd94b525bfa26e549d8c1">SVF::ForkJoinAnalysis::getDirAndIndJoinedTid</a></div><div class="ttdeci">NodeBS getDirAndIndJoinedTid(const CxtStmt &amp;cs)</div><div class="ttdoc">Get directly and indirectly joined threadIDs based on a context-sensitive join site. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l00966">MHP.cpp:966</a></div></div>
138
138
  <div class="ttc" id="classSVF_1_1TCT_html_a7b4ad0b052e1f8b6869733eef15f4e4d"><div class="ttname"><a href="classSVF_1_1TCT.html#a7b4ad0b052e1f8b6869733eef15f4e4d">SVF::TCT::getTCTNode</a></div><div class="ttdeci">TCTNode * getTCTNode(NodeID id) const</div><div class="ttdoc">Get TCT node. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00192">TCT.h:192</a></div></div>
139
139
  <div class="ttc" id="classSVF_1_1TCTNode_html_a21591b19f6a9267151c31178f9543ee6"><div class="ttname"><a href="classSVF_1_1TCTNode.html#a21591b19f6a9267151c31178f9543ee6">SVF::TCTNode::getCxtThread</a></div><div class="ttdeci">const CxtThread &amp; getCxtThread() const</div><div class="ttdoc">Get CxtThread. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00101">TCT.h:101</a></div></div>
140
- <div class="ttc" id="classSVF_1_1GenericGraph_html_a4bef15157423cef48dc7333a803cd27d"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">SVF::GenericGraph::end</a></div><div class="ttdeci">iterator end()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00371">GenericGraph.h:371</a></div></div>
140
+ <div class="ttc" id="classSVF_1_1GenericGraph_html_a4bef15157423cef48dc7333a803cd27d"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">SVF::GenericGraph::end</a></div><div class="ttdeci">iterator end()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00373">GenericGraph.h:373</a></div></div>
141
141
  <div class="ttc" id="classSVF_1_1MHP_html_a2c1e4fac7b810021939ed26307d37816"><div class="ttname"><a href="classSVF_1_1MHP.html#a2c1e4fac7b810021939ed26307d37816">SVF::MHP::handleNonCandidateFun</a></div><div class="ttdeci">void handleNonCandidateFun(const CxtThreadStmt &amp;cts)</div><div class="ttdoc">Handle non-candidate function. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l00184">MHP.cpp:184</a></div></div>
142
142
  <div class="ttc" id="namespaceSVF_html_ab700523619b089b952498f39a7f5b6b1"><div class="ttname"><a href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">SVF::CallStrCxt</a></div><div class="ttdeci">std::vector&lt; u32_t &gt; CallStrCxt</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00119">SVFType.h:119</a></div></div>
143
143
  <div class="ttc" id="classSVF_1_1SVFModule_html_abbaf48d9702ec1f38dc6ae137ca630a1"><div class="ttname"><a href="classSVF_1_1SVFModule.html#abbaf48d9702ec1f38dc6ae137ca630a1">SVF::SVFModule::getFunctionSet</a></div><div class="ttdeci">const FunctionSetType &amp; getFunctionSet() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00209">SVFModule.h:209</a></div></div>
@@ -149,7 +149,7 @@ $(function() {
149
149
  <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_ae4d0ee03b30220793d24f814e75a440e"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#ae4d0ee03b30220793d24f814e75a440e">SVF::ForkJoinAnalysis::handleJoin</a></div><div class="ttdeci">void handleJoin(const CxtStmt &amp;cts, NodeID rootTid)</div><div class="ttdoc">Handle join. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l00814">MHP.cpp:814</a></div></div>
150
150
  <div class="ttc" id="classSVF_1_1MHP_html_ac10a8f3a4b09dc257be9edabccea3fbb"><div class="ttname"><a href="classSVF_1_1MHP.html#ac10a8f3a4b09dc257be9edabccea3fbb">SVF::MHP::executedByTheSameThread</a></div><div class="ttdeci">virtual bool executedByTheSameThread(const SVFInstruction *i1, const SVFInstruction *i2)</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l00626">MHP.cpp:626</a></div></div>
151
151
  <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a159bbd4352fcffa93c97281ab9d229b1"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a159bbd4352fcffa93c97281ab9d229b1">SVF::ForkJoinAnalysis::LoopBBs</a></div><div class="ttdeci">SVFLoopAndDomInfo::LoopBBs LoopBBs</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00300">MHP.h:300</a></div></div>
152
- <div class="ttc" id="classSVF_1_1SVFValue_html_aa678ca4616a3e69b53726b33d0b9c5a2"><div class="ttname"><a href="classSVF_1_1SVFValue.html#aa678ca4616a3e69b53726b33d0b9c5a2">SVF::SVFValue::toString</a></div><div class="ttdeci">virtual const std::string toString() const</div><div class="ttdoc">Needs to be implemented by a specific SVF front end (e.g., the implementation in LLVMUtil) ...</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00641">LLVMUtil.cpp:641</a></div></div>
152
+ <div class="ttc" id="classSVF_1_1SVFValue_html_aa678ca4616a3e69b53726b33d0b9c5a2"><div class="ttname"><a href="classSVF_1_1SVFValue.html#aa678ca4616a3e69b53726b33d0b9c5a2">SVF::SVFValue::toString</a></div><div class="ttdeci">virtual const std::string toString() const</div><div class="ttdoc">Needs to be implemented by a specific SVF front end (e.g., the implementation in LLVMUtil) ...</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00681">LLVMUtil.cpp:681</a></div></div>
153
153
  <div class="ttc" id="classSVF_1_1MHP_html_af769afe6ba6baccda5a497df181c9fb0"><div class="ttname"><a href="classSVF_1_1MHP.html#af769afe6ba6baccda5a497df181c9fb0">SVF::MHP::handleCall</a></div><div class="ttdeci">void handleCall(const CxtThreadStmt &amp;cts, NodeID rootTid)</div><div class="ttdoc">Handle call. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l00292">MHP.cpp:292</a></div></div>
154
154
  <div class="ttc" id="classSVF_1_1CxtStmt_html_a0b593c4ba425937212e2889e64ce4791"><div class="ttname"><a href="classSVF_1_1CxtStmt.html#a0b593c4ba425937212e2889e64ce4791">SVF::CxtStmt::getStmt</a></div><div class="ttdeci">const SVFInstruction * getStmt() const</div><div class="ttdoc">Return current statement. </div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00062">CxtStmt.h:62</a></div></div>
155
155
  <div class="ttc" id="classSVF_1_1MHP_html_abf1f5a7c365dfb95b42015b7b2ad6fbe"><div class="ttname"><a href="classSVF_1_1MHP.html#abf1f5a7c365dfb95b42015b7b2ad6fbe">SVF::MHP::MHP</a></div><div class="ttdeci">MHP(TCT *t)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l00044">MHP.cpp:44</a></div></div>
@@ -159,7 +159,7 @@ $(function() {
159
159
  <div class="ttc" id="classSVF_1_1TCT_html_af47837e30a80e8d6684f3ee6001afb7a"><div class="ttname"><a href="classSVF_1_1TCT.html#af47837e30a80e8d6684f3ee6001afb7a">SVF::TCT::getChildrenEnd</a></div><div class="ttdeci">ThreadCreateEdgeSet::const_iterator getChildrenEnd(const TCTNode *node) const</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00207">TCT.h:207</a></div></div>
160
160
  <div class="ttc" id="classSVF_1_1MHP_html_a23ab5a03b7c00ba0ebac65568a83a5cc"><div class="ttname"><a href="classSVF_1_1MHP.html#a23ab5a03b7c00ba0ebac65568a83a5cc">SVF::MHP::updateSiblingThreads</a></div><div class="ttdeci">void updateSiblingThreads(NodeID tid)</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l00411">MHP.cpp:411</a></div></div>
161
161
  <div class="ttc" id="classSVF_1_1ThreadCallGraph_html_a98ecfe14be2d38d292b5919716cdd29d"><div class="ttname"><a href="classSVF_1_1ThreadCallGraph.html#a98ecfe14be2d38d292b5919716cdd29d">SVF::ThreadCallGraph::joinsitesBegin</a></div><div class="ttdeci">CallSiteSet::const_iterator joinsitesBegin() const</div><div class="ttdoc">Join sites iterators. </div><div class="ttdef"><b>Definition:</b> <a href="ThreadCallGraph_8h_source.html#l00285">ThreadCallGraph.h:285</a></div></div>
162
- <div class="ttc" id="classSVF_1_1GenericNode_html_afe6a7b286d9af4992f41b59612fd2900"><div class="ttname"><a href="classSVF_1_1GenericNode.html#afe6a7b286d9af4992f41b59612fd2900">SVF::GenericNode::InEdgeEnd</a></div><div class="ttdeci">iterator InEdgeEnd()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00218">GenericGraph.h:218</a></div></div>
162
+ <div class="ttc" id="classSVF_1_1GenericNode_html_afe6a7b286d9af4992f41b59612fd2900"><div class="ttname"><a href="classSVF_1_1GenericNode.html#afe6a7b286d9af4992f41b59612fd2900">SVF::GenericNode::InEdgeEnd</a></div><div class="ttdeci">iterator InEdgeEnd()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00220">GenericGraph.h:220</a></div></div>
163
163
  <div class="ttc" id="classSVF_1_1MHP_html_a90c228214643bb6d37bacffc35b99a3e"><div class="ttname"><a href="classSVF_1_1MHP.html#a90c228214643bb6d37bacffc35b99a3e">SVF::MHP::isConnectedfromMain</a></div><div class="ttdeci">bool isConnectedfromMain(const SVFFunction *fun)</div><div class="ttdoc">Whether the function is connected from main function in thread call graph. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l00519">MHP.cpp:519</a></div></div>
164
164
  <div class="ttc" id="classSVF_1_1Options_html_aa3e6c78eb346a52bbaaac2610573604a"><div class="ttname"><a href="classSVF_1_1Options.html#aa3e6c78eb346a52bbaaac2610573604a">SVF::Options::PrintInterLev</a></div><div class="ttdeci">static const llvm::cl::opt&lt; bool &gt; PrintInterLev</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00175">Options.h:175</a></div></div>
165
165
  <div class="ttc" id="classSVF_1_1PTACallGraphNode_html_adf17f5699c9f40ffc8837e813e3af3ec"><div class="ttname"><a href="classSVF_1_1PTACallGraphNode.html#adf17f5699c9f40ffc8837e813e3af3ec">SVF::PTACallGraphNode::const_iterator</a></div><div class="ttdeci">PTACallGraphEdge::CallGraphEdgeSet::const_iterator const_iterator</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00180">PTACallGraph.h:180</a></div></div>
@@ -170,7 +170,7 @@ $(function() {
170
170
  <div class="ttc" id="classSVF_1_1SVFStat_html_ac9d390c417df6f6af6b274618b87010d"><div class="ttname"><a href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">SVF::SVFStat::getClk</a></div><div class="ttdeci">static double getClk(bool mark=false)</div><div class="ttdef"><b>Definition:</b> <a href="SVFStat_8cpp_source.html#l00047">SVFStat.cpp:47</a></div></div>
171
171
  <div class="ttc" id="classSVF_1_1TCT_html_aabc2c84e951ed9ae64207e379acb3074"><div class="ttname"><a href="classSVF_1_1TCT.html#aabc2c84e951ed9ae64207e379acb3074">SVF::TCT::getSVFModule</a></div><div class="ttdeci">SVFModule * getSVFModule() const</div><div class="ttdoc">Get SVFFModule. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00176">TCT.h:176</a></div></div>
172
172
  <div class="ttc" id="classSVF_1_1MHP_html_a76ac9d388529f090ab6dad5829dd0753"><div class="ttname"><a href="classSVF_1_1MHP.html#a76ac9d388529f090ab6dad5829dd0753">SVF::MHP::handleRet</a></div><div class="ttdeci">void handleRet(const CxtThreadStmt &amp;cts)</div><div class="ttdoc">Handle return. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l00319">MHP.cpp:319</a></div></div>
173
- <div class="ttc" id="classSVF_1_1SVFInstruction_html_aef7ad257ea809101df33779463907f3e"><div class="ttname"><a href="classSVF_1_1SVFInstruction.html#aef7ad257ea809101df33779463907f3e">SVF::SVFInstruction::getFunction</a></div><div class="ttdeci">const SVFFunction * getFunction() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00628">SVFValue.h:628</a></div></div>
173
+ <div class="ttc" id="classSVF_1_1SVFInstruction_html_aef7ad257ea809101df33779463907f3e"><div class="ttname"><a href="classSVF_1_1SVFInstruction.html#aef7ad257ea809101df33779463907f3e">SVF::SVFInstruction::getFunction</a></div><div class="ttdeci">const SVFFunction * getFunction() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00619">SVFValue.h:619</a></div></div>
174
174
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_afdc3358522417de9a0d3a181a329f722"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#afdc3358522417de9a0d3a181a329f722">SVF::SVFUtil::isCallSite</a></div><div class="ttdeci">bool isCallSite(const SVFInstruction *inst)</div><div class="ttdoc">Whether an instruction is a call or invoke instruction. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00172">SVFUtil.h:172</a></div></div>
175
175
  <div class="ttc" id="classSVF_1_1TCT_html_a60e63f6ddfe78c4cf4fd3a70875b727f"><div class="ttname"><a href="classSVF_1_1TCT.html#a60e63f6ddfe78c4cf4fd3a70875b727f">SVF::TCT::getSiblingThread</a></div><div class="ttdeci">const NodeBS getSiblingThread(NodeID tid) const</div><div class="ttdoc">Get sibling threads. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00323">TCT.h:323</a></div></div>
176
176
  <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_abbff6ea064e7241315932db77dccaad9"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#abbff6ea064e7241315932db77dccaad9">SVF::ForkJoinAnalysis::isSameSCEV</a></div><div class="ttdeci">bool isSameSCEV(const SVFInstruction *forkSite, const SVFInstruction *joinSite)</div><div class="ttdoc">Return true if the fork and join have the same SCEV. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l01041">MHP.cpp:1041</a></div></div>
@@ -181,12 +181,12 @@ $(function() {
181
181
  <div class="ttc" id="classSVF_1_1CxtStmt_html"><div class="ttname"><a href="classSVF_1_1CxtStmt.html">SVF::CxtStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00041">CxtStmt.h:41</a></div></div>
182
182
  <div class="ttc" id="classSVF_1_1MHP_html_afcfc409e625b74cbefd240170627c541"><div class="ttname"><a href="classSVF_1_1MHP.html#afcfc409e625b74cbefd240170627c541">SVF::MHP::threadStmtToTheadInterLeav</a></div><div class="ttdeci">ThreadStmtToThreadInterleav threadStmtToTheadInterLeav</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00271">MHP.h:271</a></div></div>
183
183
  <div class="ttc" id="classSVF_1_1MHP_html_a0356a8ccc53999549fb369f67faad306"><div class="ttname"><a href="classSVF_1_1MHP.html#a0356a8ccc53999549fb369f67faad306">SVF::MHP::isRecurFullJoin</a></div><div class="ttdeci">bool isRecurFullJoin(NodeID parentTid, NodeID curTid)</div><div class="ttdoc">Thread curTid can be fully joined by parentTid recurively. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l00440">MHP.cpp:440</a></div></div>
184
- <div class="ttc" id="classSVF_1_1SVFBasicBlock_html_ad05f85ce931d4479f71d1947a25599dc"><div class="ttname"><a href="classSVF_1_1SVFBasicBlock.html#ad05f85ce931d4479f71d1947a25599dc">SVF::SVFBasicBlock::back</a></div><div class="ttdeci">const SVFInstruction * back() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00551">SVFValue.h:551</a></div></div>
184
+ <div class="ttc" id="classSVF_1_1SVFBasicBlock_html_ad05f85ce931d4479f71d1947a25599dc"><div class="ttname"><a href="classSVF_1_1SVFBasicBlock.html#ad05f85ce931d4479f71d1947a25599dc">SVF::SVFBasicBlock::back</a></div><div class="ttdeci">const SVFInstruction * back() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00542">SVFValue.h:542</a></div></div>
185
185
  <div class="ttc" id="Options_8h_html"><div class="ttname"><a href="Options_8h.html">Options.h</a></div></div>
186
186
  <div class="ttc" id="classSVF_1_1TCT_html_aa69b82c888c8193e97f9e95c62ac99d4"><div class="ttname"><a href="classSVF_1_1TCT.html#aa69b82c888c8193e97f9e95c62ac99d4">SVF::TCT::isCandidateFun</a></div><div class="ttdeci">bool isCandidateFun(const PTACallGraph::FunctionSet &amp;callees) const</div><div class="ttdoc">Whether it is a candidate function for indirect call. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00264">TCT.h:264</a></div></div>
187
- <div class="ttc" id="classSVF_1_1SVFBasicBlock_html_af48d08d3adf7dd3ed69d97e4df360059"><div class="ttname"><a href="classSVF_1_1SVFBasicBlock.html#af48d08d3adf7dd3ed69d97e4df360059">SVF::SVFBasicBlock::getParent</a></div><div class="ttdeci">const SVFFunction * getParent() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00536">SVFValue.h:536</a></div></div>
187
+ <div class="ttc" id="classSVF_1_1SVFBasicBlock_html_af48d08d3adf7dd3ed69d97e4df360059"><div class="ttname"><a href="classSVF_1_1SVFBasicBlock.html#af48d08d3adf7dd3ed69d97e4df360059">SVF::SVFBasicBlock::getParent</a></div><div class="ttdeci">const SVFFunction * getParent() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00527">SVFValue.h:527</a></div></div>
188
188
  <div class="ttc" id="classSVF_1_1TCT_html_a516578af1f8666ff672e6611e61d7152"><div class="ttname"><a href="classSVF_1_1TCT.html#a516578af1f8666ff672e6611e61d7152">SVF::TCT::getParentThread</a></div><div class="ttdeci">NodeID getParentThread(NodeID tid) const</div><div class="ttdoc">Get parent thread. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00293">TCT.h:293</a></div></div>
189
- <div class="ttc" id="classSVF_1_1SVFBasicBlock_html_a7bde256bc906af7f7204929019f4a33e"><div class="ttname"><a href="classSVF_1_1SVFBasicBlock.html#a7bde256bc906af7f7204929019f4a33e">SVF::SVFBasicBlock::front</a></div><div class="ttdeci">const SVFInstruction * front() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00546">SVFValue.h:546</a></div></div>
189
+ <div class="ttc" id="classSVF_1_1SVFBasicBlock_html_a7bde256bc906af7f7204929019f4a33e"><div class="ttname"><a href="classSVF_1_1SVFBasicBlock.html#a7bde256bc906af7f7204929019f4a33e">SVF::SVFBasicBlock::front</a></div><div class="ttdeci">const SVFInstruction * front() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00537">SVFValue.h:537</a></div></div>
190
190
  <div class="ttc" id="classSVF_1_1PTACallGraph_html_a170a33ac22673dfd363c3e3b96987737"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#a170a33ac22673dfd363c3e3b96987737">SVF::PTACallGraph::getCallEdgeEnd</a></div><div class="ttdeci">CallGraphEdgeSet::const_iterator getCallEdgeEnd(const CallICFGNode *inst) const</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00408">PTACallGraph.h:408</a></div></div>
191
191
  <div class="ttc" id="classSVF_1_1MHP_html_a7af8320c524acaf3cf004ff37f9b4e42"><div class="ttname"><a href="classSVF_1_1MHP.html#a7af8320c524acaf3cf004ff37f9b4e42">SVF::MHP::isTDFork</a></div><div class="ttdeci">bool isTDFork(const SVFInstruction *call)</div><div class="ttdoc">Whether it is a fork site. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00245">MHP.h:245</a></div></div>
192
192
  <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a28e50b1ffdcdaba57d3515a5f6410c86"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a28e50b1ffdcdaba57d3515a5f6410c86">SVF::ForkJoinAnalysis::sameLoopTripCount</a></div><div class="ttdeci">bool sameLoopTripCount(const SVFInstruction *forkSite, const SVFInstruction *joinSite)</div><div class="ttdoc">Same loop trip count. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l01065">MHP.cpp:1065</a></div></div>
@@ -209,21 +209,21 @@ $(function() {
209
209
  <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a30e5ef1322216857513047d23b525829"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a30e5ef1322216857513047d23b525829">SVF::ForkJoinAnalysis::handleRet</a></div><div class="ttdeci">void handleRet(const CxtStmt &amp;cts)</div><div class="ttdoc">Handle return. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l00903">MHP.cpp:903</a></div></div>
210
210
  <div class="ttc" id="classSVF_1_1PTACallGraph_html_a4ed2fd37007de9c873d5e197a0b3bd4e"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#a4ed2fd37007de9c873d5e197a0b3bd4e">SVF::PTACallGraph::getCallEdgeBegin</a></div><div class="ttdeci">CallGraphEdgeSet::const_iterator getCallEdgeBegin(const CallICFGNode *inst) const</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00401">PTACallGraph.h:401</a></div></div>
211
211
  <div class="ttc" id="classSVF_1_1ThreadCallGraph_html_a50502f398e5eac9c6da3e26ea6052057"><div class="ttname"><a href="classSVF_1_1ThreadCallGraph.html#a50502f398e5eac9c6da3e26ea6052057">SVF::ThreadCallGraph::joinsitesEnd</a></div><div class="ttdeci">CallSiteSet::const_iterator joinsitesEnd() const</div><div class="ttdef"><b>Definition:</b> <a href="ThreadCallGraph_8h_source.html#l00289">ThreadCallGraph.h:289</a></div></div>
212
- <div class="ttc" id="classSVF_1_1GenericNode_html_ac3e55ef37aefb411ea4c87b1aa3b1895"><div class="ttname"><a href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">SVF::GenericNode::getId</a></div><div class="ttdeci">NodeID getId() const</div><div class="ttdoc">Get ID. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00169">GenericGraph.h:169</a></div></div>
212
+ <div class="ttc" id="classSVF_1_1GenericNode_html_ac3e55ef37aefb411ea4c87b1aa3b1895"><div class="ttname"><a href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">SVF::GenericNode::getId</a></div><div class="ttdeci">NodeID getId() const</div><div class="ttdoc">Get ID. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00171">GenericGraph.h:171</a></div></div>
213
213
  <div class="ttc" id="classSVF_1_1MHP_html_a3a535274cd3349a05eeccf3c9231396a"><div class="ttname"><a href="classSVF_1_1MHP.html#a3a535274cd3349a05eeccf3c9231396a">SVF::MHP::handleJoin</a></div><div class="ttdeci">void handleJoin(const CxtThreadStmt &amp;cts, NodeID rootTid)</div><div class="ttdoc">Handle join. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l00236">MHP.cpp:236</a></div></div>
214
214
  <div class="ttc" id="MTA_8h_html"><div class="ttname"><a href="MTA_8h.html">MTA.h</a></div></div>
215
215
  <div class="ttc" id="classSVF_1_1MHP_html_a8b80036bab834fa104f64bd3ed3ac667"><div class="ttname"><a href="classSVF_1_1MHP.html#a8b80036bab834fa104f64bd3ed3ac667">SVF::MHP::getJoinInSymmetricLoop</a></div><div class="ttdeci">const LoopBBs &amp; getJoinInSymmetricLoop(const CallStrCxt &amp;cxt, const SVFInstruction *call) const</div><div class="ttdoc">Whether a context-sensitive join satisfies symmetric loop pattern. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l00502">MHP.cpp:502</a></div></div>
216
216
  <div class="ttc" id="classSVF_1_1SparseBitVector_html_a61bd86909a141f9de873d92c0f904832"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html#a61bd86909a141f9de873d92c0f904832">SVF::SparseBitVector::set</a></div><div class="ttdeci">void set(unsigned Idx)</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l00747">SparseBitVector.h:747</a></div></div>
217
217
  <div class="ttc" id="classSVF_1_1MHP_html_ae9423c868ba4d26337428b96db9fc77b"><div class="ttname"><a href="classSVF_1_1MHP.html#ae9423c868ba4d26337428b96db9fc77b">SVF::MHP::updateAncestorThreads</a></div><div class="ttdeci">void updateAncestorThreads(NodeID tid)</div><div class="ttdoc">Update Ancestor and sibling threads. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l00377">MHP.cpp:377</a></div></div>
218
218
  <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a731ece7e21bfa2b08ae16780b55f9f5f"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a731ece7e21bfa2b08ae16780b55f9f5f">SVF::ForkJoinAnalysis::collectSCEVInfo</a></div><div class="ttdeci">void collectSCEVInfo()</div><div class="ttdoc">functions </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l00673">MHP.cpp:673</a></div></div>
219
- <div class="ttc" id="classSVF_1_1SVFInstruction_html_a454f676881eecf4b7399649a81180b5d"><div class="ttname"><a href="classSVF_1_1SVFInstruction.html#a454f676881eecf4b7399649a81180b5d">SVF::SVFInstruction::isRetInst</a></div><div class="ttdeci">bool isRetInst() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00638">SVFValue.h:638</a></div></div>
219
+ <div class="ttc" id="classSVF_1_1SVFInstruction_html_a454f676881eecf4b7399649a81180b5d"><div class="ttname"><a href="classSVF_1_1SVFInstruction.html#a454f676881eecf4b7399649a81180b5d">SVF::SVFInstruction::isRetInst</a></div><div class="ttdeci">bool isRetInst() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00629">SVFValue.h:629</a></div></div>
220
220
  <div class="ttc" id="classSVF_1_1PTACallGraph_html_af8df9ca6d906453fa3f7168aa84fd087"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#af8df9ca6d906453fa3f7168aa84fd087">SVF::PTACallGraph::hasCallGraphEdge</a></div><div class="ttdeci">bool hasCallGraphEdge(const CallICFGNode *inst) const</div><div class="ttdoc">Get call graph edge via call instruction. </div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00397">PTACallGraph.h:397</a></div></div>
221
- <div class="ttc" id="classSVF_1_1SVFBasicBlock_html"><div class="ttname"><a href="classSVF_1_1SVFBasicBlock.html">SVF::SVFBasicBlock</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00480">SVFValue.h:480</a></div></div>
221
+ <div class="ttc" id="classSVF_1_1SVFBasicBlock_html"><div class="ttname"><a href="classSVF_1_1SVFBasicBlock.html">SVF::SVFBasicBlock</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00471">SVFValue.h:471</a></div></div>
222
222
  <div class="ttc" id="LockAnalysis_8h_html"><div class="ttname"><a href="LockAnalysis_8h.html">LockAnalysis.h</a></div></div>
223
223
  <div class="ttc" id="classSVF_1_1MHP_html_a98857a1837cef5519c938d07bb771a60"><div class="ttname"><a href="classSVF_1_1MHP.html#a98857a1837cef5519c938d07bb771a60">SVF::MHP::fja</a></div><div class="ttdeci">ForkJoinAnalysis * fja</div><div class="ttdoc">ForJoin Analysis. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00269">MHP.h:269</a></div></div>
224
224
  <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>
225
225
  <div class="ttc" id="classSVF_1_1MHP_html_a28031502c4f8f0d4012c0827c57efb32"><div class="ttname"><a href="classSVF_1_1MHP.html#a28031502c4f8f0d4012c0827c57efb32">SVF::MHP::CxtThreadStmtSet</a></div><div class="ttdeci">Set&lt; CxtThreadStmt &gt; CxtThreadStmtSet</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00053">MHP.h:53</a></div></div>
226
- <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#l00210">GenericGraph.h:210</a></div></div>
226
+ <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#l00212">GenericGraph.h:212</a></div></div>
227
227
  <div class="ttc" id="classSVF_1_1CxtStmt_html_a56e2767c327a383db09dca96edb19614"><div class="ttname"><a href="classSVF_1_1CxtStmt.html#a56e2767c327a383db09dca96edb19614">SVF::CxtStmt::dump</a></div><div class="ttdeci">void dump() const</div><div class="ttdoc">Dump CxtStmt. </div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00109">CxtStmt.h:109</a></div></div>
228
228
  <div class="ttc" id="classSVF_1_1MHP_html_a176eefb65e4ba99ee70513c8add44176"><div class="ttname"><a href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">SVF::MHP::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdoc">TCT. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00268">MHP.h:268</a></div></div>
229
229
  <div class="ttc" id="classSVF_1_1MHP_html_a02b4ab18067c9b911b4bd53f0426aec3"><div class="ttname"><a href="classSVF_1_1MHP.html#a02b4ab18067c9b911b4bd53f0426aec3">SVF::MHP::rmInterleavingThread</a></div><div class="ttdeci">void rmInterleavingThread(const CxtThreadStmt &amp;tgr, const NodeBS &amp;tids, const SVFInstruction *joinsite)</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00189">MHP.h:189</a></div></div>