svf-tools 1.0.558 → 1.0.561

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 (327) hide show
  1. package/README.md +1 -1
  2. package/SVF-doxygen/html/html/AbstractPointsToDS_8h_source.html +43 -43
  3. package/SVF-doxygen/html/html/AndersenPWC_8h_source.html +2 -2
  4. package/SVF-doxygen/html/html/AndersenSCD_8cpp_source.html +1 -1
  5. package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +16 -16
  6. package/SVF-doxygen/html/html/AndersenWaveDiff_8cpp_source.html +2 -2
  7. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +18 -18
  8. package/SVF-doxygen/html/html/Andersen_8h_source.html +56 -56
  9. package/SVF-doxygen/html/html/CFLGrammar_8txt.html +8 -8
  10. package/SVF-doxygen/html/html/CFLGraphBuilder_8cpp_source.html +10 -1
  11. package/SVF-doxygen/html/html/CFLGraphBuilder_8h_source.html +3 -1
  12. package/SVF-doxygen/html/html/ConditionalPT_8h_source.html +1 -1
  13. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +44 -44
  14. package/SVF-doxygen/html/html/ContextDDA_8h_source.html +43 -43
  15. package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +12 -12
  16. package/SVF-doxygen/html/html/DDAClient_8h_source.html +36 -36
  17. package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +19 -19
  18. package/SVF-doxygen/html/html/DDAPass_8h_source.html +21 -21
  19. package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +51 -51
  20. package/SVF-doxygen/html/html/DDAStat_8h_source.html +51 -51
  21. package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +111 -111
  22. package/SVF-doxygen/html/html/DoubleFreeChecker_8cpp_source.html +2 -2
  23. package/SVF-doxygen/html/html/DoubleFreeChecker_8h_source.html +2 -2
  24. package/SVF-doxygen/html/html/ExtAPI_8cpp_source.html +5 -2
  25. package/SVF-doxygen/html/html/ExtAPI_8h_source.html +3 -2
  26. package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +40 -40
  27. package/SVF-doxygen/html/html/FSMPTA_8h_source.html +52 -52
  28. package/SVF-doxygen/html/html/FileChecker_8cpp_source.html +2 -2
  29. package/SVF-doxygen/html/html/FileChecker_8h_source.html +2 -2
  30. package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +2 -2
  31. package/SVF-doxygen/html/html/FlowDDA_8h_source.html +42 -42
  32. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +3 -3
  33. package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +6 -6
  34. package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +4 -4
  35. package/SVF-doxygen/html/html/LeakChecker_8h_source.html +3 -3
  36. package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +1 -1
  37. package/SVF-doxygen/html/html/LocationSet_8h_source.html +1 -1
  38. package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +34 -34
  39. package/SVF-doxygen/html/html/LockAnalysis_8h_source.html +114 -114
  40. package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +2 -2
  41. package/SVF-doxygen/html/html/LockResultValidator_8h_source.html +7 -7
  42. package/SVF-doxygen/html/html/MHP_8cpp.html +2 -2
  43. package/SVF-doxygen/html/html/MHP_8cpp_source.html +94 -94
  44. package/SVF-doxygen/html/html/MHP_8h_source.html +135 -135
  45. package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +6 -6
  46. package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +2 -2
  47. package/SVF-doxygen/html/html/MTAAnnotator_8h_source.html +2 -2
  48. package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +10 -10
  49. package/SVF-doxygen/html/html/MTAResultValidator_8h_source.html +6 -6
  50. package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +33 -33
  51. package/SVF-doxygen/html/html/MTAStat_8h_source.html +14 -14
  52. package/SVF-doxygen/html/html/MTA_8cpp_source.html +28 -28
  53. package/SVF-doxygen/html/html/MTA_8h_source.html +24 -24
  54. package/SVF-doxygen/html/html/MemPartition_8cpp_source.html +6 -6
  55. package/SVF-doxygen/html/html/MemPartition_8h_source.html +4 -4
  56. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +50 -50
  57. package/SVF-doxygen/html/html/MemRegion_8h_source.html +93 -93
  58. package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +59 -59
  59. package/SVF-doxygen/html/html/MemSSA_8h_source.html +103 -103
  60. package/SVF-doxygen/html/html/MutablePointsToDS_8h_source.html +185 -185
  61. package/SVF-doxygen/html/html/PAGBuilderFromFile_8cpp_source.html +1 -1
  62. package/SVF-doxygen/html/html/PAGBuilderFromFile_8h_source.html +1 -1
  63. package/SVF-doxygen/html/html/PCG_8cpp_source.html +14 -14
  64. package/SVF-doxygen/html/html/PCG_8h_source.html +52 -52
  65. package/SVF-doxygen/html/html/PEGGrammar_8txt.html +14 -32
  66. package/SVF-doxygen/html/html/PersistentPointsToCache_8h_source.html +40 -40
  67. package/SVF-doxygen/html/html/PersistentPointsToDS_8h_source.html +181 -181
  68. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +15 -15
  69. package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +30 -30
  70. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +1 -1
  71. package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +1 -1
  72. package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +2 -2
  73. package/SVF-doxygen/html/html/ProgSlice_8h_source.html +60 -60
  74. package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +2 -2
  75. package/SVF-doxygen/html/html/SVFGBuilder_8h_source.html +2 -2
  76. package/SVF-doxygen/html/html/SVFGNode_8h_source.html +1 -1
  77. package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +1 -1
  78. package/SVF-doxygen/html/html/SVFGReadWrite_8cpp_source.html +2 -2
  79. package/SVF-doxygen/html/html/SVFGStat_8cpp_source.html +19 -19
  80. package/SVF-doxygen/html/html/SVFGStat_8h_source.html +1 -1
  81. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +12 -12
  82. package/SVF-doxygen/html/html/SVFG_8h_source.html +5 -5
  83. package/SVF-doxygen/html/html/SVFStatements_8h_source.html +1 -1
  84. package/SVF-doxygen/html/html/SVFUtil_8h_source.html +1 -1
  85. package/SVF-doxygen/html/html/SaberAnnotator_8cpp_source.html +3 -3
  86. package/SVF-doxygen/html/html/SaberAnnotator_8h_source.html +2 -2
  87. package/SVF-doxygen/html/html/SaberCheckerAPI_8cpp_source.html +1 -1
  88. package/SVF-doxygen/html/html/SaberCheckerAPI_8h_source.html +1 -1
  89. package/SVF-doxygen/html/html/SaberCondAllocator_8cpp_source.html +1 -1
  90. package/SVF-doxygen/html/html/SaberCondAllocator_8h_source.html +1 -1
  91. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +3 -3
  92. package/SVF-doxygen/html/html/SaberSVFGBuilder_8h_source.html +1 -1
  93. package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +13 -13
  94. package/SVF-doxygen/html/html/SrcSnkDDA_8h_source.html +66 -66
  95. package/SVF-doxygen/html/html/SrcSnkSolver_8h_source.html +1 -1
  96. package/SVF-doxygen/html/html/Steensgaard_8cpp_source.html +4 -4
  97. package/SVF-doxygen/html/html/Steensgaard_8h_source.html +6 -6
  98. package/SVF-doxygen/html/html/TCT_8cpp_source.html +44 -44
  99. package/SVF-doxygen/html/html/TCT_8h_source.html +93 -93
  100. package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +1 -1
  101. package/SVF-doxygen/html/html/TypeAnalysis_8h_source.html +2 -2
  102. package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +2 -2
  103. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +25 -25
  104. package/SVF-doxygen/html/html/VersionedFlowSensitive_8h_source.html +38 -38
  105. package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +5 -5
  106. package/SVF-doxygen/html/html/WPAStat_8h_source.html +2 -2
  107. package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode.html +2 -2
  108. package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode.html +2 -2
  109. package/SVF-doxygen/html/html/classSVF_1_1AliasCFLGraphBuilder-members.html +13 -10
  110. package/SVF-doxygen/html/html/classSVF_1_1AliasCFLGraphBuilder.html +190 -2
  111. package/SVF-doxygen/html/html/classSVF_1_1AliasDDAClient.html +22 -22
  112. package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +102 -102
  113. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +43 -43
  114. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +20 -20
  115. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +6 -6
  116. package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +16 -16
  117. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +19 -19
  118. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +39 -39
  119. package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.html +1 -1
  120. package/SVF-doxygen/html/html/classSVF_1_1CallCHI.html +2 -2
  121. package/SVF-doxygen/html/html/classSVF_1_1CallMU.html +2 -2
  122. package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +1 -1
  123. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +100 -100
  124. package/SVF-doxygen/html/html/classSVF_1_1DDAClient.html +51 -51
  125. package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +58 -58
  126. package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +165 -165
  127. package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +286 -286
  128. package/SVF-doxygen/html/html/classSVF_1_1DFPTData.html +26 -26
  129. package/SVF-doxygen/html/html/classSVF_1_1DiffPTData.html +11 -11
  130. package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG.html +4 -4
  131. package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker.html +4 -4
  132. package/SVF-doxygen/html/html/classSVF_1_1EntryCHI.html +2 -2
  133. package/SVF-doxygen/html/html/classSVF_1_1ExtAPI-members.html +5 -4
  134. package/SVF-doxygen/html/html/classSVF_1_1ExtAPI.html +40 -5
  135. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +30 -30
  136. package/SVF-doxygen/html/html/classSVF_1_1FileChecker.html +3 -3
  137. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +71 -71
  138. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +7 -7
  139. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +1 -1
  140. package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +218 -218
  141. package/SVF-doxygen/html/html/classSVF_1_1FormalINSVFGNode.html +2 -2
  142. package/SVF-doxygen/html/html/classSVF_1_1FormalOUTSVFGNode.html +2 -2
  143. package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient.html +19 -19
  144. package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG.html +1 -1
  145. package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG.html +7 -7
  146. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +17 -17
  147. package/SVF-doxygen/html/html/classSVF_1_1LoadMU.html +2 -2
  148. package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +334 -334
  149. package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +9 -9
  150. package/SVF-doxygen/html/html/classSVF_1_1MHP.html +246 -246
  151. package/SVF-doxygen/html/html/classSVF_1_1MHPValidator.html +7 -7
  152. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +200 -200
  153. package/SVF-doxygen/html/html/classSVF_1_1MSSACHI.html +2 -2
  154. package/SVF-doxygen/html/html/classSVF_1_1MSSADEF.html +1 -1
  155. package/SVF-doxygen/html/html/classSVF_1_1MSSAMU.html +2 -2
  156. package/SVF-doxygen/html/html/classSVF_1_1MSSAPHI.html +1 -1
  157. package/SVF-doxygen/html/html/classSVF_1_1MSSAPHISVFGNode.html +2 -2
  158. package/SVF-doxygen/html/html/classSVF_1_1MTA.html +53 -53
  159. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +4 -4
  160. package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +22 -22
  161. package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +181 -181
  162. package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +44 -44
  163. package/SVF-doxygen/html/html/classSVF_1_1MemRegion.html +23 -23
  164. package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +267 -267
  165. package/SVF-doxygen/html/html/classSVF_1_1MemSSAStat.html +18 -18
  166. package/SVF-doxygen/html/html/classSVF_1_1MutableDFPTData.html +128 -128
  167. package/SVF-doxygen/html/html/classSVF_1_1MutableDiffPTData.html +55 -55
  168. package/SVF-doxygen/html/html/classSVF_1_1MutableIncDFPTData.html +88 -88
  169. package/SVF-doxygen/html/html/classSVF_1_1MutablePTData.html +78 -78
  170. package/SVF-doxygen/html/html/classSVF_1_1MutableVersionedPTData.html +77 -77
  171. package/SVF-doxygen/html/html/classSVF_1_1PCG.html +131 -131
  172. package/SVF-doxygen/html/html/classSVF_1_1PTData.html +32 -32
  173. package/SVF-doxygen/html/html/classSVF_1_1PersistentDFPTData.html +107 -107
  174. package/SVF-doxygen/html/html/classSVF_1_1PersistentDiffPTData.html +66 -66
  175. package/SVF-doxygen/html/html/classSVF_1_1PersistentIncDFPTData.html +84 -84
  176. package/SVF-doxygen/html/html/classSVF_1_1PersistentPTData.html +77 -77
  177. package/SVF-doxygen/html/html/classSVF_1_1PersistentPointsToCache.html +134 -134
  178. package/SVF-doxygen/html/html/classSVF_1_1PersistentVersionedPTData.html +77 -77
  179. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +3 -3
  180. package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +161 -161
  181. package/SVF-doxygen/html/html/classSVF_1_1RaceValidator.html +7 -7
  182. package/SVF-doxygen/html/html/classSVF_1_1RetMU.html +2 -2
  183. package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +22 -22
  184. package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +4 -4
  185. package/SVF-doxygen/html/html/classSVF_1_1SVFGNodeLockSpan.html +23 -23
  186. package/SVF-doxygen/html/html/classSVF_1_1SaberAnnotator.html +5 -5
  187. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +2 -2
  188. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +157 -157
  189. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard.html +15 -15
  190. package/SVF-doxygen/html/html/classSVF_1_1StoreCHI.html +2 -2
  191. package/SVF-doxygen/html/html/classSVF_1_1TCT.html +264 -264
  192. package/SVF-doxygen/html/html/classSVF_1_1TCTEdge.html +13 -13
  193. package/SVF-doxygen/html/html/classSVF_1_1TCTNode.html +20 -20
  194. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +1 -1
  195. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +100 -100
  196. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +8 -8
  197. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive_1_1SCC.html +1 -1
  198. package/SVF-doxygen/html/html/classSVF_1_1VersionedPTData.html +11 -11
  199. package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +6 -6
  200. package/SVF-doxygen/html/html/dda_8cpp.html +2 -2
  201. package/SVF-doxygen/html/html/dda_8cpp_source.html +2 -2
  202. package/SVF-doxygen/html/html/functions_a.html +11 -5
  203. package/SVF-doxygen/html/html/functions_c.html +21 -18
  204. package/SVF-doxygen/html/html/functions_f.html +6 -6
  205. package/SVF-doxygen/html/html/functions_func.html +16 -10
  206. package/SVF-doxygen/html/html/functions_func_c.html +19 -16
  207. package/SVF-doxygen/html/html/functions_func_i.html +11 -8
  208. package/SVF-doxygen/html/html/functions_i.html +11 -8
  209. package/SVF-doxygen/html/html/functions_l.html +5 -5
  210. package/SVF-doxygen/html/html/functions_p.html +6 -6
  211. package/SVF-doxygen/html/html/functions_r.html +3 -7
  212. package/SVF-doxygen/html/html/functions_s.html +16 -14
  213. package/SVF-doxygen/html/html/functions_v.html +6 -6
  214. package/SVF-doxygen/html/html/functions_w.html +11 -11
  215. package/SVF-doxygen/html/html/globals_g.html +3 -3
  216. package/SVF-doxygen/html/html/globals_v.html +1 -2
  217. package/SVF-doxygen/html/html/globals_vars.html +3 -4
  218. package/SVF-doxygen/html/html/mta_8cpp.html +2 -2
  219. package/SVF-doxygen/html/html/mta_8cpp_source.html +2 -2
  220. package/SVF-doxygen/html/html/namespaceSVF.html +11 -11
  221. package/SVF-doxygen/html/html/search/all_1.js +2 -0
  222. package/SVF-doxygen/html/html/search/all_10.js +5 -5
  223. package/SVF-doxygen/html/html/search/all_11.js +2 -2
  224. package/SVF-doxygen/html/html/search/all_12.js +8 -8
  225. package/SVF-doxygen/html/html/search/all_13.js +2 -2
  226. package/SVF-doxygen/html/html/search/all_14.js +1 -1
  227. package/SVF-doxygen/html/html/search/all_15.js +4 -4
  228. package/SVF-doxygen/html/html/search/all_16.js +2 -2
  229. package/SVF-doxygen/html/html/search/all_3.js +1 -0
  230. package/SVF-doxygen/html/html/search/all_6.js +2 -2
  231. package/SVF-doxygen/html/html/search/all_7.js +2 -2
  232. package/SVF-doxygen/html/html/search/all_9.js +2 -1
  233. package/SVF-doxygen/html/html/search/all_c.js +3 -3
  234. package/SVF-doxygen/html/html/search/all_e.js +2 -2
  235. package/SVF-doxygen/html/html/search/functions_0.js +2 -0
  236. package/SVF-doxygen/html/html/search/functions_2.js +1 -0
  237. package/SVF-doxygen/html/html/search/functions_8.js +1 -0
  238. package/SVF-doxygen/html/html/search/variables_13.js +1 -1
  239. package/SVF-doxygen/html/html/search/variables_14.js +1 -1
  240. package/SVF-doxygen/html/html/search/variables_15.js +1 -1
  241. package/SVF-doxygen/html/html/search/variables_7.js +2 -2
  242. package/SVF-doxygen/html/html/search/variables_e.js +1 -1
  243. package/SVF-doxygen/html/html/structSVF_1_1MemRegion_1_1equalMemRegion.html +3 -3
  244. package/SVF-doxygen/html/html/structSVF_1_1VersionedFlowSensitive_1_1SCC_1_1NodeData.html +4 -4
  245. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01TCT_01_5_01_4.html +15 -15
  246. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1TCTNode_01_5_01_4_01_4.html +1 -1
  247. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1TCTNode_01_5_01_4.html +1 -1
  248. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1TCT_01_5_01_4.html +2 -2
  249. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1SVFGNodeLockSpan_01_4.html +3 -3
  250. package/SVF-doxygen/html/html/svf-ex_8cpp.html +1 -1
  251. package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +1 -1
  252. package/include/CFL/CFLGraphBuilder.h +9 -0
  253. package/include/CFL/PEGGrammar.txt +4 -8
  254. package/include/DDA/ContextDDA.h +29 -0
  255. package/include/DDA/DDAClient.h +23 -0
  256. package/include/DDA/DDAPass.h +22 -0
  257. package/include/DDA/DDAStat.h +22 -0
  258. package/include/DDA/DDAVFSolver.h +22 -0
  259. package/include/DDA/FlowDDA.h +29 -0
  260. package/include/MSSA/MSSAMuChi.h +1 -1
  261. package/include/MSSA/MemPartition.h +1 -1
  262. package/include/MSSA/MemRegion.h +5 -1
  263. package/include/MSSA/MemSSA.h +7 -1
  264. package/include/MSSA/SVFGBuilder.h +1 -1
  265. package/include/MTA/FSMPTA.h +26 -0
  266. package/include/MTA/LockAnalysis.h +22 -0
  267. package/include/MTA/MHP.h +22 -0
  268. package/include/MTA/MTA.h +27 -1
  269. package/include/MTA/MTAStat.h +22 -0
  270. package/include/MTA/PCG.h +22 -0
  271. package/include/MTA/TCT.h +22 -0
  272. package/include/MemoryModel/AbstractPointsToDS.h +34 -0
  273. package/include/MemoryModel/ConditionalPT.h +1 -1
  274. package/include/MemoryModel/LocationSet.h +1 -1
  275. package/include/MemoryModel/MutablePointsToDS.h +32 -0
  276. package/include/MemoryModel/PAGBuilderFromFile.h +2 -2
  277. package/include/MemoryModel/PersistentPointsToCache.h +3 -1
  278. package/include/MemoryModel/PersistentPointsToDS.h +10 -0
  279. package/include/MemoryModel/PointerAnalysis.h +1 -1
  280. package/include/MemoryModel/PointerAnalysisImpl.h +1 -1
  281. package/include/MemoryModel/SVFStatements.h +1 -1
  282. package/include/SABER/DoubleFreeChecker.h +1 -1
  283. package/include/SABER/FileChecker.h +1 -1
  284. package/include/SABER/LeakChecker.h +1 -1
  285. package/include/SABER/ProgSlice.h +8 -1
  286. package/include/SABER/SaberAnnotator.h +1 -1
  287. package/include/SABER/SaberCheckerAPI.h +1 -1
  288. package/include/SABER/SaberCondAllocator.h +1 -1
  289. package/include/SABER/SaberSVFGBuilder.h +1 -1
  290. package/include/SABER/SrcSnkDDA.h +8 -1
  291. package/include/SABER/SrcSnkSolver.h +1 -1
  292. package/include/Util/ExtAPI.h +3 -0
  293. package/include/Util/ExtAPI.json +1456 -44
  294. package/include/WPA/Andersen.h +5 -0
  295. package/include/WPA/TypeAnalysis.h +1 -1
  296. package/include/WPA/VersionedFlowSensitive.h +4 -0
  297. package/lib/CFL/CFLGraphBuilder.cpp +44 -0
  298. package/lib/DDA/ContextDDA.cpp +22 -0
  299. package/lib/DDA/DDAClient.cpp +22 -0
  300. package/lib/DDA/DDAPass.cpp +23 -0
  301. package/lib/DDA/DDAStat.cpp +22 -0
  302. package/lib/DDA/FlowDDA.cpp +22 -0
  303. package/lib/MTA/FSMPTA.cpp +22 -0
  304. package/lib/MTA/LockAnalysis.cpp +22 -0
  305. package/lib/MTA/MHP.cpp +23 -1
  306. package/lib/MTA/MTA.cpp +23 -0
  307. package/lib/MTA/MTAStat.cpp +22 -0
  308. package/lib/MTA/PCG.cpp +22 -0
  309. package/lib/MTA/TCT.cpp +23 -0
  310. package/lib/MemoryModel/LocationSet.cpp +1 -1
  311. package/lib/MemoryModel/PAGBuilderFromFile.cpp +1 -1
  312. package/lib/MemoryModel/PointerAnalysis.cpp +1 -1
  313. package/lib/MemoryModel/PointerAnalysisImpl.cpp +23 -0
  314. package/lib/SABER/DoubleFreeChecker.cpp +1 -1
  315. package/lib/SABER/FileChecker.cpp +1 -1
  316. package/lib/SABER/LeakChecker.cpp +1 -1
  317. package/lib/SABER/ProgSlice.cpp +1 -1
  318. package/lib/SABER/SaberAnnotator.cpp +1 -1
  319. package/lib/SABER/SaberCheckerAPI.cpp +1 -1
  320. package/lib/SABER/SaberCondAllocator.cpp +1 -1
  321. package/lib/SABER/SaberSVFGBuilder.cpp +1 -1
  322. package/lib/SABER/SrcSnkDDA.cpp +1 -1
  323. package/lib/Util/ExtAPI.cpp +42 -4
  324. package/lib/WPA/Steensgaard.cpp +22 -0
  325. package/lib/WPA/TypeAnalysis.cpp +1 -1
  326. package/lib/WPA/WPAPass.cpp +1 -1
  327. package/package.json +1 -1
@@ -262,7 +262,7 @@ Private Attributes</h2></td></tr>
262
262
  </table>
263
263
  <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
264
264
  <div class="textblock">
265
- <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00272">272</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
265
+ <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00294">294</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
266
266
  </div><h2 class="groupheader">Member Typedef Documentation</h2>
267
267
  <a id="acdc652faba35e45820cce0cdd20ea99c"></a>
268
268
  <h2 class="memtitle"><span class="permalink"><a href="#acdc652faba35e45820cce0cdd20ea99c">&#9670;&nbsp;</a></span>CxtStmtToAliveFlagMap</h2>
@@ -276,7 +276,7 @@ Private Attributes</h2></td></tr>
276
276
  </table>
277
277
  </div><div class="memdoc">
278
278
 
279
- <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00285">285</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
279
+ <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00307">307</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
280
280
 
281
281
  </div>
282
282
  </div>
@@ -292,7 +292,7 @@ Private Attributes</h2></td></tr>
292
292
  </table>
293
293
  </div><div class="memdoc">
294
294
 
295
- <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00288">288</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
295
+ <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00310">310</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
296
296
 
297
297
  </div>
298
298
  </div>
@@ -308,7 +308,7 @@ Private Attributes</h2></td></tr>
308
308
  </table>
309
309
  </div><div class="memdoc">
310
310
 
311
- <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00286">286</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
311
+ <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00308">308</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
312
312
 
313
313
  </div>
314
314
  </div>
@@ -324,7 +324,7 @@ Private Attributes</h2></td></tr>
324
324
  </table>
325
325
  </div><div class="memdoc">
326
326
 
327
- <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00289">289</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
327
+ <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00311">311</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
328
328
 
329
329
  </div>
330
330
  </div>
@@ -340,7 +340,7 @@ Private Attributes</h2></td></tr>
340
340
  </table>
341
341
  </div><div class="memdoc">
342
342
 
343
- <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00290">290</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
343
+ <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00312">312</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
344
344
 
345
345
  </div>
346
346
  </div>
@@ -356,7 +356,7 @@ Private Attributes</h2></td></tr>
356
356
  </table>
357
357
  </div><div class="memdoc">
358
358
 
359
- <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00284">284</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
359
+ <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00306">306</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
360
360
 
361
361
  </div>
362
362
  </div>
@@ -372,7 +372,7 @@ Private Attributes</h2></td></tr>
372
372
  </table>
373
373
  </div><div class="memdoc">
374
374
 
375
- <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00287">287</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
375
+ <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00309">309</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
376
376
 
377
377
  </div>
378
378
  </div>
@@ -396,10 +396,10 @@ Private Attributes</h2></td></tr>
396
396
  <tr><td class="fieldname"><a id="a8d40e687caf8999369621ed385dfc631ad5af2a561c196e33d88fc63363d0d8f4"></a>TDDead&#160;</td><td class="fielddoc"></td></tr>
397
397
  </table>
398
398
 
399
- <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00277">277</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
400
- <div class="fragment"><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; {</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631a9d940442c782d5a1297102209540182f">Empty</a>, <span class="comment">// initial(dummy) state</span></div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631a2abecc56b7d5c644f7e14c98d33d0a0a">TDAlive</a>, <span class="comment">// thread is alive</span></div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631ad5af2a561c196e33d88fc63363d0d8f4">TDDead</a>, <span class="comment">// thread is dead</span></div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; };</div><div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a8d40e687caf8999369621ed385dfc631a9d940442c782d5a1297102209540182f"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631a9d940442c782d5a1297102209540182f">SVF::ForkJoinAnalysis::Empty</a></div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00279">MHP.h:279</a></div></div>
401
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a8d40e687caf8999369621ed385dfc631ad5af2a561c196e33d88fc63363d0d8f4"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631ad5af2a561c196e33d88fc63363d0d8f4">SVF::ForkJoinAnalysis::TDDead</a></div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00281">MHP.h:281</a></div></div>
402
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a8d40e687caf8999369621ed385dfc631a2abecc56b7d5c644f7e14c98d33d0a0a"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631a2abecc56b7d5c644f7e14c98d33d0a0a">SVF::ForkJoinAnalysis::TDAlive</a></div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00280">MHP.h:280</a></div></div>
399
+ <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00299">299</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
400
+ <div class="fragment"><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; {</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631a9d940442c782d5a1297102209540182f">Empty</a>, <span class="comment">// initial(dummy) state</span></div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631a2abecc56b7d5c644f7e14c98d33d0a0a">TDAlive</a>, <span class="comment">// thread is alive</span></div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631ad5af2a561c196e33d88fc63363d0d8f4">TDDead</a>, <span class="comment">// thread is dead</span></div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; };</div><div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a8d40e687caf8999369621ed385dfc631a9d940442c782d5a1297102209540182f"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631a9d940442c782d5a1297102209540182f">SVF::ForkJoinAnalysis::Empty</a></div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00301">MHP.h:301</a></div></div>
401
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a8d40e687caf8999369621ed385dfc631ad5af2a561c196e33d88fc63363d0d8f4"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631ad5af2a561c196e33d88fc63363d0d8f4">SVF::ForkJoinAnalysis::TDDead</a></div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00303">MHP.h:303</a></div></div>
402
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a8d40e687caf8999369621ed385dfc631a2abecc56b7d5c644f7e14c98d33d0a0a"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631a2abecc56b7d5c644f7e14c98d33d0a0a">SVF::ForkJoinAnalysis::TDAlive</a></div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00302">MHP.h:302</a></div></div>
403
403
  </div><!-- fragment -->
404
404
  </div>
405
405
  </div>
@@ -428,9 +428,9 @@ Private Attributes</h2></td></tr>
428
428
  </table>
429
429
  </div><div class="memdoc">
430
430
 
431
- <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00291">291</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
432
- <div class="fragment"><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; : <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>(t)</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; {</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a731ece7e21bfa2b08ae16780b55f9f5f">collectSCEVInfo</a>();</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; }</div><div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a2c6ce7aa04c399746d89230be0e0f1ce"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">SVF::ForkJoinAnalysis::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00540">MHP.h:540</a></div></div>
433
- <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#l00674">MHP.cpp:674</a></div></div>
431
+ <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00313">313</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
432
+ <div class="fragment"><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; : <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>(t)</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; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a731ece7e21bfa2b08ae16780b55f9f5f">collectSCEVInfo</a>();</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; }</div><div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a2c6ce7aa04c399746d89230be0e0f1ce"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">SVF::ForkJoinAnalysis::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00562">MHP.h:562</a></div></div>
433
+ <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#l00696">MHP.cpp:696</a></div></div>
434
434
  </div><!-- fragment -->
435
435
  </div>
436
436
  </div>
@@ -471,8 +471,8 @@ Private Attributes</h2></td></tr>
471
471
 
472
472
  <p>maps a context-sensitive join site to a thread id </p>
473
473
 
474
- <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00504">504</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
475
- <div class="fragment"><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; {</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#abf5b499f93a658636d09a62d14a47cad">directJoinMap</a>[cs].set(tid);</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; }</div><div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_abf5b499f93a658636d09a62d14a47cad"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#abf5b499f93a658636d09a62d14a47cad">SVF::ForkJoinAnalysis::directJoinMap</a></div><div class="ttdeci">CxtStmtToTIDMap directJoinMap</div><div class="ttdoc">maps a context-sensitive join site to directly joined thread ids </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00543">MHP.h:543</a></div></div>
474
+ <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00526">526</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
475
+ <div class="fragment"><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; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#abf5b499f93a658636d09a62d14a47cad">directJoinMap</a>[cs].set(tid);</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; }</div><div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_abf5b499f93a658636d09a62d14a47cad"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#abf5b499f93a658636d09a62d14a47cad">SVF::ForkJoinAnalysis::directJoinMap</a></div><div class="ttdeci">CxtStmtToTIDMap directJoinMap</div><div class="ttdoc">maps a context-sensitive join site to directly joined thread ids </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00565">MHP.h:565</a></div></div>
476
476
  </div><!-- fragment -->
477
477
  </div>
478
478
  </div>
@@ -512,8 +512,8 @@ Private Attributes</h2></td></tr>
512
512
 
513
513
  <p>Add inloop join. </p>
514
514
 
515
- <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00536">536</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
516
- <div class="fragment"><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; {</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a63da48d338683ec95709a6bd95238707">cxtJoinInLoop</a>[cs] = lp;</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; }</div><div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a63da48d338683ec95709a6bd95238707"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a63da48d338683ec95709a6bd95238707">SVF::ForkJoinAnalysis::cxtJoinInLoop</a></div><div class="ttdeci">CxtStmtToLoopMap cxtJoinInLoop</div><div class="ttdoc">a set of context-sensitive join inside loop </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00545">MHP.h:545</a></div></div>
515
+ <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00558">558</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
516
+ <div class="fragment"><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; {</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a63da48d338683ec95709a6bd95238707">cxtJoinInLoop</a>[cs] = lp;</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; }</div><div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a63da48d338683ec95709a6bd95238707"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a63da48d338683ec95709a6bd95238707">SVF::ForkJoinAnalysis::cxtJoinInLoop</a></div><div class="ttdeci">CxtStmtToLoopMap cxtJoinInLoop</div><div class="ttdoc">a set of context-sensitive join inside loop </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00567">MHP.h:567</a></div></div>
517
517
  </div><!-- fragment -->
518
518
  </div>
519
519
  </div>
@@ -553,8 +553,8 @@ Private Attributes</h2></td></tr>
553
553
 
554
554
  <p>full join and partial join </p>
555
555
 
556
- <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00525">525</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
557
- <div class="fragment"><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; {</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a4193a30050195cd9aaafd58511b66ccc">fullJoin</a>.insert(std::make_pair(tid1,tid2));</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; }</div><div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a4193a30050195cd9aaafd58511b66ccc"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a4193a30050195cd9aaafd58511b66ccc">SVF::ForkJoinAnalysis::fullJoin</a></div><div class="ttdeci">ThreadPairSet fullJoin</div><div class="ttdoc">t1 fully joins t2 along all program path </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00548">MHP.h:548</a></div></div>
556
+ <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00547">547</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
557
+ <div class="fragment"><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; {</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a4193a30050195cd9aaafd58511b66ccc">fullJoin</a>.insert(std::make_pair(tid1,tid2));</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; }</div><div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a4193a30050195cd9aaafd58511b66ccc"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a4193a30050195cd9aaafd58511b66ccc">SVF::ForkJoinAnalysis::fullJoin</a></div><div class="ttdeci">ThreadPairSet fullJoin</div><div class="ttdoc">t1 fully joins t2 along all program path </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00570">MHP.h:570</a></div></div>
558
558
  </div><!-- fragment -->
559
559
  </div>
560
560
  </div>
@@ -592,8 +592,8 @@ Private Attributes</h2></td></tr>
592
592
  </table>
593
593
  </div><div class="memdoc">
594
594
 
595
- <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00517">517</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
596
- <div class="fragment"><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; {</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#aad3e722ecaa4a39aef0e1cabfa2b8019">HBPair</a>.insert(std::make_pair(tid1,tid2));</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; }</div><div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_aad3e722ecaa4a39aef0e1cabfa2b8019"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#aad3e722ecaa4a39aef0e1cabfa2b8019">SVF::ForkJoinAnalysis::HBPair</a></div><div class="ttdeci">ThreadPairSet HBPair</div><div class="ttdoc">thread happens-before pair </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00546">MHP.h:546</a></div></div>
595
+ <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00539">539</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
596
+ <div class="fragment"><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; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#aad3e722ecaa4a39aef0e1cabfa2b8019">HBPair</a>.insert(std::make_pair(tid1,tid2));</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; }</div><div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_aad3e722ecaa4a39aef0e1cabfa2b8019"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#aad3e722ecaa4a39aef0e1cabfa2b8019">SVF::ForkJoinAnalysis::HBPair</a></div><div class="ttdeci">ThreadPairSet HBPair</div><div class="ttdoc">thread happens-before pair </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00568">MHP.h:568</a></div></div>
597
597
  </div><!-- fragment -->
598
598
  </div>
599
599
  </div>
@@ -632,8 +632,8 @@ Private Attributes</h2></td></tr>
632
632
  </div><div class="memdoc">
633
633
  <p>happen-in-parallel pair happens-before pair </p>
634
634
 
635
- <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00512">512</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
636
- <div class="fragment"><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; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a4ad5c7a21ca994d908d648ca9d9e1833">HPPair</a>.insert(std::make_pair(tid1,tid2));</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a4ad5c7a21ca994d908d648ca9d9e1833">HPPair</a>.insert(std::make_pair(tid2,tid1));</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; }</div><div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a4ad5c7a21ca994d908d648ca9d9e1833"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a4ad5c7a21ca994d908d648ca9d9e1833">SVF::ForkJoinAnalysis::HPPair</a></div><div class="ttdeci">ThreadPairSet HPPair</div><div class="ttdoc">threads happen-in-parallel </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00547">MHP.h:547</a></div></div>
635
+ <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00534">534</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
636
+ <div class="fragment"><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; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a4ad5c7a21ca994d908d648ca9d9e1833">HPPair</a>.insert(std::make_pair(tid1,tid2));</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a4ad5c7a21ca994d908d648ca9d9e1833">HPPair</a>.insert(std::make_pair(tid2,tid1));</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; }</div><div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a4ad5c7a21ca994d908d648ca9d9e1833"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a4ad5c7a21ca994d908d648ca9d9e1833">SVF::ForkJoinAnalysis::HPPair</a></div><div class="ttdeci">ThreadPairSet HPPair</div><div class="ttdoc">threads happen-in-parallel </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00569">MHP.h:569</a></div></div>
637
637
  </div><!-- fragment -->
638
638
  </div>
639
639
  </div>
@@ -671,8 +671,8 @@ Private Attributes</h2></td></tr>
671
671
  </table>
672
672
  </div><div class="memdoc">
673
673
 
674
- <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00529">529</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
675
- <div class="fragment"><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; {</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a3616d6e1649f9e451da0f7a44cffc1e3">partialJoin</a>.insert(std::make_pair(tid1,tid2));</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; }</div><div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a3616d6e1649f9e451da0f7a44cffc1e3"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a3616d6e1649f9e451da0f7a44cffc1e3">SVF::ForkJoinAnalysis::partialJoin</a></div><div class="ttdeci">ThreadPairSet partialJoin</div><div class="ttdoc">t1 partially joins t2 along some program path(s) </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00549">MHP.h:549</a></div></div>
674
+ <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00551">551</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
675
+ <div class="fragment"><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; {</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a3616d6e1649f9e451da0f7a44cffc1e3">partialJoin</a>.insert(std::make_pair(tid1,tid2));</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; }</div><div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a3616d6e1649f9e451da0f7a44cffc1e3"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a3616d6e1649f9e451da0f7a44cffc1e3">SVF::ForkJoinAnalysis::partialJoin</a></div><div class="ttdeci">ThreadPairSet partialJoin</div><div class="ttdoc">t1 partially joins t2 along some program path(s) </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00571">MHP.h:571</a></div></div>
676
676
  </div><!-- fragment -->
677
677
  </div>
678
678
  </div>
@@ -693,47 +693,47 @@ Private Attributes</h2></td></tr>
693
693
  <p>context-sensitive forward traversal from each fork site. Generate following results (1) fork join pair, maps a context-sensitive join site to its corresponding thread ids (2) never happen-in-parallel thread pairs</p>
694
694
  <p>Context-sensitive forward traversal from each fork site </p>
695
695
 
696
- <p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#l00728">728</a> of file <a class="el" href="MHP_8cpp_source.html">MHP.cpp</a>.</p>
697
- <div class="fragment"><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160;{</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</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_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(), eit = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); it!=eit; ++it)</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; {</div><div class="line"><a name="l00732"></a><span class="lineno"> 732</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="l00733"></a><span class="lineno"> 733</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> rootTid = it-&gt;first;</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a7965a276a3a12d532c9967de13d4cc8a">clearFlagMap</a>();</div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">CallInst</a>* forkInst = ct.<a class="code" href="classSVF_1_1CxtThread.html#a066ba29a83edc1042139641ca088b038">getThread</a>())</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; <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a> forkSiteCxt = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#ab4bc72ca330b315df06f2d4d2c1a7b4f">getCxtOfCxtThread</a>(ct);</div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* exitInst = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#acc178bd423dbb21bd46a9fae9ed0351c">getExitInstOfParentRoutineFun</a>(rootTid);</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_1ForkJoinAnalysis.html#a613d763731058899e6819acdb2d7315f">InstVec</a> nextInsts;</div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a799e14292e16b9fb322cab07f3ff5593">getNextInsts</a>(forkInst,nextInsts);</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</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="l00743"></a><span class="lineno"> 743</span>&#160; {</div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a> cs(forkSiteCxt,*nit);</div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ac483d3b0e9084c2033e177eda9ac9215">markCxtStmtFlag</a>(cs,<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631a2abecc56b7d5c644f7e14c98d33d0a0a">TDAlive</a>);</div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160; }</div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160;</div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160; <span class="keywordflow">while</span>(!<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#acccf53d174cac3275da0d79c89a73916">cxtStmtList</a>.<a class="code" href="classSVF_1_1FIFOWorkList.html#a7056704c224dfb4b57287fe90c004aa8">empty</a>())</div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; {</div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160; <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a> cts = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a4d893583db922444c6a29923bf3d05d3">popFromCTSWorkList</a>();</div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* curInst = cts.<a class="code" href="classSVF_1_1CxtStmt.html#a5e8c4b10eb5c3240d2e21a020ed834a6">getStmt</a>();</div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>,<a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <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="l00753"></a><span class="lineno"> 753</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>,cts.<a class="code" href="classSVF_1_1CxtStmt.html#a56e2767c327a383db09dca96edb19614">dump</a>());</div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>,<a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;-----\n&quot;</span>);</div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160; <a class="code" href="classSVF_1_1PTACallGraph.html#a5f5a5ec7e707a21994d301cc07d32a5a">PTACallGraph::FunctionSet</a> callees;</div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#aff32f240a03421937c2fc606359dca9b">isTDFork</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_1ForkJoinAnalysis.html#adddbc09b7b99170cd0941f22ccc7e561">handleFork</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="classSVF_1_1ForkJoinAnalysis.html#aac722a42dc6e03e771a7a80de5f8ec94">isTDJoin</a>(curInst))</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; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ae4d0ee03b30220793d24f814e75a440e">handleJoin</a>(cts,rootTid);</div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160; }</div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;CallInst&gt;(curInst) &amp;&amp; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#aa69b82c888c8193e97f9e95c62ac99d4">isCandidateFun</a>(<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#afcf119c89e93a24923dd0d97ddec7ee1">getCallee</a>(curInst, callees)))</div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160; {</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_1ForkJoinAnalysis.html#ab636777379aca0b53a06e4888d4b4c6b">handleCall</a>(cts,rootTid);</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> <span class="keywordflow">if</span>(SVFUtil::isa&lt;ReturnInst&gt;(curInst))</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_1ForkJoinAnalysis.html#a30e5ef1322216857513047d23b525829">handleRet</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; <span class="keywordflow">else</span></div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; {</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#add09218cce8d8bd8dd9e73b2d26a5797">handleIntra</a>(cts);</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160; }</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160;</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; <span class="keywordflow">if</span>(curInst==exitInst)</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; {</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a149114898b13e1430c8fbb60978ca4f5">getMarkedFlag</a>(cts)!=<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631a2abecc56b7d5c644f7e14c98d33d0a0a">TDAlive</a>)</div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a02dad7e9ae45a1751c4548dd9991a8b4">addToFullJoin</a>(<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#a516578af1f8666ff672e6611e61d7152">getParentThread</a>(rootTid),rootTid);</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a6ead92486459ec7f94a8375c7f96faca">addToPartial</a>(<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#a516578af1f8666ff672e6611e61d7152">getParentThread</a>(rootTid),rootTid);</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="l00787"></a><span class="lineno"> 787</span>&#160; }</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160; }</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160;}</div><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#l00365">GenericGraph.h:365</a></div></div>
698
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_ab636777379aca0b53a06e4888d4b4c6b"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#ab636777379aca0b53a06e4888d4b4c6b">SVF::ForkJoinAnalysis::handleCall</a></div><div class="ttdeci">void handleCall(const CxtStmt &amp;cts, NodeID rootTid)</div><div class="ttdoc">Handle call. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l00878">MHP.cpp:878</a></div></div>
699
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a149114898b13e1430c8fbb60978ca4f5"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a149114898b13e1430c8fbb60978ca4f5">SVF::ForkJoinAnalysis::getMarkedFlag</a></div><div class="ttdeci">ValDomain getMarkedFlag(const CxtStmt &amp;cs)</div><div class="ttdoc">Mark thread flags for cxtStmt. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00394">MHP.h:394</a></div></div>
700
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a02dad7e9ae45a1751c4548dd9991a8b4"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a02dad7e9ae45a1751c4548dd9991a8b4">SVF::ForkJoinAnalysis::addToFullJoin</a></div><div class="ttdeci">void addToFullJoin(NodeID tid1, NodeID tid2)</div><div class="ttdoc">full join and partial join </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00525">MHP.h:525</a></div></div>
696
+ <p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#l00750">750</a> of file <a class="el" href="MHP_8cpp_source.html">MHP.cpp</a>.</p>
697
+ <div class="fragment"><div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160;{</div><div class="line"><a name="l00752"></a><span class="lineno"> 752</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_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(), eit = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); it!=eit; ++it)</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; <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="l00755"></a><span class="lineno"> 755</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> rootTid = it-&gt;first;</div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a7965a276a3a12d532c9967de13d4cc8a">clearFlagMap</a>();</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">CallInst</a>* forkInst = ct.<a class="code" href="classSVF_1_1CxtThread.html#a066ba29a83edc1042139641ca088b038">getThread</a>())</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160; {</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a> forkSiteCxt = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#ab4bc72ca330b315df06f2d4d2c1a7b4f">getCxtOfCxtThread</a>(ct);</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* exitInst = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#acc178bd423dbb21bd46a9fae9ed0351c">getExitInstOfParentRoutineFun</a>(rootTid);</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; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a613d763731058899e6819acdb2d7315f">InstVec</a> nextInsts;</div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a799e14292e16b9fb322cab07f3ff5593">getNextInsts</a>(forkInst,nextInsts);</div><div class="line"><a name="l00764"></a><span class="lineno"> 764</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="l00765"></a><span class="lineno"> 765</span>&#160; {</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a> cs(forkSiteCxt,*nit);</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ac483d3b0e9084c2033e177eda9ac9215">markCxtStmtFlag</a>(cs,<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631a2abecc56b7d5c644f7e14c98d33d0a0a">TDAlive</a>);</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;</div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160; <span class="keywordflow">while</span>(!<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#acccf53d174cac3275da0d79c89a73916">cxtStmtList</a>.<a class="code" href="classSVF_1_1FIFOWorkList.html#a7056704c224dfb4b57287fe90c004aa8">empty</a>())</div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160; {</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160; <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a> cts = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a4d893583db922444c6a29923bf3d05d3">popFromCTSWorkList</a>();</div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* curInst = cts.<a class="code" href="classSVF_1_1CxtStmt.html#a5e8c4b10eb5c3240d2e21a020ed834a6">getStmt</a>();</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>,<a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <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="l00775"></a><span class="lineno"> 775</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>,cts.<a class="code" href="classSVF_1_1CxtStmt.html#a56e2767c327a383db09dca96edb19614">dump</a>());</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>,<a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;-----\n&quot;</span>);</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; <a class="code" href="classSVF_1_1PTACallGraph.html#a5f5a5ec7e707a21994d301cc07d32a5a">PTACallGraph::FunctionSet</a> callees;</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#aff32f240a03421937c2fc606359dca9b">isTDFork</a>(curInst))</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; {</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#adddbc09b7b99170cd0941f22ccc7e561">handleFork</a>(cts,rootTid);</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; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#aac722a42dc6e03e771a7a80de5f8ec94">isTDJoin</a>(curInst))</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; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ae4d0ee03b30220793d24f814e75a440e">handleJoin</a>(cts,rootTid);</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; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;CallInst&gt;(curInst) &amp;&amp; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#aa69b82c888c8193e97f9e95c62ac99d4">isCandidateFun</a>(<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#afcf119c89e93a24923dd0d97ddec7ee1">getCallee</a>(curInst, callees)))</div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160; {</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160;</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ab636777379aca0b53a06e4888d4b4c6b">handleCall</a>(cts,rootTid);</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; }</div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;ReturnInst&gt;(curInst))</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; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a30e5ef1322216857513047d23b525829">handleRet</a>(cts);</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160; }</div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160; <span class="keywordflow">else</span></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; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#add09218cce8d8bd8dd9e73b2d26a5797">handleIntra</a>(cts);</div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160; }</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="keywordflow">if</span>(curInst==exitInst)</div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160; {</div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a149114898b13e1430c8fbb60978ca4f5">getMarkedFlag</a>(cts)!=<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631a2abecc56b7d5c644f7e14c98d33d0a0a">TDAlive</a>)</div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a02dad7e9ae45a1751c4548dd9991a8b4">addToFullJoin</a>(<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#a516578af1f8666ff672e6611e61d7152">getParentThread</a>(rootTid),rootTid);</div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a6ead92486459ec7f94a8375c7f96faca">addToPartial</a>(<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#a516578af1f8666ff672e6611e61d7152">getParentThread</a>(rootTid),rootTid);</div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160; }</div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160; }</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; }</div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160;}</div><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#l00365">GenericGraph.h:365</a></div></div>
698
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_ab636777379aca0b53a06e4888d4b4c6b"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#ab636777379aca0b53a06e4888d4b4c6b">SVF::ForkJoinAnalysis::handleCall</a></div><div class="ttdeci">void handleCall(const CxtStmt &amp;cts, NodeID rootTid)</div><div class="ttdoc">Handle call. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l00900">MHP.cpp:900</a></div></div>
699
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a149114898b13e1430c8fbb60978ca4f5"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a149114898b13e1430c8fbb60978ca4f5">SVF::ForkJoinAnalysis::getMarkedFlag</a></div><div class="ttdeci">ValDomain getMarkedFlag(const CxtStmt &amp;cs)</div><div class="ttdoc">Mark thread flags for cxtStmt. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00416">MHP.h:416</a></div></div>
700
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a02dad7e9ae45a1751c4548dd9991a8b4"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a02dad7e9ae45a1751c4548dd9991a8b4">SVF::ForkJoinAnalysis::addToFullJoin</a></div><div class="ttdeci">void addToFullJoin(NodeID tid1, NodeID tid2)</div><div class="ttdoc">full join and partial join </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00547">MHP.h:547</a></div></div>
701
701
  <div class="ttc" id="SVFBasicTypes_8h_html_a217a1ccdaec1abb103cf6b0373631234"><div class="ttname"><a href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a></div><div class="ttdeci">#define DMTA</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00175">SVFBasicTypes.h:175</a></div></div>
702
702
  <div class="ttc" id="namespaceSVF_html_a43a65e0d33af3c743294f7a1139d2301"><div class="ttname"><a href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00019">MTAResultValidator.h:19</a></div></div>
703
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a2c6ce7aa04c399746d89230be0e0f1ce"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">SVF::ForkJoinAnalysis::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00540">MHP.h:540</a></div></div>
704
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_afcf119c89e93a24923dd0d97ddec7ee1"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#afcf119c89e93a24923dd0d97ddec7ee1">SVF::ForkJoinAnalysis::getCallee</a></div><div class="ttdeci">const PTACallGraph::FunctionSet &amp; getCallee(const Instruction *inst, PTACallGraph::FunctionSet &amp;callees)</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00493">MHP.h:493</a></div></div>
703
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a2c6ce7aa04c399746d89230be0e0f1ce"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">SVF::ForkJoinAnalysis::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00562">MHP.h:562</a></div></div>
704
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_afcf119c89e93a24923dd0d97ddec7ee1"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#afcf119c89e93a24923dd0d97ddec7ee1">SVF::ForkJoinAnalysis::getCallee</a></div><div class="ttdeci">const PTACallGraph::FunctionSet &amp; getCallee(const Instruction *inst, PTACallGraph::FunctionSet &amp;callees)</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00515">MHP.h:515</a></div></div>
705
705
  <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>
706
706
  <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>
707
707
  <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>
708
708
  <div class="ttc" id="classSVF_1_1CxtThread_html_a066ba29a83edc1042139641ca088b038"><div class="ttname"><a href="classSVF_1_1CxtThread.html#a066ba29a83edc1042139641ca088b038">SVF::CxtThread::getThread</a></div><div class="ttdeci">const CallInst * 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>
709
- <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#l00284">MHP.h:284</a></div></div>
709
+ <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#l00306">MHP.h:306</a></div></div>
710
710
  <div class="ttc" id="namespaceSVF_html_adc8b60ca7d60cf6c81feae20e4a04c63"><div class="ttname"><a href="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">SVF::CallInst</a></div><div class="ttdeci">llvm::CallInst CallInst</div><div class="ttdoc">LLVM Instructions. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00102">BasicTypes.h:102</a></div></div>
711
711
  <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#l00343">GenericGraph.h:343</a></div></div>
712
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a799e14292e16b9fb322cab07f3ff5593"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a799e14292e16b9fb322cab07f3ff5593">SVF::ForkJoinAnalysis::getNextInsts</a></div><div class="ttdeci">void getNextInsts(const Instruction *inst, InstVec &amp;instSet)</div><div class="ttdoc">Get the next instructions following control flow. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00458">MHP.h:458</a></div></div>
712
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a799e14292e16b9fb322cab07f3ff5593"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a799e14292e16b9fb322cab07f3ff5593">SVF::ForkJoinAnalysis::getNextInsts</a></div><div class="ttdeci">void getNextInsts(const Instruction *inst, InstVec &amp;instSet)</div><div class="ttdoc">Get the next instructions following control flow. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00480">MHP.h:480</a></div></div>
713
713
  <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#l00369">GenericGraph.h:369</a></div></div>
714
714
  <div class="ttc" id="classSVF_1_1CxtStmt_html_a5e8c4b10eb5c3240d2e21a020ed834a6"><div class="ttname"><a href="classSVF_1_1CxtStmt.html#a5e8c4b10eb5c3240d2e21a020ed834a6">SVF::CxtStmt::getStmt</a></div><div class="ttdeci">const Instruction * 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>
715
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a6ead92486459ec7f94a8375c7f96faca"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a6ead92486459ec7f94a8375c7f96faca">SVF::ForkJoinAnalysis::addToPartial</a></div><div class="ttdeci">void addToPartial(NodeID tid1, NodeID tid2)</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00529">MHP.h:529</a></div></div>
715
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a6ead92486459ec7f94a8375c7f96faca"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a6ead92486459ec7f94a8375c7f96faca">SVF::ForkJoinAnalysis::addToPartial</a></div><div class="ttdeci">void addToPartial(NodeID tid1, NodeID tid2)</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00551">MHP.h:551</a></div></div>
716
716
  <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="SVFBasicTypes_8h_source.html#l00131">SVFBasicTypes.h:131</a></div></div>
717
- <div class="ttc" id="classSVF_1_1TCT_html_ab4bc72ca330b315df06f2d4d2c1a7b4f"><div class="ttname"><a href="classSVF_1_1TCT.html#ab4bc72ca330b315df06f2d4d2c1a7b4f">SVF::TCT::getCxtOfCxtThread</a></div><div class="ttdeci">const CallStrCxt &amp; getCxtOfCxtThread(const CxtThread &amp;ct) const</div><div class="ttdoc">get the context of a thread at its spawning site (fork site) </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00330">TCT.h:330</a></div></div>
718
- <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#l00818">MHP.cpp:818</a></div></div>
717
+ <div class="ttc" id="classSVF_1_1TCT_html_ab4bc72ca330b315df06f2d4d2c1a7b4f"><div class="ttname"><a href="classSVF_1_1TCT.html#ab4bc72ca330b315df06f2d4d2c1a7b4f">SVF::TCT::getCxtOfCxtThread</a></div><div class="ttdeci">const CallStrCxt &amp; getCxtOfCxtThread(const CxtThread &amp;ct) const</div><div class="ttdoc">get the context of a thread at its spawning site (fork site) </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00352">TCT.h:352</a></div></div>
718
+ <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#l00840">MHP.cpp:840</a></div></div>
719
719
  <div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00073">BasicTypes.h:73</a></div></div>
720
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_ac483d3b0e9084c2033e177eda9ac9215"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#ac483d3b0e9084c2033e177eda9ac9215">SVF::ForkJoinAnalysis::markCxtStmtFlag</a></div><div class="ttdeci">void markCxtStmtFlag(const CxtStmt &amp;tgr, ValDomain flag)</div><div class="ttdoc">Initialize TDAlive and TDDead flags. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00406">MHP.h:406</a></div></div>
720
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_ac483d3b0e9084c2033e177eda9ac9215"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#ac483d3b0e9084c2033e177eda9ac9215">SVF::ForkJoinAnalysis::markCxtStmtFlag</a></div><div class="ttdeci">void markCxtStmtFlag(const CxtStmt &amp;tgr, ValDomain flag)</div><div class="ttdoc">Initialize TDAlive and TDDead flags. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00428">MHP.h:428</a></div></div>
721
721
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aed0b0b9f035057552a6a82154fd88e61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVF::SVFUtil::outs</a></div><div class="ttdeci">std::ostream &amp; outs()</div><div class="ttdoc">Overwrite llvm::outs() </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00049">SVFUtil.h:49</a></div></div>
722
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_acccf53d174cac3275da0d79c89a73916"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#acccf53d174cac3275da0d79c89a73916">SVF::ForkJoinAnalysis::cxtStmtList</a></div><div class="ttdeci">CxtStmtWorkList cxtStmtList</div><div class="ttdoc">context-sensitive statement worklist </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00542">MHP.h:542</a></div></div>
722
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_acccf53d174cac3275da0d79c89a73916"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#acccf53d174cac3275da0d79c89a73916">SVF::ForkJoinAnalysis::cxtStmtList</a></div><div class="ttdeci">CxtStmtWorkList cxtStmtList</div><div class="ttdoc">context-sensitive statement worklist </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00564">MHP.h:564</a></div></div>
723
723
  <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>
724
- <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#l00248">TCT.h:248</a></div></div>
725
- <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#l00281">TCT.h:281</a></div></div>
726
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a4d893583db922444c6a29923bf3d05d3"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a4d893583db922444c6a29923bf3d05d3">SVF::ForkJoinAnalysis::popFromCTSWorkList</a></div><div class="ttdeci">CxtStmt popFromCTSWorkList()</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00450">MHP.h:450</a></div></div>
727
- <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#l00902">MHP.cpp:902</a></div></div>
728
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_aac722a42dc6e03e771a7a80de5f8ec94"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#aac722a42dc6e03e771a7a80de5f8ec94">SVF::ForkJoinAnalysis::isTDJoin</a></div><div class="ttdeci">bool isTDJoin(const Instruction *call)</div><div class="ttdoc">Whether it is a join site. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00479">MHP.h:479</a></div></div>
729
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_aff32f240a03421937c2fc606359dca9b"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#aff32f240a03421937c2fc606359dca9b">SVF::ForkJoinAnalysis::isTDFork</a></div><div class="ttdeci">bool isTDFork(const Instruction *call)</div><div class="ttdoc">Whether it is a fork site. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00474">MHP.h:474</a></div></div>
730
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_acc178bd423dbb21bd46a9fae9ed0351c"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#acc178bd423dbb21bd46a9fae9ed0351c">SVF::ForkJoinAnalysis::getExitInstOfParentRoutineFun</a></div><div class="ttdeci">const Instruction * getExitInstOfParentRoutineFun(NodeID tid) const</div><div class="ttdoc">Get exit instruction of the start routine function of tid&amp;#39;s parent thread. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00339">MHP.h:339</a></div></div>
724
+ <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#l00270">TCT.h:270</a></div></div>
725
+ <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#l00303">TCT.h:303</a></div></div>
726
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a4d893583db922444c6a29923bf3d05d3"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a4d893583db922444c6a29923bf3d05d3">SVF::ForkJoinAnalysis::popFromCTSWorkList</a></div><div class="ttdeci">CxtStmt popFromCTSWorkList()</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00472">MHP.h:472</a></div></div>
727
+ <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#l00924">MHP.cpp:924</a></div></div>
728
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_aac722a42dc6e03e771a7a80de5f8ec94"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#aac722a42dc6e03e771a7a80de5f8ec94">SVF::ForkJoinAnalysis::isTDJoin</a></div><div class="ttdeci">bool isTDJoin(const Instruction *call)</div><div class="ttdoc">Whether it is a join site. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00501">MHP.h:501</a></div></div>
729
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_aff32f240a03421937c2fc606359dca9b"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#aff32f240a03421937c2fc606359dca9b">SVF::ForkJoinAnalysis::isTDFork</a></div><div class="ttdeci">bool isTDFork(const Instruction *call)</div><div class="ttdoc">Whether it is a fork site. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00496">MHP.h:496</a></div></div>
730
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_acc178bd423dbb21bd46a9fae9ed0351c"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#acc178bd423dbb21bd46a9fae9ed0351c">SVF::ForkJoinAnalysis::getExitInstOfParentRoutineFun</a></div><div class="ttdeci">const Instruction * getExitInstOfParentRoutineFun(NodeID tid) const</div><div class="ttdoc">Get exit instruction of the start routine function of tid&amp;#39;s parent thread. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00361">MHP.h:361</a></div></div>
731
731
  <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>
732
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a8d40e687caf8999369621ed385dfc631a2abecc56b7d5c644f7e14c98d33d0a0a"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631a2abecc56b7d5c644f7e14c98d33d0a0a">SVF::ForkJoinAnalysis::TDAlive</a></div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00280">MHP.h:280</a></div></div>
732
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a8d40e687caf8999369621ed385dfc631a2abecc56b7d5c644f7e14c98d33d0a0a"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631a2abecc56b7d5c644f7e14c98d33d0a0a">SVF::ForkJoinAnalysis::TDAlive</a></div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00302">MHP.h:302</a></div></div>
733
733
  <div class="ttc" id="SVFBasicTypes_8h_html_a173ce1b9b505fdadf5613b663749d3b0"><div class="ttname"><a href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a></div><div class="ttdeci">#define DBOUT(TYPE, X)</div><div class="ttdoc">LLVM debug macros, define type of your DEBUG model of each pass. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00155">SVFBasicTypes.h:155</a></div></div>
734
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_adddbc09b7b99170cd0941f22ccc7e561"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#adddbc09b7b99170cd0941f22ccc7e561">SVF::ForkJoinAnalysis::handleFork</a></div><div class="ttdeci">void handleFork(const CxtStmt &amp;cts, NodeID rootTid)</div><div class="ttdoc">Handle fork. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l00792">MHP.cpp:792</a></div></div>
735
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a7965a276a3a12d532c9967de13d4cc8a"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a7965a276a3a12d532c9967de13d4cc8a">SVF::ForkJoinAnalysis::clearFlagMap</a></div><div class="ttdeci">void clearFlagMap()</div><div class="ttdoc">Clear flags. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00437">MHP.h:437</a></div></div>
736
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_add09218cce8d8bd8dd9e73b2d26a5797"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#add09218cce8d8bd8dd9e73b2d26a5797">SVF::ForkJoinAnalysis::handleIntra</a></div><div class="ttdeci">void handleIntra(const CxtStmt &amp;cts)</div><div class="ttdoc">Handle intra. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l00948">MHP.cpp:948</a></div></div>
734
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_adddbc09b7b99170cd0941f22ccc7e561"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#adddbc09b7b99170cd0941f22ccc7e561">SVF::ForkJoinAnalysis::handleFork</a></div><div class="ttdeci">void handleFork(const CxtStmt &amp;cts, NodeID rootTid)</div><div class="ttdoc">Handle fork. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l00814">MHP.cpp:814</a></div></div>
735
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a7965a276a3a12d532c9967de13d4cc8a"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a7965a276a3a12d532c9967de13d4cc8a">SVF::ForkJoinAnalysis::clearFlagMap</a></div><div class="ttdeci">void clearFlagMap()</div><div class="ttdoc">Clear flags. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00459">MHP.h:459</a></div></div>
736
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_add09218cce8d8bd8dd9e73b2d26a5797"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#add09218cce8d8bd8dd9e73b2d26a5797">SVF::ForkJoinAnalysis::handleIntra</a></div><div class="ttdeci">void handleIntra(const CxtStmt &amp;cts)</div><div class="ttdoc">Handle intra. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l00970">MHP.cpp:970</a></div></div>
737
737
  </div><!-- fragment -->
738
738
  </div>
739
739
  </div>
@@ -762,9 +762,9 @@ Private Attributes</h2></td></tr>
762
762
 
763
763
  <p>Clear flags. </p>
764
764
 
765
- <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00437">437</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
766
- <div class="fragment"><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; {</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#aa31b3f3d51b963ccd475e66b77143dba">cxtStmtToAliveFlagMap</a>.clear();</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#acccf53d174cac3275da0d79c89a73916">cxtStmtList</a>.<a class="code" href="classSVF_1_1FIFOWorkList.html#a29d9fec1ea7b8e5456342522eea403ad">clear</a>();</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; }</div><div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_aa31b3f3d51b963ccd475e66b77143dba"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#aa31b3f3d51b963ccd475e66b77143dba">SVF::ForkJoinAnalysis::cxtStmtToAliveFlagMap</a></div><div class="ttdeci">CxtStmtToAliveFlagMap cxtStmtToAliveFlagMap</div><div class="ttdoc">flags for context-sensitive statements </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00541">MHP.h:541</a></div></div>
767
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_acccf53d174cac3275da0d79c89a73916"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#acccf53d174cac3275da0d79c89a73916">SVF::ForkJoinAnalysis::cxtStmtList</a></div><div class="ttdeci">CxtStmtWorkList cxtStmtList</div><div class="ttdoc">context-sensitive statement worklist </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00542">MHP.h:542</a></div></div>
765
+ <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00459">459</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
766
+ <div class="fragment"><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; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#aa31b3f3d51b963ccd475e66b77143dba">cxtStmtToAliveFlagMap</a>.clear();</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#acccf53d174cac3275da0d79c89a73916">cxtStmtList</a>.<a class="code" href="classSVF_1_1FIFOWorkList.html#a29d9fec1ea7b8e5456342522eea403ad">clear</a>();</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; }</div><div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_aa31b3f3d51b963ccd475e66b77143dba"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#aa31b3f3d51b963ccd475e66b77143dba">SVF::ForkJoinAnalysis::cxtStmtToAliveFlagMap</a></div><div class="ttdeci">CxtStmtToAliveFlagMap cxtStmtToAliveFlagMap</div><div class="ttdoc">flags for context-sensitive statements </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00563">MHP.h:563</a></div></div>
767
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_acccf53d174cac3275da0d79c89a73916"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#acccf53d174cac3275da0d79c89a73916">SVF::ForkJoinAnalysis::cxtStmtList</a></div><div class="ttdeci">CxtStmtWorkList cxtStmtList</div><div class="ttdoc">context-sensitive statement worklist </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00564">MHP.h:564</a></div></div>
768
768
  <div class="ttc" id="classSVF_1_1FIFOWorkList_html_a29d9fec1ea7b8e5456342522eea403ad"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html#a29d9fec1ea7b8e5456342522eea403ad">SVF::FIFOWorkList::clear</a></div><div class="ttdeci">void clear()</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00186">WorkList.h:186</a></div></div>
769
769
  </div><!-- fragment -->
770
770
  </div>
@@ -787,10 +787,10 @@ Private Attributes</h2></td></tr>
787
787
  <p>functions </p>
788
788
  <p>Collect SCEV pass information for pointers at fork/join sites Because ScalarEvolution is a function pass, previous knowledge of a function may be overwritten when analyzing a new function. We use a internal wrapper class <a class="el" href="classSVF_1_1PTASCEV.html">PTASCEV</a> to record all the necessary information for determining symmetric fork/join inside loops </p>
789
789
 
790
- <p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#l00674">674</a> of file <a class="el" href="MHP_8cpp_source.html">MHP.cpp</a>.</p>
791
- <div class="fragment"><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160;{</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#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const Instruction*&gt;</a> CallInstSet;</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const Function*, CallInstSet &gt;</a> FunToFJSites;</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160; FunToFJSites funToFJSites;</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160;</div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; <span class="keywordflow">for</span>(ThreadCallGraph::CallSiteSet::const_iterator it = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">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="l00681"></a><span class="lineno"> 681</span>&#160; eit = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">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="l00682"></a><span class="lineno"> 682</span>&#160; {</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* fork = (*it)-&gt;getCallSite();</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun = fork-&gt;getParent()-&gt;getParent();</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; funToFJSites[fun].insert(fork);</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; }</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160;</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; <span class="keywordflow">for</span>(ThreadCallGraph::CallSiteSet::const_iterator it = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">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="l00689"></a><span class="lineno"> 689</span>&#160; eit = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">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="l00690"></a><span class="lineno"> 690</span>&#160; {</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* join = (*it)-&gt;getCallSite();</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; funToFJSites[join-&gt;getParent()-&gt;getParent()].insert(join);</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; }</div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160;</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; <span class="keywordflow">for</span>(FunToFJSites::const_iterator it = funToFJSites.begin(), eit = funToFJSites.end(); it!=eit; ++it)</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; {</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; <span class="comment">// ScalarEvolution* SE = MTA::getSE(it-&gt;first);</span></div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; <span class="keywordflow">for</span>(CallInstSet::const_iterator sit = it-&gt;second.begin(), esit = it-&gt;second.end(); sit!=esit; ++sit)</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; {</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* callInst = *sit;</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#a1602d02773578bca73dcbd29b95c67d0">getThreadCallGraph</a>()-&gt;<a class="code" href="classSVF_1_1ThreadCallGraph.html#a07d3db6ffe8d75effd6fbc3856c484fe">isForksite</a>(<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a94d65f9e22a13772042b2af652cf5538">getCBN</a>(callInst)))</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; {</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *forkSiteTidPtr = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#acd4308b99446c277ccb3407103fe21d0">getForkedThread</a>(callInst);</div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; <span class="comment">// const SCEV *forkSiteTidPtrSCEV = SE-&gt;getSCEV(const_cast&lt;Value*&gt;(forkSiteTidPtr));</span></div><div class="line"><a name="l00705"></a><span class="lineno"> 705</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="l00706"></a><span class="lineno"> 706</span>&#160; <span class="comment">// forkSiteTidPtrSCEV = getSCEVMinusExpr(forkSiteTidPtrSCEV, baseForkTidPtrSCEV, SE);</span></div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; <a class="code" href="classSVF_1_1PTASCEV.html">PTASCEV</a> scev(forkSiteTidPtr,<span class="keyword">nullptr</span>,<span class="keyword">nullptr</span>);</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a4207948054a0f98560922f3f07ada10f">fkjnToPTASCEVMap</a>.insert(std::make_pair(callInst,scev));</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; }</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; {</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *joinSiteTidPtr = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ada1e56dfe2d64ea6310142a346c86ed4">getJoinedThread</a>(callInst);</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; <span class="comment">//const SCEV *joinSiteTidPtrSCEV = SE-&gt;getSCEV(const_cast&lt;Value*&gt;(joinSiteTidPtr));</span></div><div class="line"><a name="l00714"></a><span class="lineno"> 714</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="l00715"></a><span class="lineno"> 715</span>&#160; <span class="comment">//joinSiteTidPtrSCEV = getSCEVMinusExpr(joinSiteTidPtrSCEV, baseJoinTidPtrSCEV, SE);</span></div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160;</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; <a class="code" href="classSVF_1_1PTASCEV.html">PTASCEV</a> scev(joinSiteTidPtr,<span class="keyword">nullptr</span>,<span class="keyword">nullptr</span>);</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a4207948054a0f98560922f3f07ada10f">fkjnToPTASCEVMap</a>.insert(std::make_pair(callInst,scev));</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; }</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="l00722"></a><span class="lineno"> 722</span>&#160; }</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160;}</div><div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a4207948054a0f98560922f3f07ada10f"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a4207948054a0f98560922f3f07ada10f">SVF::ForkJoinAnalysis::fkjnToPTASCEVMap</a></div><div class="ttdeci">forkjoinToPTASCEVMap fkjnToPTASCEVMap</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00551">MHP.h:551</a></div></div>
792
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_ada1e56dfe2d64ea6310142a346c86ed4"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#ada1e56dfe2d64ea6310142a346c86ed4">SVF::ForkJoinAnalysis::getJoinedThread</a></div><div class="ttdeci">const Value * getJoinedThread(const Instruction *call)</div><div class="ttdoc">Get joined thread. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00489">MHP.h:489</a></div></div>
793
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a2c6ce7aa04c399746d89230be0e0f1ce"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">SVF::ForkJoinAnalysis::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00540">MHP.h:540</a></div></div>
790
+ <p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#l00696">696</a> of file <a class="el" href="MHP_8cpp_source.html">MHP.cpp</a>.</p>
791
+ <div class="fragment"><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160;{</div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const Instruction*&gt;</a> CallInstSet;</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const Function*, CallInstSet &gt;</a> FunToFJSites;</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; FunToFJSites funToFJSites;</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160;</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; <span class="keywordflow">for</span>(ThreadCallGraph::CallSiteSet::const_iterator it = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">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="l00703"></a><span class="lineno"> 703</span>&#160; eit = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">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="l00704"></a><span class="lineno"> 704</span>&#160; {</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* fork = (*it)-&gt;getCallSite();</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun = fork-&gt;getParent()-&gt;getParent();</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; funToFJSites[fun].insert(fork);</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; }</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160;</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; <span class="keywordflow">for</span>(ThreadCallGraph::CallSiteSet::const_iterator it = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">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="l00711"></a><span class="lineno"> 711</span>&#160; eit = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">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="l00712"></a><span class="lineno"> 712</span>&#160; {</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* join = (*it)-&gt;getCallSite();</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; funToFJSites[join-&gt;getParent()-&gt;getParent()].insert(join);</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; }</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160;</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; <span class="keywordflow">for</span>(FunToFJSites::const_iterator it = funToFJSites.begin(), eit = funToFJSites.end(); it!=eit; ++it)</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; {</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; <span class="comment">// ScalarEvolution* SE = MTA::getSE(it-&gt;first);</span></div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; <span class="keywordflow">for</span>(CallInstSet::const_iterator sit = it-&gt;second.begin(), esit = it-&gt;second.end(); sit!=esit; ++sit)</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160; {</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* callInst = *sit;</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#a1602d02773578bca73dcbd29b95c67d0">getThreadCallGraph</a>()-&gt;<a class="code" href="classSVF_1_1ThreadCallGraph.html#a07d3db6ffe8d75effd6fbc3856c484fe">isForksite</a>(<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a94d65f9e22a13772042b2af652cf5538">getCBN</a>(callInst)))</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; {</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *forkSiteTidPtr = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#acd4308b99446c277ccb3407103fe21d0">getForkedThread</a>(callInst);</div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; <span class="comment">// const SCEV *forkSiteTidPtrSCEV = SE-&gt;getSCEV(const_cast&lt;Value*&gt;(forkSiteTidPtr));</span></div><div class="line"><a name="l00727"></a><span class="lineno"> 727</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="l00728"></a><span class="lineno"> 728</span>&#160; <span class="comment">// forkSiteTidPtrSCEV = getSCEVMinusExpr(forkSiteTidPtrSCEV, baseForkTidPtrSCEV, SE);</span></div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; <a class="code" href="classSVF_1_1PTASCEV.html">PTASCEV</a> scev(forkSiteTidPtr,<span class="keyword">nullptr</span>,<span class="keyword">nullptr</span>);</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a4207948054a0f98560922f3f07ada10f">fkjnToPTASCEVMap</a>.insert(std::make_pair(callInst,scev));</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; }</div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; <span class="keywordflow">else</span></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; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *joinSiteTidPtr = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ada1e56dfe2d64ea6310142a346c86ed4">getJoinedThread</a>(callInst);</div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; <span class="comment">//const SCEV *joinSiteTidPtrSCEV = SE-&gt;getSCEV(const_cast&lt;Value*&gt;(joinSiteTidPtr));</span></div><div class="line"><a name="l00736"></a><span class="lineno"> 736</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="l00737"></a><span class="lineno"> 737</span>&#160; <span class="comment">//joinSiteTidPtrSCEV = getSCEVMinusExpr(joinSiteTidPtrSCEV, baseJoinTidPtrSCEV, SE);</span></div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160;</div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; <a class="code" href="classSVF_1_1PTASCEV.html">PTASCEV</a> scev(joinSiteTidPtr,<span class="keyword">nullptr</span>,<span class="keyword">nullptr</span>);</div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a4207948054a0f98560922f3f07ada10f">fkjnToPTASCEVMap</a>.insert(std::make_pair(callInst,scev));</div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; }</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; }</div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160;}</div><div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a4207948054a0f98560922f3f07ada10f"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a4207948054a0f98560922f3f07ada10f">SVF::ForkJoinAnalysis::fkjnToPTASCEVMap</a></div><div class="ttdeci">forkjoinToPTASCEVMap fkjnToPTASCEVMap</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00573">MHP.h:573</a></div></div>
792
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_ada1e56dfe2d64ea6310142a346c86ed4"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#ada1e56dfe2d64ea6310142a346c86ed4">SVF::ForkJoinAnalysis::getJoinedThread</a></div><div class="ttdeci">const Value * getJoinedThread(const Instruction *call)</div><div class="ttdoc">Get joined thread. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00511">MHP.h:511</a></div></div>
793
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a2c6ce7aa04c399746d89230be0e0f1ce"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">SVF::ForkJoinAnalysis::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00562">MHP.h:562</a></div></div>
794
794
  <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>
795
795
  <div class="ttc" id="namespaceSVF_html_a8234d4b959abc9123993bcff4eee34c1"><div class="ttname"><a href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">SVF::Map</a></div><div class="ttdeci">std::unordered_map&lt; Key, Value, Hash, KeyEqual, Allocator &gt; Map</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00110">SVFBasicTypes.h:110</a></div></div>
796
796
  <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>
@@ -798,11 +798,11 @@ Private Attributes</h2></td></tr>
798
798
  <div class="ttc" id="namespaceSVF_html_a5faee14fa1dd41447bc73ac365fe33c1"><div class="ttname"><a href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a></div><div class="ttdeci">llvm::Function Function</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00070">BasicTypes.h:70</a></div></div>
799
799
  <div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00073">BasicTypes.h:73</a></div></div>
800
800
  <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>
801
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a94d65f9e22a13772042b2af652cf5538"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a94d65f9e22a13772042b2af652cf5538">SVF::ForkJoinAnalysis::getCBN</a></div><div class="ttdeci">CallICFGNode * getCBN(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00387">MHP.h:387</a></div></div>
802
- <div class="ttc" id="classSVF_1_1TCT_html_a1602d02773578bca73dcbd29b95c67d0"><div class="ttname"><a href="classSVF_1_1TCT.html#a1602d02773578bca73dcbd29b95c67d0">SVF::TCT::getThreadCallGraph</a></div><div class="ttdeci">ThreadCallGraph * getThreadCallGraph() const</div><div class="ttdoc">Get TCG. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00166">TCT.h:166</a></div></div>
801
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a94d65f9e22a13772042b2af652cf5538"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a94d65f9e22a13772042b2af652cf5538">SVF::ForkJoinAnalysis::getCBN</a></div><div class="ttdeci">CallICFGNode * getCBN(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00409">MHP.h:409</a></div></div>
802
+ <div class="ttc" id="classSVF_1_1TCT_html_a1602d02773578bca73dcbd29b95c67d0"><div class="ttname"><a href="classSVF_1_1TCT.html#a1602d02773578bca73dcbd29b95c67d0">SVF::TCT::getThreadCallGraph</a></div><div class="ttdeci">ThreadCallGraph * getThreadCallGraph() const</div><div class="ttdoc">Get TCG. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00188">TCT.h:188</a></div></div>
803
803
  <div class="ttc" id="classSVF_1_1ThreadCallGraph_html_a07d3db6ffe8d75effd6fbc3856c484fe"><div class="ttname"><a href="classSVF_1_1ThreadCallGraph.html#a07d3db6ffe8d75effd6fbc3856c484fe">SVF::ThreadCallGraph::isForksite</a></div><div class="ttdeci">bool isForksite(const CallICFGNode *csInst)</div><div class="ttdef"><b>Definition:</b> <a href="ThreadCallGraph_8h_source.html#l00257">ThreadCallGraph.h:257</a></div></div>
804
804
  <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>
805
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_acd4308b99446c277ccb3407103fe21d0"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#acd4308b99446c277ccb3407103fe21d0">SVF::ForkJoinAnalysis::getForkedThread</a></div><div class="ttdeci">const Value * getForkedThread(const Instruction *call)</div><div class="ttdoc">Get forked thread. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00484">MHP.h:484</a></div></div>
805
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_acd4308b99446c277ccb3407103fe21d0"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#acd4308b99446c277ccb3407103fe21d0">SVF::ForkJoinAnalysis::getForkedThread</a></div><div class="ttdeci">const Value * getForkedThread(const Instruction *call)</div><div class="ttdoc">Get forked thread. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00506">MHP.h:506</a></div></div>
806
806
  <div class="ttc" id="namespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00072">BasicTypes.h:72</a></div></div>
807
807
  <div class="ttc" id="classSVF_1_1PTASCEV_html"><div class="ttname"><a href="classSVF_1_1PTASCEV.html">SVF::PTASCEV</a></div><div class="ttdef"><b>Definition:</b> <a href="DataFlowUtil_8h_source.html#l00044">DataFlowUtil.h:44</a></div></div>
808
808
  </div><!-- fragment -->
@@ -842,9 +842,9 @@ Private Attributes</h2></td></tr>
842
842
  </table>
843
843
  </div><div class="memdoc">
844
844
 
845
- <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00493">493</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
846
- <div class="fragment"><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; {</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8ad9b8cb0e6300b2ffc55244e53cece6">getTCG</a>()-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#a317e09edb29b110cf4273009551d31ec">getCallees</a>(<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a94d65f9e22a13772042b2af652cf5538">getCBN</a>(inst), callees);</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; <span class="keywordflow">return</span> callees;</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; }</div><div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a94d65f9e22a13772042b2af652cf5538"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a94d65f9e22a13772042b2af652cf5538">SVF::ForkJoinAnalysis::getCBN</a></div><div class="ttdeci">CallICFGNode * getCBN(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00387">MHP.h:387</a></div></div>
847
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a8ad9b8cb0e6300b2ffc55244e53cece6"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a8ad9b8cb0e6300b2ffc55244e53cece6">SVF::ForkJoinAnalysis::getTCG</a></div><div class="ttdeci">ThreadCallGraph * getTCG() const</div><div class="ttdoc">ThreadCallGraph. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00499">MHP.h:499</a></div></div>
845
+ <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00515">515</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
846
+ <div class="fragment"><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; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8ad9b8cb0e6300b2ffc55244e53cece6">getTCG</a>()-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#a317e09edb29b110cf4273009551d31ec">getCallees</a>(<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a94d65f9e22a13772042b2af652cf5538">getCBN</a>(inst), callees);</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; <span class="keywordflow">return</span> callees;</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; }</div><div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a94d65f9e22a13772042b2af652cf5538"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a94d65f9e22a13772042b2af652cf5538">SVF::ForkJoinAnalysis::getCBN</a></div><div class="ttdeci">CallICFGNode * getCBN(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00409">MHP.h:409</a></div></div>
847
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a8ad9b8cb0e6300b2ffc55244e53cece6"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a8ad9b8cb0e6300b2ffc55244e53cece6">SVF::ForkJoinAnalysis::getTCG</a></div><div class="ttdeci">ThreadCallGraph * getTCG() const</div><div class="ttdoc">ThreadCallGraph. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00521">MHP.h:521</a></div></div>
848
848
  <div class="ttc" id="classSVF_1_1PTACallGraph_html_a317e09edb29b110cf4273009551d31ec"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#a317e09edb29b110cf4273009551d31ec">SVF::PTACallGraph::getCallees</a></div><div class="ttdeci">void getCallees(const CallICFGNode *cs, FunctionSet &amp;callees)</div><div class="ttdoc">Get all callees for a callsite. </div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00382">PTACallGraph.h:382</a></div></div>
849
849
  </div><!-- fragment -->
850
850
  </div>
@@ -873,9 +873,9 @@ Private Attributes</h2></td></tr>
873
873
  </table>
874
874
  </div><div class="memdoc">
875
875
 
876
- <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00387">387</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
877
- <div class="fragment"><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; {</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#a238810a60f1010c5177e01683c8c1159">getCallICFGNode</a>(inst);</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; }</div><div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a2c6ce7aa04c399746d89230be0e0f1ce"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">SVF::ForkJoinAnalysis::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00540">MHP.h:540</a></div></div>
878
- <div class="ttc" id="classSVF_1_1TCT_html_a238810a60f1010c5177e01683c8c1159"><div class="ttname"><a href="classSVF_1_1TCT.html#a238810a60f1010c5177e01683c8c1159">SVF::TCT::getCallICFGNode</a></div><div class="ttdeci">CallICFGNode * getCallICFGNode(const Instruction *inst)</div><div class="ttdoc">Get CallICFGNode given inst. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00150">TCT.h:150</a></div></div>
876
+ <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00409">409</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
877
+ <div class="fragment"><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; {</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#a238810a60f1010c5177e01683c8c1159">getCallICFGNode</a>(inst);</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; }</div><div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a2c6ce7aa04c399746d89230be0e0f1ce"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">SVF::ForkJoinAnalysis::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00562">MHP.h:562</a></div></div>
878
+ <div class="ttc" id="classSVF_1_1TCT_html_a238810a60f1010c5177e01683c8c1159"><div class="ttname"><a href="classSVF_1_1TCT.html#a238810a60f1010c5177e01683c8c1159">SVF::TCT::getCallICFGNode</a></div><div class="ttdeci">CallICFGNode * getCallICFGNode(const Instruction *inst)</div><div class="ttdoc">Get CallICFGNode given inst. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00172">TCT.h:172</a></div></div>
879
879
  </div><!-- fragment -->
880
880
  </div>
881
881
  </div>
@@ -898,22 +898,22 @@ Private Attributes</h2></td></tr>
898
898
  <p>Get directly and indirectly joined threadIDs based on a context-sensitive join site. </p>
899
899
  <p>Return thread id(s) which are joined at this join site (1) thread t1 directly joins thread t2 (2) thread t1 indirectly joins thread t3 via directly joining t2 (t2 fully joins its child thread t3) </p>
900
900
 
901
- <p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#l00968">968</a> of file <a class="el" href="MHP_8cpp_source.html">MHP.cpp</a>.</p>
902
- <div class="fragment"><div class="line"><a name="l00969"></a><span class="lineno"> 969</span>&#160;{</div><div class="line"><a name="l00970"></a><span class="lineno"> 970</span>&#160;</div><div class="line"><a name="l00971"></a><span class="lineno"> 971</span>&#160; CxtStmtToTIDMap::const_iterator it = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ab5678bd46e573070827cc413f0e0d5be">dirAndIndJoinMap</a>.find(cs);</div><div class="line"><a name="l00972"></a><span class="lineno"> 972</span>&#160; <span class="keywordflow">if</span>(it!=<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ab5678bd46e573070827cc413f0e0d5be">dirAndIndJoinMap</a>.end())</div><div class="line"><a name="l00973"></a><span class="lineno"> 973</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00974"></a><span class="lineno"> 974</span>&#160;</div><div class="line"><a name="l00975"></a><span class="lineno"> 975</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a>&amp; directJoinTids = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a819ef18524ee9104b920d1a465c61da1">getDirectlyJoinedTid</a>(cs);</div><div class="line"><a name="l00976"></a><span class="lineno"> 976</span>&#160; <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> allJoinTids = directJoinTids;</div><div class="line"><a name="l00977"></a><span class="lineno"> 977</span>&#160;</div><div class="line"><a name="l00978"></a><span class="lineno"> 978</span>&#160; <a class="code" href="classSVF_1_1FIFOWorkList.html">FIFOWorkList&lt;NodeID&gt;</a> worklist;</div><div class="line"><a name="l00979"></a><span class="lineno"> 979</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="l00980"></a><span class="lineno"> 980</span>&#160; {</div><div class="line"><a name="l00981"></a><span class="lineno"> 981</span>&#160; worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">push</a>(*it);</div><div class="line"><a name="l00982"></a><span class="lineno"> 982</span>&#160; }</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; <span class="keywordflow">while</span>(!worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#a7056704c224dfb4b57287fe90c004aa8">empty</a>())</div><div class="line"><a name="l00985"></a><span class="lineno"> 985</span>&#160; {</div><div class="line"><a name="l00986"></a><span class="lineno"> 986</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> tid = worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#a8fa72918fce7e9c0b2dc34b683a797c6">pop</a>();</div><div class="line"><a name="l00987"></a><span class="lineno"> 987</span>&#160; <a class="code" href="classSVF_1_1TCTNode.html">TCTNode</a>* node = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#a7b4ad0b052e1f8b6869733eef15f4e4d">getTCTNode</a>(tid);</div><div class="line"><a name="l00988"></a><span class="lineno"> 988</span>&#160; <span class="keywordflow">for</span>(TCT::ThreadCreateEdgeSet::const_iterator it = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#a511c2ee4cfdc01a720135b2cd493fe3b">getChildrenBegin</a>(node), eit = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#af47837e30a80e8d6684f3ee6001afb7a">getChildrenEnd</a>(node); it!=eit; ++it)</div><div class="line"><a name="l00989"></a><span class="lineno"> 989</span>&#160; {</div><div class="line"><a name="l00990"></a><span class="lineno"> 990</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> childTid = (*it)-&gt;getDstID();</div><div class="line"><a name="l00991"></a><span class="lineno"> 991</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ab55532eefbcef639ced957ad82fbd340">isFullJoin</a>(tid,childTid))</div><div class="line"><a name="l00992"></a><span class="lineno"> 992</span>&#160; {</div><div class="line"><a name="l00993"></a><span class="lineno"> 993</span>&#160; allJoinTids.<a class="code" href="classSVF_1_1SparseBitVector.html#a61bd86909a141f9de873d92c0f904832">set</a>(childTid);</div><div class="line"><a name="l00994"></a><span class="lineno"> 994</span>&#160; worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">push</a>(childTid);</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; }</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; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ab5678bd46e573070827cc413f0e0d5be">dirAndIndJoinMap</a>[cs] = 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; <span class="keywordflow">return</span> allJoinTids;</div><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>&#160;}</div><div class="ttc" id="classSVF_1_1SparseBitVector_1_1SparseBitVectorIterator_html"><div class="ttname"><a href="classSVF_1_1SparseBitVector_1_1SparseBitVectorIterator.html">SVF::SparseBitVector::SparseBitVectorIterator</a></div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l00534">SparseBitVector.h:534</a></div></div>
901
+ <p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#l00990">990</a> of file <a class="el" href="MHP_8cpp_source.html">MHP.cpp</a>.</p>
902
+ <div class="fragment"><div class="line"><a name="l00991"></a><span class="lineno"> 991</span>&#160;{</div><div class="line"><a name="l00992"></a><span class="lineno"> 992</span>&#160;</div><div class="line"><a name="l00993"></a><span class="lineno"> 993</span>&#160; CxtStmtToTIDMap::const_iterator it = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ab5678bd46e573070827cc413f0e0d5be">dirAndIndJoinMap</a>.find(cs);</div><div class="line"><a name="l00994"></a><span class="lineno"> 994</span>&#160; <span class="keywordflow">if</span>(it!=<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ab5678bd46e573070827cc413f0e0d5be">dirAndIndJoinMap</a>.end())</div><div class="line"><a name="l00995"></a><span class="lineno"> 995</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</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; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a>&amp; directJoinTids = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a819ef18524ee9104b920d1a465c61da1">getDirectlyJoinedTid</a>(cs);</div><div class="line"><a name="l00998"></a><span class="lineno"> 998</span>&#160; <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> allJoinTids = directJoinTids;</div><div class="line"><a name="l00999"></a><span class="lineno"> 999</span>&#160;</div><div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160; <a class="code" href="classSVF_1_1FIFOWorkList.html">FIFOWorkList&lt;NodeID&gt;</a> worklist;</div><div class="line"><a name="l01001"></a><span class="lineno"> 1001</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="l01002"></a><span class="lineno"> 1002</span>&#160; {</div><div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>&#160; worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">push</a>(*it);</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;</div><div class="line"><a name="l01006"></a><span class="lineno"> 1006</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="l01007"></a><span class="lineno"> 1007</span>&#160; {</div><div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> tid = worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#a8fa72918fce7e9c0b2dc34b683a797c6">pop</a>();</div><div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>&#160; <a class="code" href="classSVF_1_1TCTNode.html">TCTNode</a>* node = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#a7b4ad0b052e1f8b6869733eef15f4e4d">getTCTNode</a>(tid);</div><div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>&#160; <span class="keywordflow">for</span>(TCT::ThreadCreateEdgeSet::const_iterator it = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#a511c2ee4cfdc01a720135b2cd493fe3b">getChildrenBegin</a>(node), eit = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#af47837e30a80e8d6684f3ee6001afb7a">getChildrenEnd</a>(node); it!=eit; ++it)</div><div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>&#160; {</div><div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> childTid = (*it)-&gt;getDstID();</div><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ab55532eefbcef639ced957ad82fbd340">isFullJoin</a>(tid,childTid))</div><div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>&#160; {</div><div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>&#160; allJoinTids.<a class="code" href="classSVF_1_1SparseBitVector.html#a61bd86909a141f9de873d92c0f904832">set</a>(childTid);</div><div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>&#160; worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">push</a>(childTid);</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; }</div><div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>&#160; }</div><div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>&#160;</div><div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ab5678bd46e573070827cc413f0e0d5be">dirAndIndJoinMap</a>[cs] = allJoinTids;</div><div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>&#160;</div><div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>&#160; <span class="keywordflow">return</span> allJoinTids;</div><div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>&#160;}</div><div class="ttc" id="classSVF_1_1SparseBitVector_1_1SparseBitVectorIterator_html"><div class="ttname"><a href="classSVF_1_1SparseBitVector_1_1SparseBitVectorIterator.html">SVF::SparseBitVector::SparseBitVectorIterator</a></div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l00534">SparseBitVector.h:534</a></div></div>
903
903
  <div class="ttc" id="namespaceSVF_html_a43a65e0d33af3c743294f7a1139d2301"><div class="ttname"><a href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00019">MTAResultValidator.h:19</a></div></div>
904
- <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#l00187">TCT.h:187</a></div></div>
905
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a2c6ce7aa04c399746d89230be0e0f1ce"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">SVF::ForkJoinAnalysis::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00540">MHP.h:540</a></div></div>
904
+ <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#l00209">TCT.h:209</a></div></div>
905
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a2c6ce7aa04c399746d89230be0e0f1ce"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">SVF::ForkJoinAnalysis::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00562">MHP.h:562</a></div></div>
906
906
  <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>
907
- <div class="ttc" id="classSVF_1_1TCTNode_html"><div class="ttname"><a href="classSVF_1_1TCTNode.html">SVF::TCTNode</a></div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00065">TCT.h:65</a></div></div>
908
- <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#l00176">TCT.h:176</a></div></div>
907
+ <div class="ttc" id="classSVF_1_1TCTNode_html"><div class="ttname"><a href="classSVF_1_1TCTNode.html">SVF::TCTNode</a></div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00087">TCT.h:87</a></div></div>
908
+ <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#l00198">TCT.h:198</a></div></div>
909
909
  <div class="ttc" id="classSVF_1_1FIFOWorkList_html_ad4c6a48b60c870d63049fe7272cc7eb8"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">SVF::FIFOWorkList::push</a></div><div class="ttdeci">bool push(Data data)</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00159">WorkList.h:159</a></div></div>
910
- <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#l00191">TCT.h:191</a></div></div>
911
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_ab55532eefbcef639ced957ad82fbd340"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#ab55532eefbcef639ced957ad82fbd340">SVF::ForkJoinAnalysis::isFullJoin</a></div><div class="ttdeci">bool isFullJoin(NodeID tid1, NodeID tid2)</div><div class="ttdoc">Whether t1 fully joins t2. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00329">MHP.h:329</a></div></div>
910
+ <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#l00213">TCT.h:213</a></div></div>
911
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_ab55532eefbcef639ced957ad82fbd340"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#ab55532eefbcef639ced957ad82fbd340">SVF::ForkJoinAnalysis::isFullJoin</a></div><div class="ttdeci">bool isFullJoin(NodeID tid1, NodeID tid2)</div><div class="ttdoc">Whether t1 fully joins t2. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00351">MHP.h:351</a></div></div>
912
912
  <div class="ttc" id="classSVF_1_1FIFOWorkList_html"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html">SVF::FIFOWorkList&lt; NodeID &gt;</a></div></div>
913
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_ab5678bd46e573070827cc413f0e0d5be"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#ab5678bd46e573070827cc413f0e0d5be">SVF::ForkJoinAnalysis::dirAndIndJoinMap</a></div><div class="ttdeci">CxtStmtToTIDMap dirAndIndJoinMap</div><div class="ttdoc">maps a context-sensitive join site to directly and indirectly joined thread ids </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00544">MHP.h:544</a></div></div>
913
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_ab5678bd46e573070827cc413f0e0d5be"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#ab5678bd46e573070827cc413f0e0d5be">SVF::ForkJoinAnalysis::dirAndIndJoinMap</a></div><div class="ttdeci">CxtStmtToTIDMap dirAndIndJoinMap</div><div class="ttdoc">maps a context-sensitive join site to directly and indirectly joined thread ids </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00566">MHP.h:566</a></div></div>
914
914
  <div class="ttc" id="classSVF_1_1SparseBitVector_html"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html">SVF::SparseBitVector</a></div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l00460">SparseBitVector.h:460</a></div></div>
915
915
  <div class="ttc" id="classSVF_1_1SparseBitVector_html_a61bd86909a141f9de873d92c0f904832"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html#a61bd86909a141f9de873d92c0f904832">SVF::SparseBitVector::set</a></div><div class="ttdeci">void set(unsigned Idx)</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l00745">SparseBitVector.h:745</a></div></div>
916
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a819ef18524ee9104b920d1a465c61da1"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a819ef18524ee9104b920d1a465c61da1">SVF::ForkJoinAnalysis::getDirectlyJoinedTid</a></div><div class="ttdeci">NodeBS &amp; getDirectlyJoinedTid(const CxtStmt &amp;cs)</div><div class="ttdoc">Get directly joined threadIDs based on a context-sensitive join site. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00304">MHP.h:304</a></div></div>
916
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a819ef18524ee9104b920d1a465c61da1"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a819ef18524ee9104b920d1a465c61da1">SVF::ForkJoinAnalysis::getDirectlyJoinedTid</a></div><div class="ttdeci">NodeBS &amp; getDirectlyJoinedTid(const CxtStmt &amp;cs)</div><div class="ttdoc">Get directly joined threadIDs based on a context-sensitive join site. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00326">MHP.h:326</a></div></div>
917
917
  <div class="ttc" id="classSVF_1_1FIFOWorkList_html_a8fa72918fce7e9c0b2dc34b683a797c6"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html#a8fa72918fce7e9c0b2dc34b683a797c6">SVF::FIFOWorkList::pop</a></div><div class="ttdeci">Data pop()</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00174">WorkList.h:174</a></div></div>
918
918
  </div><!-- fragment -->
919
919
  </div>
@@ -944,8 +944,8 @@ Private Attributes</h2></td></tr>
944
944
 
945
945
  <p>Get directly joined threadIDs based on a context-sensitive join site. </p>
946
946
 
947
- <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00304">304</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
948
- <div class="fragment"><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; {</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#abf5b499f93a658636d09a62d14a47cad">directJoinMap</a>[cs];</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; }</div><div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_abf5b499f93a658636d09a62d14a47cad"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#abf5b499f93a658636d09a62d14a47cad">SVF::ForkJoinAnalysis::directJoinMap</a></div><div class="ttdeci">CxtStmtToTIDMap directJoinMap</div><div class="ttdoc">maps a context-sensitive join site to directly joined thread ids </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00543">MHP.h:543</a></div></div>
947
+ <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00326">326</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
948
+ <div class="fragment"><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; {</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#abf5b499f93a658636d09a62d14a47cad">directJoinMap</a>[cs];</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; }</div><div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_abf5b499f93a658636d09a62d14a47cad"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#abf5b499f93a658636d09a62d14a47cad">SVF::ForkJoinAnalysis::directJoinMap</a></div><div class="ttdeci">CxtStmtToTIDMap directJoinMap</div><div class="ttdoc">maps a context-sensitive join site to directly joined thread ids </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00565">MHP.h:565</a></div></div>
949
949
  </div><!-- fragment -->
950
950
  </div>
951
951
  </div>
@@ -975,15 +975,15 @@ Private Attributes</h2></td></tr>
975
975
 
976
976
  <p>Get exit instruction of the start routine function of tid's parent thread. </p>
977
977
 
978
- <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00339">339</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
979
- <div class="fragment"><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; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> parentTid = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#a516578af1f8666ff672e6611e61d7152">getParentThread</a>(tid);</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <span class="keyword">const</span> CxtThread&amp; parentct = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#a7b4ad0b052e1f8b6869733eef15f4e4d">getTCTNode</a>(parentTid)-&gt;<a class="code" href="classSVF_1_1TCTNode.html#a21591b19f6a9267151c31178f9543ee6">getCxtThread</a>();</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* parentRoutine = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#a7ccacac1c673b38215b90e4eb480581f">getStartRoutineOfCxtThread</a>(parentct);</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <span class="keyword">const</span> SVFFunction* svfFun = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a547b3bc62de65b9dbfc6dee55c063dd7">getSVFFunction</a>(parentRoutine);</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; <span class="keywordflow">return</span> &amp;(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a3ef84be7e91335c7b35c395d247f85ae">LLVMUtil::getFunExitBB</a>(svfFun)-&gt;back());</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; }</div><div class="ttc" id="classSVF_1_1TCT_html_a7ccacac1c673b38215b90e4eb480581f"><div class="ttname"><a href="classSVF_1_1TCT.html#a7ccacac1c673b38215b90e4eb480581f">SVF::TCT::getStartRoutineOfCxtThread</a></div><div class="ttdeci">const Function * getStartRoutineOfCxtThread(const CxtThread &amp;ct) const</div><div class="ttdoc">get the start routine function of a thread </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00338">TCT.h:338</a></div></div>
978
+ <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00361">361</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
979
+ <div class="fragment"><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; {</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> parentTid = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#a516578af1f8666ff672e6611e61d7152">getParentThread</a>(tid);</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; <span class="keyword">const</span> CxtThread&amp; parentct = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#a7b4ad0b052e1f8b6869733eef15f4e4d">getTCTNode</a>(parentTid)-&gt;<a class="code" href="classSVF_1_1TCTNode.html#a21591b19f6a9267151c31178f9543ee6">getCxtThread</a>();</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* parentRoutine = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#a7ccacac1c673b38215b90e4eb480581f">getStartRoutineOfCxtThread</a>(parentct);</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; <span class="keyword">const</span> SVFFunction* svfFun = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a547b3bc62de65b9dbfc6dee55c063dd7">getSVFFunction</a>(parentRoutine);</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; <span class="keywordflow">return</span> &amp;(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a3ef84be7e91335c7b35c395d247f85ae">LLVMUtil::getFunExitBB</a>(svfFun)-&gt;back());</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; }</div><div class="ttc" id="classSVF_1_1TCT_html_a7ccacac1c673b38215b90e4eb480581f"><div class="ttname"><a href="classSVF_1_1TCT.html#a7ccacac1c673b38215b90e4eb480581f">SVF::TCT::getStartRoutineOfCxtThread</a></div><div class="ttdeci">const Function * getStartRoutineOfCxtThread(const CxtThread &amp;ct) const</div><div class="ttdoc">get the start routine function of a thread </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00360">TCT.h:360</a></div></div>
980
980
  <div class="ttc" id="namespaceSVF_html_a43a65e0d33af3c743294f7a1139d2301"><div class="ttname"><a href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00019">MTAResultValidator.h:19</a></div></div>
981
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a2c6ce7aa04c399746d89230be0e0f1ce"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">SVF::ForkJoinAnalysis::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00540">MHP.h:540</a></div></div>
981
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a2c6ce7aa04c399746d89230be0e0f1ce"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">SVF::ForkJoinAnalysis::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00562">MHP.h:562</a></div></div>
982
982
  <div class="ttc" id="namespaceSVF_1_1LLVMUtil_html_a3ef84be7e91335c7b35c395d247f85ae"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a3ef84be7e91335c7b35c395d247f85ae">SVF::LLVMUtil::getFunExitBB</a></div><div class="ttdeci">const BasicBlock * getFunExitBB(const SVFFunction *svfFun)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00167">LLVMUtil.h:167</a></div></div>
983
- <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#l00176">TCT.h:176</a></div></div>
984
- <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#l00081">TCT.h:81</a></div></div>
983
+ <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#l00198">TCT.h:198</a></div></div>
984
+ <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#l00103">TCT.h:103</a></div></div>
985
985
  <div class="ttc" id="namespaceSVF_html_a5faee14fa1dd41447bc73ac365fe33c1"><div class="ttname"><a href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a></div><div class="ttdeci">llvm::Function Function</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00070">BasicTypes.h:70</a></div></div>
986
- <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#l00281">TCT.h:281</a></div></div>
986
+ <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#l00303">TCT.h:303</a></div></div>
987
987
  <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_acf40310917909e4234282c0695a43160"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">SVF::LLVMModuleSet::getLLVMModuleSet</a></div><div class="ttdeci">static LLVMModuleSet * getLLVMModuleSet()</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00070">LLVMModule.h:70</a></div></div>
988
988
  <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a547b3bc62de65b9dbfc6dee55c063dd7"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a547b3bc62de65b9dbfc6dee55c063dd7">SVF::LLVMModuleSet::getSVFFunction</a></div><div class="ttdeci">const SVFFunction * getSVFFunction(const Function *fun) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00114">LLVMModule.h:114</a></div></div>
989
989
  </div><!-- fragment -->
@@ -1015,10 +1015,10 @@ Private Attributes</h2></td></tr>
1015
1015
 
1016
1016
  <p>Get forked thread. </p>
1017
1017
 
1018
- <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00484">484</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
1019
- <div class="fragment"><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; {</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8ad9b8cb0e6300b2ffc55244e53cece6">getTCG</a>()-&gt;<a class="code" href="classSVF_1_1ThreadCallGraph.html#adcad8524a53baf256cd45503ec568c10">getThreadAPI</a>()-&gt;<a class="code" href="classSVF_1_1ThreadAPI.html#a11dc55f35c18bd1f46d00c21c7dc695e">getForkedThread</a>(call);</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; }</div><div class="ttc" id="classSVF_1_1ThreadCallGraph_html_adcad8524a53baf256cd45503ec568c10"><div class="ttname"><a href="classSVF_1_1ThreadCallGraph.html#adcad8524a53baf256cd45503ec568c10">SVF::ThreadCallGraph::getThreadAPI</a></div><div class="ttdeci">ThreadAPI * getThreadAPI() const</div><div class="ttdoc">Thread API. </div><div class="ttdef"><b>Definition:</b> <a href="ThreadCallGraph_8h_source.html#l00324">ThreadCallGraph.h:324</a></div></div>
1018
+ <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00506">506</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
1019
+ <div class="fragment"><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; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8ad9b8cb0e6300b2ffc55244e53cece6">getTCG</a>()-&gt;<a class="code" href="classSVF_1_1ThreadCallGraph.html#adcad8524a53baf256cd45503ec568c10">getThreadAPI</a>()-&gt;<a class="code" href="classSVF_1_1ThreadAPI.html#a11dc55f35c18bd1f46d00c21c7dc695e">getForkedThread</a>(call);</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; }</div><div class="ttc" id="classSVF_1_1ThreadCallGraph_html_adcad8524a53baf256cd45503ec568c10"><div class="ttname"><a href="classSVF_1_1ThreadCallGraph.html#adcad8524a53baf256cd45503ec568c10">SVF::ThreadCallGraph::getThreadAPI</a></div><div class="ttdeci">ThreadAPI * getThreadAPI() const</div><div class="ttdoc">Thread API. </div><div class="ttdef"><b>Definition:</b> <a href="ThreadCallGraph_8h_source.html#l00324">ThreadCallGraph.h:324</a></div></div>
1020
1020
  <div class="ttc" id="classSVF_1_1ThreadAPI_html_a11dc55f35c18bd1f46d00c21c7dc695e"><div class="ttname"><a href="classSVF_1_1ThreadAPI.html#a11dc55f35c18bd1f46d00c21c7dc695e">SVF::ThreadAPI::getForkedThread</a></div><div class="ttdeci">const Value * getForkedThread(const Instruction *inst) const</div><div class="ttdoc">Return arguments/attributes of pthread_create / hare_parallel_for. </div><div class="ttdef"><b>Definition:</b> <a href="ThreadAPI_8h_source.html#l00155">ThreadAPI.h:155</a></div></div>
1021
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a8ad9b8cb0e6300b2ffc55244e53cece6"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a8ad9b8cb0e6300b2ffc55244e53cece6">SVF::ForkJoinAnalysis::getTCG</a></div><div class="ttdeci">ThreadCallGraph * getTCG() const</div><div class="ttdoc">ThreadCallGraph. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00499">MHP.h:499</a></div></div>
1021
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a8ad9b8cb0e6300b2ffc55244e53cece6"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a8ad9b8cb0e6300b2ffc55244e53cece6">SVF::ForkJoinAnalysis::getTCG</a></div><div class="ttdeci">ThreadCallGraph * getTCG() const</div><div class="ttdoc">ThreadCallGraph. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00521">MHP.h:521</a></div></div>
1022
1022
  </div><!-- fragment -->
1023
1023
  </div>
1024
1024
  </div>
@@ -1048,10 +1048,10 @@ Private Attributes</h2></td></tr>
1048
1048
 
1049
1049
  <p>Get joined thread. </p>
1050
1050
 
1051
- <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00489">489</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
1052
- <div class="fragment"><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; {</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8ad9b8cb0e6300b2ffc55244e53cece6">getTCG</a>()-&gt;<a class="code" href="classSVF_1_1ThreadCallGraph.html#adcad8524a53baf256cd45503ec568c10">getThreadAPI</a>()-&gt;<a class="code" href="classSVF_1_1ThreadAPI.html#ac9f3cc080275ce7d76dd2f56fc7c6434">getJoinedThread</a>(call);</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; }</div><div class="ttc" id="classSVF_1_1ThreadAPI_html_ac9f3cc080275ce7d76dd2f56fc7c6434"><div class="ttname"><a href="classSVF_1_1ThreadAPI.html#ac9f3cc080275ce7d76dd2f56fc7c6434">SVF::ThreadAPI::getJoinedThread</a></div><div class="ttdeci">const Value * getJoinedThread(const Instruction *inst) const</div><div class="ttdoc">Return arguments/attributes of pthread_join. </div><div class="ttdef"><b>Definition:</b> <a href="ThreadAPI_8h_source.html#l00237">ThreadAPI.h:237</a></div></div>
1051
+ <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00511">511</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
1052
+ <div class="fragment"><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; {</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8ad9b8cb0e6300b2ffc55244e53cece6">getTCG</a>()-&gt;<a class="code" href="classSVF_1_1ThreadCallGraph.html#adcad8524a53baf256cd45503ec568c10">getThreadAPI</a>()-&gt;<a class="code" href="classSVF_1_1ThreadAPI.html#ac9f3cc080275ce7d76dd2f56fc7c6434">getJoinedThread</a>(call);</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; }</div><div class="ttc" id="classSVF_1_1ThreadAPI_html_ac9f3cc080275ce7d76dd2f56fc7c6434"><div class="ttname"><a href="classSVF_1_1ThreadAPI.html#ac9f3cc080275ce7d76dd2f56fc7c6434">SVF::ThreadAPI::getJoinedThread</a></div><div class="ttdeci">const Value * getJoinedThread(const Instruction *inst) const</div><div class="ttdoc">Return arguments/attributes of pthread_join. </div><div class="ttdef"><b>Definition:</b> <a href="ThreadAPI_8h_source.html#l00237">ThreadAPI.h:237</a></div></div>
1053
1053
  <div class="ttc" id="classSVF_1_1ThreadCallGraph_html_adcad8524a53baf256cd45503ec568c10"><div class="ttname"><a href="classSVF_1_1ThreadCallGraph.html#adcad8524a53baf256cd45503ec568c10">SVF::ThreadCallGraph::getThreadAPI</a></div><div class="ttdeci">ThreadAPI * getThreadAPI() const</div><div class="ttdoc">Thread API. </div><div class="ttdef"><b>Definition:</b> <a href="ThreadCallGraph_8h_source.html#l00324">ThreadCallGraph.h:324</a></div></div>
1054
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a8ad9b8cb0e6300b2ffc55244e53cece6"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a8ad9b8cb0e6300b2ffc55244e53cece6">SVF::ForkJoinAnalysis::getTCG</a></div><div class="ttdeci">ThreadCallGraph * getTCG() const</div><div class="ttdoc">ThreadCallGraph. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00499">MHP.h:499</a></div></div>
1054
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a8ad9b8cb0e6300b2ffc55244e53cece6"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a8ad9b8cb0e6300b2ffc55244e53cece6">SVF::ForkJoinAnalysis::getTCG</a></div><div class="ttdeci">ThreadCallGraph * getTCG() const</div><div class="ttdoc">ThreadCallGraph. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00521">MHP.h:521</a></div></div>
1055
1055
  </div><!-- fragment -->
1056
1056
  </div>
1057
1057
  </div>
@@ -1081,9 +1081,9 @@ Private Attributes</h2></td></tr>
1081
1081
 
1082
1082
  <p>Get loop for join site. </p>
1083
1083
 
1084
- <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00349">349</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
1085
- <div class="fragment"><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; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#a52a707bf6f278e810f440c279f5261dc">getJoinLoop</a>(inst);</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; }</div><div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a2c6ce7aa04c399746d89230be0e0f1ce"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">SVF::ForkJoinAnalysis::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00540">MHP.h:540</a></div></div>
1086
- <div class="ttc" id="classSVF_1_1TCT_html_a52a707bf6f278e810f440c279f5261dc"><div class="ttname"><a href="classSVF_1_1TCT.html#a52a707bf6f278e810f440c279f5261dc">SVF::TCT::getJoinLoop</a></div><div class="ttdeci">const Loop * getJoinLoop(const Instruction *join)</div><div class="ttdoc">Get loop for join site. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00346">TCT.h:346</a></div></div>
1084
+ <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00371">371</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
1085
+ <div class="fragment"><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; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#a52a707bf6f278e810f440c279f5261dc">getJoinLoop</a>(inst);</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; }</div><div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a2c6ce7aa04c399746d89230be0e0f1ce"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">SVF::ForkJoinAnalysis::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00562">MHP.h:562</a></div></div>
1086
+ <div class="ttc" id="classSVF_1_1TCT_html_a52a707bf6f278e810f440c279f5261dc"><div class="ttname"><a href="classSVF_1_1TCT.html#a52a707bf6f278e810f440c279f5261dc">SVF::TCT::getJoinLoop</a></div><div class="ttdeci">const Loop * getJoinLoop(const Instruction *join)</div><div class="ttdoc">Get loop for join site. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00368">TCT.h:368</a></div></div>
1087
1087
  </div><!-- fragment -->
1088
1088
  </div>
1089
1089
  </div>
@@ -1114,9 +1114,9 @@ Private Attributes</h2></td></tr>
1114
1114
  <p>Mark thread flags for cxtStmt. </p>
1115
1115
  <p>Get the flag for a cxtStmt </p>
1116
1116
 
1117
- <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00394">394</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
1118
- <div class="fragment"><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; {</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; CxtStmtToAliveFlagMap::const_iterator it = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#aa31b3f3d51b963ccd475e66b77143dba">cxtStmtToAliveFlagMap</a>.find(cs);</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; <span class="keywordflow">if</span>(it==<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#aa31b3f3d51b963ccd475e66b77143dba">cxtStmtToAliveFlagMap</a>.end())</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; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#aa31b3f3d51b963ccd475e66b77143dba">cxtStmtToAliveFlagMap</a>[cs] = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631a9d940442c782d5a1297102209540182f">Empty</a>;</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631a9d940442c782d5a1297102209540182f">Empty</a>;</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; }</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; }</div><div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_aa31b3f3d51b963ccd475e66b77143dba"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#aa31b3f3d51b963ccd475e66b77143dba">SVF::ForkJoinAnalysis::cxtStmtToAliveFlagMap</a></div><div class="ttdeci">CxtStmtToAliveFlagMap cxtStmtToAliveFlagMap</div><div class="ttdoc">flags for context-sensitive statements </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00541">MHP.h:541</a></div></div>
1119
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a8d40e687caf8999369621ed385dfc631a9d940442c782d5a1297102209540182f"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631a9d940442c782d5a1297102209540182f">SVF::ForkJoinAnalysis::Empty</a></div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00279">MHP.h:279</a></div></div>
1117
+ <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00416">416</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
1118
+ <div class="fragment"><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; {</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; CxtStmtToAliveFlagMap::const_iterator it = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#aa31b3f3d51b963ccd475e66b77143dba">cxtStmtToAliveFlagMap</a>.find(cs);</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; <span class="keywordflow">if</span>(it==<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#aa31b3f3d51b963ccd475e66b77143dba">cxtStmtToAliveFlagMap</a>.end())</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; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#aa31b3f3d51b963ccd475e66b77143dba">cxtStmtToAliveFlagMap</a>[cs] = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631a9d940442c782d5a1297102209540182f">Empty</a>;</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631a9d940442c782d5a1297102209540182f">Empty</a>;</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="keywordflow">else</span></div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; }</div><div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_aa31b3f3d51b963ccd475e66b77143dba"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#aa31b3f3d51b963ccd475e66b77143dba">SVF::ForkJoinAnalysis::cxtStmtToAliveFlagMap</a></div><div class="ttdeci">CxtStmtToAliveFlagMap cxtStmtToAliveFlagMap</div><div class="ttdoc">flags for context-sensitive statements </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00563">MHP.h:563</a></div></div>
1119
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a8d40e687caf8999369621ed385dfc631a9d940442c782d5a1297102209540182f"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631a9d940442c782d5a1297102209540182f">SVF::ForkJoinAnalysis::Empty</a></div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00301">MHP.h:301</a></div></div>
1120
1120
  </div><!-- fragment -->
1121
1121
  </div>
1122
1122
  </div>
@@ -1156,9 +1156,9 @@ Private Attributes</h2></td></tr>
1156
1156
 
1157
1157
  <p>Get the next instructions following control flow. </p>
1158
1158
 
1159
- <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00458">458</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
1160
- <div class="fragment"><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; {</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#a97c3081d0648a8d483b07f23bbd1b6bf">getNextInsts</a>(inst,instSet);</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; }</div><div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a2c6ce7aa04c399746d89230be0e0f1ce"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">SVF::ForkJoinAnalysis::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00540">MHP.h:540</a></div></div>
1161
- <div class="ttc" id="classSVF_1_1TCT_html_a97c3081d0648a8d483b07f23bbd1b6bf"><div class="ttname"><a href="classSVF_1_1TCT.html#a97c3081d0648a8d483b07f23bbd1b6bf">SVF::TCT::getNextInsts</a></div><div class="ttdeci">void getNextInsts(const Instruction *inst, InstVec &amp;instSet)</div><div class="ttdoc">Get the next instructions following control flow. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#l00448">TCT.cpp:448</a></div></div>
1159
+ <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00480">480</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
1160
+ <div class="fragment"><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; {</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#a97c3081d0648a8d483b07f23bbd1b6bf">getNextInsts</a>(inst,instSet);</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; }</div><div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a2c6ce7aa04c399746d89230be0e0f1ce"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">SVF::ForkJoinAnalysis::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00562">MHP.h:562</a></div></div>
1161
+ <div class="ttc" id="classSVF_1_1TCT_html_a97c3081d0648a8d483b07f23bbd1b6bf"><div class="ttname"><a href="classSVF_1_1TCT.html#a97c3081d0648a8d483b07f23bbd1b6bf">SVF::TCT::getNextInsts</a></div><div class="ttdeci">void getNextInsts(const Instruction *inst, InstVec &amp;instSet)</div><div class="ttdoc">Get the next instructions following control flow. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#l00471">TCT.cpp:471</a></div></div>
1162
1162
  </div><!-- fragment -->
1163
1163
  </div>
1164
1164
  </div>
@@ -1188,9 +1188,9 @@ Private Attributes</h2></td></tr>
1188
1188
 
1189
1189
  <p>Get SE for function. </p>
1190
1190
 
1191
- <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00354">354</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
1192
- <div class="fragment"><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; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#ac66b3a193240c17c3f06437442b2d8bf">getSE</a>(inst);</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; }</div><div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a2c6ce7aa04c399746d89230be0e0f1ce"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">SVF::ForkJoinAnalysis::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00540">MHP.h:540</a></div></div>
1193
- <div class="ttc" id="classSVF_1_1TCT_html_ac66b3a193240c17c3f06437442b2d8bf"><div class="ttname"><a href="classSVF_1_1TCT.html#ac66b3a193240c17c3f06437442b2d8bf">SVF::TCT::getSE</a></div><div class="ttdeci">ScalarEvolution * getSE(const Instruction *inst)</div><div class="ttdoc">Get SE for function. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#l00378">TCT.cpp:378</a></div></div>
1191
+ <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00376">376</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
1192
+ <div class="fragment"><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; {</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#ac66b3a193240c17c3f06437442b2d8bf">getSE</a>(inst);</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; }</div><div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a2c6ce7aa04c399746d89230be0e0f1ce"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">SVF::ForkJoinAnalysis::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00562">MHP.h:562</a></div></div>
1193
+ <div class="ttc" id="classSVF_1_1TCT_html_ac66b3a193240c17c3f06437442b2d8bf"><div class="ttname"><a href="classSVF_1_1TCT.html#ac66b3a193240c17c3f06437442b2d8bf">SVF::TCT::getSE</a></div><div class="ttdeci">ScalarEvolution * getSE(const Instruction *inst)</div><div class="ttdoc">Get SE for function. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#l00401">TCT.cpp:401</a></div></div>
1194
1194
  </div><!-- fragment -->
1195
1195
  </div>
1196
1196
  </div>
@@ -1219,9 +1219,9 @@ Private Attributes</h2></td></tr>
1219
1219
 
1220
1220
  <p><a class="el" href="classSVF_1_1ThreadCallGraph.html">ThreadCallGraph</a>. </p>
1221
1221
 
1222
- <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00499">499</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
1223
- <div class="fragment"><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; {</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#a1602d02773578bca73dcbd29b95c67d0">getThreadCallGraph</a>();</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; }</div><div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a2c6ce7aa04c399746d89230be0e0f1ce"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">SVF::ForkJoinAnalysis::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00540">MHP.h:540</a></div></div>
1224
- <div class="ttc" id="classSVF_1_1TCT_html_a1602d02773578bca73dcbd29b95c67d0"><div class="ttname"><a href="classSVF_1_1TCT.html#a1602d02773578bca73dcbd29b95c67d0">SVF::TCT::getThreadCallGraph</a></div><div class="ttdeci">ThreadCallGraph * getThreadCallGraph() const</div><div class="ttdoc">Get TCG. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00166">TCT.h:166</a></div></div>
1222
+ <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00521">521</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
1223
+ <div class="fragment"><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; {</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#a1602d02773578bca73dcbd29b95c67d0">getThreadCallGraph</a>();</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; }</div><div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a2c6ce7aa04c399746d89230be0e0f1ce"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">SVF::ForkJoinAnalysis::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00562">MHP.h:562</a></div></div>
1224
+ <div class="ttc" id="classSVF_1_1TCT_html_a1602d02773578bca73dcbd29b95c67d0"><div class="ttname"><a href="classSVF_1_1TCT.html#a1602d02773578bca73dcbd29b95c67d0">SVF::TCT::getThreadCallGraph</a></div><div class="ttdeci">ThreadCallGraph * getThreadCallGraph() const</div><div class="ttdoc">Get TCG. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00188">TCT.h:188</a></div></div>
1225
1225
  </div><!-- fragment -->
1226
1226
  </div>
1227
1227
  </div>
@@ -1261,20 +1261,20 @@ Private Attributes</h2></td></tr>
1261
1261
 
1262
1262
  <p>Handle call. </p>
1263
1263
 
1264
- <p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#l00878">878</a> of file <a class="el" href="MHP_8cpp_source.html">MHP.cpp</a>.</p>
1265
- <div class="fragment"><div class="line"><a name="l00879"></a><span class="lineno"> 879</span>&#160;{</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; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">CallInst</a>* call = SVFUtil::cast&lt;CallInst&gt;(cts.<a class="code" href="classSVF_1_1CxtStmt.html#a5e8c4b10eb5c3240d2e21a020ed834a6">getStmt</a>());</div><div class="line"><a name="l00882"></a><span class="lineno"> 882</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="l00883"></a><span class="lineno"> 883</span>&#160; <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cbn = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a94d65f9e22a13772042b2af652cf5538">getCBN</a>(call);</div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8ad9b8cb0e6300b2ffc55244e53cece6">getTCG</a>()-&gt;hasCallGraphEdge(cbn))</div><div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160; {</div><div class="line"><a name="l00886"></a><span class="lineno"> 886</span>&#160; <span class="keywordflow">for</span> (PTACallGraph::CallGraphEdgeSet::const_iterator cgIt = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8ad9b8cb0e6300b2ffc55244e53cece6">getTCG</a>()-&gt;getCallEdgeBegin(cbn),</div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span>&#160; ecgIt = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8ad9b8cb0e6300b2ffc55244e53cece6">getTCG</a>()-&gt;getCallEdgeEnd(cbn); cgIt != ecgIt; ++cgIt)</div><div class="line"><a name="l00888"></a><span class="lineno"> 888</span>&#160; {</div><div class="line"><a name="l00889"></a><span class="lineno"> 889</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="l00890"></a><span class="lineno"> 890</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* callee = svfcallee-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>();</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_1ForkJoinAnalysis.html#aaf70954762aa86f835d799994726790e">pushCxt</a>(newCxt,call,callee);</div><div class="line"><a name="l00895"></a><span class="lineno"> 895</span>&#160; <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a> newCts(newCxt,&amp;(callee-&gt;getEntryBlock().front()));</div><div class="line"><a name="l00896"></a><span class="lineno"> 896</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ac483d3b0e9084c2033e177eda9ac9215">markCxtStmtFlag</a>(newCts,cts);</div><div class="line"><a name="l00897"></a><span class="lineno"> 897</span>&#160; }</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="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00125">BasicTypes.h:125</a></div></div>
1264
+ <p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#l00900">900</a> of file <a class="el" href="MHP_8cpp_source.html">MHP.cpp</a>.</p>
1265
+ <div class="fragment"><div class="line"><a name="l00901"></a><span class="lineno"> 901</span>&#160;{</div><div class="line"><a name="l00902"></a><span class="lineno"> 902</span>&#160;</div><div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">CallInst</a>* call = SVFUtil::cast&lt;CallInst&gt;(cts.<a class="code" href="classSVF_1_1CxtStmt.html#a5e8c4b10eb5c3240d2e21a020ed834a6">getStmt</a>());</div><div class="line"><a name="l00904"></a><span class="lineno"> 904</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="l00905"></a><span class="lineno"> 905</span>&#160; <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cbn = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a94d65f9e22a13772042b2af652cf5538">getCBN</a>(call);</div><div class="line"><a name="l00906"></a><span class="lineno"> 906</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8ad9b8cb0e6300b2ffc55244e53cece6">getTCG</a>()-&gt;hasCallGraphEdge(cbn))</div><div class="line"><a name="l00907"></a><span class="lineno"> 907</span>&#160; {</div><div class="line"><a name="l00908"></a><span class="lineno"> 908</span>&#160; <span class="keywordflow">for</span> (PTACallGraph::CallGraphEdgeSet::const_iterator cgIt = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8ad9b8cb0e6300b2ffc55244e53cece6">getTCG</a>()-&gt;getCallEdgeBegin(cbn),</div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span>&#160; ecgIt = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8ad9b8cb0e6300b2ffc55244e53cece6">getTCG</a>()-&gt;getCallEdgeEnd(cbn); cgIt != ecgIt; ++cgIt)</div><div class="line"><a name="l00910"></a><span class="lineno"> 910</span>&#160; {</div><div class="line"><a name="l00911"></a><span class="lineno"> 911</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="l00912"></a><span class="lineno"> 912</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* callee = svfcallee-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>();</div><div class="line"><a name="l00913"></a><span class="lineno"> 913</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="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; <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a> newCxt = curCxt;</div><div class="line"><a name="l00916"></a><span class="lineno"> 916</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#aaf70954762aa86f835d799994726790e">pushCxt</a>(newCxt,call,callee);</div><div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160; <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a> newCts(newCxt,&amp;(callee-&gt;getEntryBlock().front()));</div><div class="line"><a name="l00918"></a><span class="lineno"> 918</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ac483d3b0e9084c2033e177eda9ac9215">markCxtStmtFlag</a>(newCts,cts);</div><div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160; }</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;}</div><div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00125">BasicTypes.h:125</a></div></div>
1266
1266
  <div class="ttc" id="namespaceSVF_html_adc8b60ca7d60cf6c81feae20e4a04c63"><div class="ttname"><a href="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">SVF::CallInst</a></div><div class="ttdeci">llvm::CallInst CallInst</div><div class="ttdoc">LLVM Instructions. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00102">BasicTypes.h:102</a></div></div>
1267
1267
  <div class="ttc" id="classSVF_1_1CxtStmt_html_a5e8c4b10eb5c3240d2e21a020ed834a6"><div class="ttname"><a href="classSVF_1_1CxtStmt.html#a5e8c4b10eb5c3240d2e21a020ed834a6">SVF::CxtStmt::getStmt</a></div><div class="ttdeci">const Instruction * 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>
1268
1268
  <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="SVFBasicTypes_8h_source.html#l00131">SVFBasicTypes.h:131</a></div></div>
1269
1269
  <div class="ttc" id="namespaceSVF_html_a5faee14fa1dd41447bc73ac365fe33c1"><div class="ttname"><a href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a></div><div class="ttdeci">llvm::Function Function</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00070">BasicTypes.h:70</a></div></div>
1270
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_ac483d3b0e9084c2033e177eda9ac9215"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#ac483d3b0e9084c2033e177eda9ac9215">SVF::ForkJoinAnalysis::markCxtStmtFlag</a></div><div class="ttdeci">void markCxtStmtFlag(const CxtStmt &amp;tgr, ValDomain flag)</div><div class="ttdoc">Initialize TDAlive and TDDead flags. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00406">MHP.h:406</a></div></div>
1271
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_aaf70954762aa86f835d799994726790e"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#aaf70954762aa86f835d799994726790e">SVF::ForkJoinAnalysis::pushCxt</a></div><div class="ttdeci">void pushCxt(CallStrCxt &amp;cxt, const Instruction *call, const Function *callee)</div><div class="ttdoc">Push calling context. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00463">MHP.h:463</a></div></div>
1270
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_ac483d3b0e9084c2033e177eda9ac9215"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#ac483d3b0e9084c2033e177eda9ac9215">SVF::ForkJoinAnalysis::markCxtStmtFlag</a></div><div class="ttdeci">void markCxtStmtFlag(const CxtStmt &amp;tgr, ValDomain flag)</div><div class="ttdoc">Initialize TDAlive and TDDead flags. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00428">MHP.h:428</a></div></div>
1271
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_aaf70954762aa86f835d799994726790e"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#aaf70954762aa86f835d799994726790e">SVF::ForkJoinAnalysis::pushCxt</a></div><div class="ttdeci">void pushCxt(CallStrCxt &amp;cxt, const Instruction *call, const Function *callee)</div><div class="ttdoc">Push calling context. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00485">MHP.h:485</a></div></div>
1272
1272
  <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>
1273
1273
  <div class="ttc" id="classSVF_1_1CxtStmt_html_a3ce19b8f2de2e199ed4165dbe9d21f28"><div class="ttname"><a href="classSVF_1_1CxtStmt.html#a3ce19b8f2de2e199ed4165dbe9d21f28">SVF::CxtStmt::getContext</a></div><div class="ttdeci">const CallStrCxt &amp; getContext() const</div><div class="ttdoc">Return current context. </div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00057">CxtStmt.h:57</a></div></div>
1274
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a94d65f9e22a13772042b2af652cf5538"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a94d65f9e22a13772042b2af652cf5538">SVF::ForkJoinAnalysis::getCBN</a></div><div class="ttdeci">CallICFGNode * getCBN(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00387">MHP.h:387</a></div></div>
1274
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a94d65f9e22a13772042b2af652cf5538"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a94d65f9e22a13772042b2af652cf5538">SVF::ForkJoinAnalysis::getCBN</a></div><div class="ttdeci">CallICFGNode * getCBN(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00409">MHP.h:409</a></div></div>
1275
1275
  <div class="ttc" id="classSVF_1_1CallICFGNode_html"><div class="ttname"><a href="classSVF_1_1CallICFGNode.html">SVF::CallICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00363">ICFGNode.h:363</a></div></div>
1276
1276
  <div class="ttc" id="classSVF_1_1SVFFunction_html_ac4ae917ae35ac6fca652fe2dd90a8ac2"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">SVF::SVFFunction::getLLVMFun</a></div><div class="ttdeci">Function * getLLVMFun() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00151">BasicTypes.h:151</a></div></div>
1277
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a8ad9b8cb0e6300b2ffc55244e53cece6"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a8ad9b8cb0e6300b2ffc55244e53cece6">SVF::ForkJoinAnalysis::getTCG</a></div><div class="ttdeci">ThreadCallGraph * getTCG() const</div><div class="ttdoc">ThreadCallGraph. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00499">MHP.h:499</a></div></div>
1277
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a8ad9b8cb0e6300b2ffc55244e53cece6"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a8ad9b8cb0e6300b2ffc55244e53cece6">SVF::ForkJoinAnalysis::getTCG</a></div><div class="ttdeci">ThreadCallGraph * getTCG() const</div><div class="ttdoc">ThreadCallGraph. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00521">MHP.h:521</a></div></div>
1278
1278
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a22ef185e767ff76c098e75126c885400"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">SVF::SVFUtil::isExtCall</a></div><div class="ttdeci">bool isExtCall(const SVFFunction *fun)</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00346">SVFUtil.h:346</a></div></div>
1279
1279
  </div><!-- fragment -->
1280
1280
  </div>
@@ -1315,26 +1315,26 @@ Private Attributes</h2></td></tr>
1315
1315
 
1316
1316
  <p>Handle fork. </p>
1317
1317
 
1318
- <p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#l00792">792</a> of file <a class="el" href="MHP_8cpp_source.html">MHP.cpp</a>.</p>
1319
- <div class="fragment"><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160;{</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">CallInst</a>* call = SVFUtil::cast&lt;CallInst&gt;(cts.<a class="code" href="classSVF_1_1CxtStmt.html#a5e8c4b10eb5c3240d2e21a020ed834a6">getStmt</a>());</div><div class="line"><a name="l00795"></a><span class="lineno"> 795</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="l00796"></a><span class="lineno"> 796</span>&#160;</div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160; assert(<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#aff32f240a03421937c2fc606359dca9b">isTDFork</a>(call));</div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160; <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cbn = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a94d65f9e22a13772042b2af652cf5538">getCBN</a>(call);</div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8ad9b8cb0e6300b2ffc55244e53cece6">getTCG</a>()-&gt;hasThreadForkEdge(cbn))</div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160; {</div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160; <span class="keywordflow">for</span> (ThreadCallGraph::ForkEdgeSet::const_iterator cgIt = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8ad9b8cb0e6300b2ffc55244e53cece6">getTCG</a>()-&gt;getForkEdgeBegin(cbn),</div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160; ecgIt = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8ad9b8cb0e6300b2ffc55244e53cece6">getTCG</a>()-&gt;getForkEdgeEnd(cbn); cgIt != ecgIt; ++cgIt)</div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160; {</div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* callee = (*cgIt)-&gt;getDstNode()-&gt;getFunction()-&gt;getLLVMFun();</div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160; <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a> newCxt = curCxt;</div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#aaf70954762aa86f835d799994726790e">pushCxt</a>(newCxt,call,callee);</div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160; <a class="code" href="classSVF_1_1CxtThread.html">CxtThread</a> ct(newCxt,call);</div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a149114898b13e1430c8fbb60978ca4f5">getMarkedFlag</a>(cts)!=<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631a2abecc56b7d5c644f7e14c98d33d0a0a">TDAlive</a>)</div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a647ae6866bb37be850f0bdd5a7341188">addToHBPair</a>(rootTid,<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">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="l00810"></a><span class="lineno"> 810</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a1505ba82206169f76ea239067797d6c2">addToHPPair</a>(rootTid,<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">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="l00812"></a><span class="lineno"> 812</span>&#160; }</div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160; }</div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#add09218cce8d8bd8dd9e73b2d26a5797">handleIntra</a>(cts);</div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160;}</div><div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a1505ba82206169f76ea239067797d6c2"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a1505ba82206169f76ea239067797d6c2">SVF::ForkJoinAnalysis::addToHPPair</a></div><div class="ttdeci">void addToHPPair(NodeID tid1, NodeID tid2)</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00512">MHP.h:512</a></div></div>
1320
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a149114898b13e1430c8fbb60978ca4f5"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a149114898b13e1430c8fbb60978ca4f5">SVF::ForkJoinAnalysis::getMarkedFlag</a></div><div class="ttdeci">ValDomain getMarkedFlag(const CxtStmt &amp;cs)</div><div class="ttdoc">Mark thread flags for cxtStmt. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00394">MHP.h:394</a></div></div>
1321
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a2c6ce7aa04c399746d89230be0e0f1ce"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">SVF::ForkJoinAnalysis::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00540">MHP.h:540</a></div></div>
1318
+ <p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#l00814">814</a> of file <a class="el" href="MHP_8cpp_source.html">MHP.cpp</a>.</p>
1319
+ <div class="fragment"><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="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">CallInst</a>* call = SVFUtil::cast&lt;CallInst&gt;(cts.<a class="code" href="classSVF_1_1CxtStmt.html#a5e8c4b10eb5c3240d2e21a020ed834a6">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_1ForkJoinAnalysis.html#aff32f240a03421937c2fc606359dca9b">isTDFork</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_1ForkJoinAnalysis.html#a94d65f9e22a13772042b2af652cf5538">getCBN</a>(call);</div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8ad9b8cb0e6300b2ffc55244e53cece6">getTCG</a>()-&gt;hasThreadForkEdge(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="keywordflow">for</span> (ThreadCallGraph::ForkEdgeSet::const_iterator cgIt = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8ad9b8cb0e6300b2ffc55244e53cece6">getTCG</a>()-&gt;getForkEdgeBegin(cbn),</div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160; ecgIt = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8ad9b8cb0e6300b2ffc55244e53cece6">getTCG</a>()-&gt;getForkEdgeEnd(cbn); cgIt != ecgIt; ++cgIt)</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="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* callee = (*cgIt)-&gt;getDstNode()-&gt;getFunction()-&gt;getLLVMFun();</div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160; <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a> newCxt = curCxt;</div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#aaf70954762aa86f835d799994726790e">pushCxt</a>(newCxt,call,callee);</div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; <a class="code" href="classSVF_1_1CxtThread.html">CxtThread</a> ct(newCxt,call);</div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a149114898b13e1430c8fbb60978ca4f5">getMarkedFlag</a>(cts)!=<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631a2abecc56b7d5c644f7e14c98d33d0a0a">TDAlive</a>)</div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a647ae6866bb37be850f0bdd5a7341188">addToHBPair</a>(rootTid,<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">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="l00832"></a><span class="lineno"> 832</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a1505ba82206169f76ea239067797d6c2">addToHPPair</a>(rootTid,<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">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="l00834"></a><span class="lineno"> 834</span>&#160; }</div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160; }</div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#add09218cce8d8bd8dd9e73b2d26a5797">handleIntra</a>(cts);</div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160;}</div><div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a1505ba82206169f76ea239067797d6c2"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a1505ba82206169f76ea239067797d6c2">SVF::ForkJoinAnalysis::addToHPPair</a></div><div class="ttdeci">void addToHPPair(NodeID tid1, NodeID tid2)</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00534">MHP.h:534</a></div></div>
1320
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a149114898b13e1430c8fbb60978ca4f5"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a149114898b13e1430c8fbb60978ca4f5">SVF::ForkJoinAnalysis::getMarkedFlag</a></div><div class="ttdeci">ValDomain getMarkedFlag(const CxtStmt &amp;cs)</div><div class="ttdoc">Mark thread flags for cxtStmt. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00416">MHP.h:416</a></div></div>
1321
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a2c6ce7aa04c399746d89230be0e0f1ce"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">SVF::ForkJoinAnalysis::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00562">MHP.h:562</a></div></div>
1322
1322
  <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>
1323
1323
  <div class="ttc" id="namespaceSVF_html_adc8b60ca7d60cf6c81feae20e4a04c63"><div class="ttname"><a href="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">SVF::CallInst</a></div><div class="ttdeci">llvm::CallInst CallInst</div><div class="ttdoc">LLVM Instructions. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00102">BasicTypes.h:102</a></div></div>
1324
- <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#l00176">TCT.h:176</a></div></div>
1324
+ <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#l00198">TCT.h:198</a></div></div>
1325
1325
  <div class="ttc" id="classSVF_1_1CxtStmt_html_a5e8c4b10eb5c3240d2e21a020ed834a6"><div class="ttname"><a href="classSVF_1_1CxtStmt.html#a5e8c4b10eb5c3240d2e21a020ed834a6">SVF::CxtStmt::getStmt</a></div><div class="ttdeci">const Instruction * 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>
1326
1326
  <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="SVFBasicTypes_8h_source.html#l00131">SVFBasicTypes.h:131</a></div></div>
1327
1327
  <div class="ttc" id="namespaceSVF_html_a5faee14fa1dd41447bc73ac365fe33c1"><div class="ttname"><a href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a></div><div class="ttdeci">llvm::Function Function</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00070">BasicTypes.h:70</a></div></div>
1328
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_aaf70954762aa86f835d799994726790e"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#aaf70954762aa86f835d799994726790e">SVF::ForkJoinAnalysis::pushCxt</a></div><div class="ttdeci">void pushCxt(CallStrCxt &amp;cxt, const Instruction *call, const Function *callee)</div><div class="ttdoc">Push calling context. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00463">MHP.h:463</a></div></div>
1328
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_aaf70954762aa86f835d799994726790e"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#aaf70954762aa86f835d799994726790e">SVF::ForkJoinAnalysis::pushCxt</a></div><div class="ttdeci">void pushCxt(CallStrCxt &amp;cxt, const Instruction *call, const Function *callee)</div><div class="ttdoc">Push calling context. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00485">MHP.h:485</a></div></div>
1329
1329
  <div class="ttc" id="classSVF_1_1CxtStmt_html_a3ce19b8f2de2e199ed4165dbe9d21f28"><div class="ttname"><a href="classSVF_1_1CxtStmt.html#a3ce19b8f2de2e199ed4165dbe9d21f28">SVF::CxtStmt::getContext</a></div><div class="ttdeci">const CallStrCxt &amp; getContext() const</div><div class="ttdoc">Return current context. </div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00057">CxtStmt.h:57</a></div></div>
1330
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a94d65f9e22a13772042b2af652cf5538"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a94d65f9e22a13772042b2af652cf5538">SVF::ForkJoinAnalysis::getCBN</a></div><div class="ttdeci">CallICFGNode * getCBN(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00387">MHP.h:387</a></div></div>
1330
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a94d65f9e22a13772042b2af652cf5538"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a94d65f9e22a13772042b2af652cf5538">SVF::ForkJoinAnalysis::getCBN</a></div><div class="ttdeci">CallICFGNode * getCBN(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00409">MHP.h:409</a></div></div>
1331
1331
  <div class="ttc" id="classSVF_1_1CallICFGNode_html"><div class="ttname"><a href="classSVF_1_1CallICFGNode.html">SVF::CallICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00363">ICFGNode.h:363</a></div></div>
1332
1332
  <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>
1333
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_aff32f240a03421937c2fc606359dca9b"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#aff32f240a03421937c2fc606359dca9b">SVF::ForkJoinAnalysis::isTDFork</a></div><div class="ttdeci">bool isTDFork(const Instruction *call)</div><div class="ttdoc">Whether it is a fork site. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00474">MHP.h:474</a></div></div>
1334
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a647ae6866bb37be850f0bdd5a7341188"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a647ae6866bb37be850f0bdd5a7341188">SVF::ForkJoinAnalysis::addToHBPair</a></div><div class="ttdeci">void addToHBPair(NodeID tid1, NodeID tid2)</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00517">MHP.h:517</a></div></div>
1335
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a8d40e687caf8999369621ed385dfc631a2abecc56b7d5c644f7e14c98d33d0a0a"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631a2abecc56b7d5c644f7e14c98d33d0a0a">SVF::ForkJoinAnalysis::TDAlive</a></div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00280">MHP.h:280</a></div></div>
1336
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a8ad9b8cb0e6300b2ffc55244e53cece6"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a8ad9b8cb0e6300b2ffc55244e53cece6">SVF::ForkJoinAnalysis::getTCG</a></div><div class="ttdeci">ThreadCallGraph * getTCG() const</div><div class="ttdoc">ThreadCallGraph. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00499">MHP.h:499</a></div></div>
1337
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_add09218cce8d8bd8dd9e73b2d26a5797"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#add09218cce8d8bd8dd9e73b2d26a5797">SVF::ForkJoinAnalysis::handleIntra</a></div><div class="ttdeci">void handleIntra(const CxtStmt &amp;cts)</div><div class="ttdoc">Handle intra. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l00948">MHP.cpp:948</a></div></div>
1333
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_aff32f240a03421937c2fc606359dca9b"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#aff32f240a03421937c2fc606359dca9b">SVF::ForkJoinAnalysis::isTDFork</a></div><div class="ttdeci">bool isTDFork(const Instruction *call)</div><div class="ttdoc">Whether it is a fork site. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00496">MHP.h:496</a></div></div>
1334
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a647ae6866bb37be850f0bdd5a7341188"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a647ae6866bb37be850f0bdd5a7341188">SVF::ForkJoinAnalysis::addToHBPair</a></div><div class="ttdeci">void addToHBPair(NodeID tid1, NodeID tid2)</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00539">MHP.h:539</a></div></div>
1335
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a8d40e687caf8999369621ed385dfc631a2abecc56b7d5c644f7e14c98d33d0a0a"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631a2abecc56b7d5c644f7e14c98d33d0a0a">SVF::ForkJoinAnalysis::TDAlive</a></div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00302">MHP.h:302</a></div></div>
1336
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a8ad9b8cb0e6300b2ffc55244e53cece6"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a8ad9b8cb0e6300b2ffc55244e53cece6">SVF::ForkJoinAnalysis::getTCG</a></div><div class="ttdeci">ThreadCallGraph * getTCG() const</div><div class="ttdoc">ThreadCallGraph. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00521">MHP.h:521</a></div></div>
1337
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_add09218cce8d8bd8dd9e73b2d26a5797"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#add09218cce8d8bd8dd9e73b2d26a5797">SVF::ForkJoinAnalysis::handleIntra</a></div><div class="ttdeci">void handleIntra(const CxtStmt &amp;cts)</div><div class="ttdoc">Handle intra. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l00970">MHP.cpp:970</a></div></div>
1338
1338
  </div><!-- fragment -->
1339
1339
  </div>
1340
1340
  </div>
@@ -1364,13 +1364,13 @@ Private Attributes</h2></td></tr>
1364
1364
 
1365
1365
  <p>Handle intra. </p>
1366
1366
 
1367
- <p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#l00948">948</a> of file <a class="el" href="MHP_8cpp_source.html">MHP.cpp</a>.</p>
1368
- <div class="fragment"><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;</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#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* curInst = cts.<a class="code" href="classSVF_1_1CxtStmt.html#a5e8c4b10eb5c3240d2e21a020ed834a6">getStmt</a>();</div><div class="line"><a name="l00952"></a><span class="lineno"> 952</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="l00953"></a><span class="lineno"> 953</span>&#160;</div><div class="line"><a name="l00954"></a><span class="lineno"> 954</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a613d763731058899e6819acdb2d7315f">InstVec</a> nextInsts;</div><div class="line"><a name="l00955"></a><span class="lineno"> 955</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a799e14292e16b9fb322cab07f3ff5593">getNextInsts</a>(curInst,nextInsts);</div><div class="line"><a name="l00956"></a><span class="lineno"> 956</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="l00957"></a><span class="lineno"> 957</span>&#160; {</div><div class="line"><a name="l00958"></a><span class="lineno"> 958</span>&#160; <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a> newCts(curCxt,*nit);</div><div class="line"><a name="l00959"></a><span class="lineno"> 959</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ac483d3b0e9084c2033e177eda9ac9215">markCxtStmtFlag</a>(newCts,cts);</div><div class="line"><a name="l00960"></a><span class="lineno"> 960</span>&#160; }</div><div class="line"><a name="l00961"></a><span class="lineno"> 961</span>&#160;}</div><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#l00284">MHP.h:284</a></div></div>
1369
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a799e14292e16b9fb322cab07f3ff5593"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a799e14292e16b9fb322cab07f3ff5593">SVF::ForkJoinAnalysis::getNextInsts</a></div><div class="ttdeci">void getNextInsts(const Instruction *inst, InstVec &amp;instSet)</div><div class="ttdoc">Get the next instructions following control flow. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00458">MHP.h:458</a></div></div>
1367
+ <p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#l00970">970</a> of file <a class="el" href="MHP_8cpp_source.html">MHP.cpp</a>.</p>
1368
+ <div class="fragment"><div class="line"><a name="l00971"></a><span class="lineno"> 971</span>&#160;{</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="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* curInst = cts.<a class="code" href="classSVF_1_1CxtStmt.html#a5e8c4b10eb5c3240d2e21a020ed834a6">getStmt</a>();</div><div class="line"><a name="l00974"></a><span class="lineno"> 974</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="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_1ForkJoinAnalysis.html#a613d763731058899e6819acdb2d7315f">InstVec</a> nextInsts;</div><div class="line"><a name="l00977"></a><span class="lineno"> 977</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a799e14292e16b9fb322cab07f3ff5593">getNextInsts</a>(curInst,nextInsts);</div><div class="line"><a name="l00978"></a><span class="lineno"> 978</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="l00979"></a><span class="lineno"> 979</span>&#160; {</div><div class="line"><a name="l00980"></a><span class="lineno"> 980</span>&#160; <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a> newCts(curCxt,*nit);</div><div class="line"><a name="l00981"></a><span class="lineno"> 981</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ac483d3b0e9084c2033e177eda9ac9215">markCxtStmtFlag</a>(newCts,cts);</div><div class="line"><a name="l00982"></a><span class="lineno"> 982</span>&#160; }</div><div class="line"><a name="l00983"></a><span class="lineno"> 983</span>&#160;}</div><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#l00306">MHP.h:306</a></div></div>
1369
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a799e14292e16b9fb322cab07f3ff5593"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a799e14292e16b9fb322cab07f3ff5593">SVF::ForkJoinAnalysis::getNextInsts</a></div><div class="ttdeci">void getNextInsts(const Instruction *inst, InstVec &amp;instSet)</div><div class="ttdoc">Get the next instructions following control flow. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00480">MHP.h:480</a></div></div>
1370
1370
  <div class="ttc" id="classSVF_1_1CxtStmt_html_a5e8c4b10eb5c3240d2e21a020ed834a6"><div class="ttname"><a href="classSVF_1_1CxtStmt.html#a5e8c4b10eb5c3240d2e21a020ed834a6">SVF::CxtStmt::getStmt</a></div><div class="ttdeci">const Instruction * 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>
1371
1371
  <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="SVFBasicTypes_8h_source.html#l00131">SVFBasicTypes.h:131</a></div></div>
1372
1372
  <div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00073">BasicTypes.h:73</a></div></div>
1373
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_ac483d3b0e9084c2033e177eda9ac9215"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#ac483d3b0e9084c2033e177eda9ac9215">SVF::ForkJoinAnalysis::markCxtStmtFlag</a></div><div class="ttdeci">void markCxtStmtFlag(const CxtStmt &amp;tgr, ValDomain flag)</div><div class="ttdoc">Initialize TDAlive and TDDead flags. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00406">MHP.h:406</a></div></div>
1373
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_ac483d3b0e9084c2033e177eda9ac9215"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#ac483d3b0e9084c2033e177eda9ac9215">SVF::ForkJoinAnalysis::markCxtStmtFlag</a></div><div class="ttdeci">void markCxtStmtFlag(const CxtStmt &amp;tgr, ValDomain flag)</div><div class="ttdoc">Initialize TDAlive and TDDead flags. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00428">MHP.h:428</a></div></div>
1374
1374
  <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>
1375
1375
  <div class="ttc" id="classSVF_1_1CxtStmt_html_a3ce19b8f2de2e199ed4165dbe9d21f28"><div class="ttname"><a href="classSVF_1_1CxtStmt.html#a3ce19b8f2de2e199ed4165dbe9d21f28">SVF::CxtStmt::getContext</a></div><div class="ttdeci">const CallStrCxt &amp; getContext() const</div><div class="ttdoc">Return current context. </div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00057">CxtStmt.h:57</a></div></div>
1376
1376
  </div><!-- fragment -->
@@ -1413,37 +1413,37 @@ Private Attributes</h2></td></tr>
1413
1413
  <p>Handle join. </p>
1414
1414
  <p>for the join site in a loop loop which does not join the current thread we process the loop exit </p>
1415
1415
 
1416
- <p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#l00818">818</a> of file <a class="el" href="MHP_8cpp_source.html">MHP.cpp</a>.</p>
1417
- <div class="fragment"><div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160;{</div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">CallInst</a>* call = SVFUtil::cast&lt;CallInst&gt;(cts.<a class="code" href="classSVF_1_1CxtStmt.html#a5e8c4b10eb5c3240d2e21a020ed834a6">getStmt</a>());</div><div class="line"><a name="l00821"></a><span class="lineno"> 821</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="l00822"></a><span class="lineno"> 822</span>&#160;</div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160; assert(<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#aac722a42dc6e03e771a7a80de5f8ec94">isTDJoin</a>(call));</div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160; <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cbn = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a94d65f9e22a13772042b2af652cf5538">getCBN</a>(call);</div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8ad9b8cb0e6300b2ffc55244e53cece6">getTCG</a>()-&gt;hasCallGraphEdge(cbn))</div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160; {</div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* forkSite = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">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#a066ba29a83edc1042139641ca088b038">getThread</a>();</div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* joinSite = cts.<a class="code" href="classSVF_1_1CxtStmt.html#a5e8c4b10eb5c3240d2e21a020ed834a6">getStmt</a>();</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; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a3655131add43346a175576b023e32509">isAliasedForkJoin</a>(forkSite, joinSite))</div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; {</div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#abf85e29310b2e4df8925d00a5c081314">Loop</a>* joinLoop = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a3449439792a54c847c67b3041094db49">getJoinLoop</a>(joinSite))</div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; {</div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160; <a class="code" href="namespaceSVF.html#a02be4933b76c2baa7fdbe8b290e12bb3">SmallBBVector</a> exitbbs;</div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160; joinLoop-&gt;getExitBlocks(exitbbs);</div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160; <span class="keywordflow">while</span>(!exitbbs.empty())</div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160; {</div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160; <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* eb = exitbbs.pop_back_val();</div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160; <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a> newCts(curCxt,&amp;(eb-&gt;front()));</div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8aa2d4c83981007108b152d05e9c51fe">addDirectlyJoinTID</a>(cts,rootTid);</div><div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a4d073da3e5266964dad7422033013219">isSameSCEV</a>(forkSite,joinSite))</div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160; {</div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ac483d3b0e9084c2033e177eda9ac9215">markCxtStmtFlag</a>(newCts,<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631ad5af2a561c196e33d88fc63363d0d8f4">TDDead</a>);</div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ab302cceb28998623fed622560e50a740">addSymmetricLoopJoin</a>(cts,joinLoop);</div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160; }</div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ac483d3b0e9084c2033e177eda9ac9215">markCxtStmtFlag</a>(cts,<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631a2abecc56b7d5c644f7e14c98d33d0a0a">TDAlive</a>);</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; }</div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160; {</div><div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ac483d3b0e9084c2033e177eda9ac9215">markCxtStmtFlag</a>(cts,<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631ad5af2a561c196e33d88fc63363d0d8f4">TDDead</a>);</div><div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8aa2d4c83981007108b152d05e9c51fe">addDirectlyJoinTID</a>(cts,rootTid);</div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>,<a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\n\t match join site &quot;</span> &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">SVFUtil::value2String</a>(call) &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="l00855"></a><span class="lineno"> 855</span>&#160; }</div><div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160; }</div><div class="line"><a name="l00859"></a><span class="lineno"> 859</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160; {</div><div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#abf85e29310b2e4df8925d00a5c081314">Loop</a>* joinLoop = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a3449439792a54c847c67b3041094db49">getJoinLoop</a>(joinSite))</div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160; {</div><div class="line"><a name="l00863"></a><span class="lineno"> 863</span>&#160; <a class="code" href="namespaceSVF.html#a02be4933b76c2baa7fdbe8b290e12bb3">SmallBBVector</a> exitbbs;</div><div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160; joinLoop-&gt;getExitBlocks(exitbbs);</div><div class="line"><a name="l00865"></a><span class="lineno"> 865</span>&#160; <span class="keywordflow">while</span>(!exitbbs.empty())</div><div class="line"><a name="l00866"></a><span class="lineno"> 866</span>&#160; {</div><div class="line"><a name="l00867"></a><span class="lineno"> 867</span>&#160; <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* eb = exitbbs.pop_back_val();</div><div class="line"><a name="l00868"></a><span class="lineno"> 868</span>&#160; <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a> newCts(curCxt,&amp;(eb-&gt;front()));</div><div class="line"><a name="l00869"></a><span class="lineno"> 869</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ac483d3b0e9084c2033e177eda9ac9215">markCxtStmtFlag</a>(newCts,cts);</div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span>&#160; }</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; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#add09218cce8d8bd8dd9e73b2d26a5797">handleIntra</a>(cts);</div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160;}</div><div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a4d073da3e5266964dad7422033013219"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a4d073da3e5266964dad7422033013219">SVF::ForkJoinAnalysis::isSameSCEV</a></div><div class="ttdeci">bool isSameSCEV(const Instruction *forkSite, const Instruction *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#l01043">MHP.cpp:1043</a></div></div>
1416
+ <p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#l00840">840</a> of file <a class="el" href="MHP_8cpp_source.html">MHP.cpp</a>.</p>
1417
+ <div class="fragment"><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; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">CallInst</a>* call = SVFUtil::cast&lt;CallInst&gt;(cts.<a class="code" href="classSVF_1_1CxtStmt.html#a5e8c4b10eb5c3240d2e21a020ed834a6">getStmt</a>());</div><div class="line"><a name="l00843"></a><span class="lineno"> 843</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="l00844"></a><span class="lineno"> 844</span>&#160;</div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160; assert(<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#aac722a42dc6e03e771a7a80de5f8ec94">isTDJoin</a>(call));</div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160; <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cbn = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a94d65f9e22a13772042b2af652cf5538">getCBN</a>(call);</div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8ad9b8cb0e6300b2ffc55244e53cece6">getTCG</a>()-&gt;hasCallGraphEdge(cbn))</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="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* forkSite = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">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#a066ba29a83edc1042139641ca088b038">getThread</a>();</div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* joinSite = cts.<a class="code" href="classSVF_1_1CxtStmt.html#a5e8c4b10eb5c3240d2e21a020ed834a6">getStmt</a>();</div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160;</div><div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a3655131add43346a175576b023e32509">isAliasedForkJoin</a>(forkSite, joinSite))</div><div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160; {</div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#abf85e29310b2e4df8925d00a5c081314">Loop</a>* joinLoop = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a3449439792a54c847c67b3041094db49">getJoinLoop</a>(joinSite))</div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160; {</div><div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160; <a class="code" href="namespaceSVF.html#a02be4933b76c2baa7fdbe8b290e12bb3">SmallBBVector</a> exitbbs;</div><div class="line"><a name="l00857"></a><span class="lineno"> 857</span>&#160; joinLoop-&gt;getExitBlocks(exitbbs);</div><div class="line"><a name="l00858"></a><span class="lineno"> 858</span>&#160; <span class="keywordflow">while</span>(!exitbbs.empty())</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; <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* eb = exitbbs.pop_back_val();</div><div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160; <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a> newCts(curCxt,&amp;(eb-&gt;front()));</div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8aa2d4c83981007108b152d05e9c51fe">addDirectlyJoinTID</a>(cts,rootTid);</div><div class="line"><a name="l00863"></a><span class="lineno"> 863</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a4d073da3e5266964dad7422033013219">isSameSCEV</a>(forkSite,joinSite))</div><div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160; {</div><div class="line"><a name="l00865"></a><span class="lineno"> 865</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ac483d3b0e9084c2033e177eda9ac9215">markCxtStmtFlag</a>(newCts,<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631ad5af2a561c196e33d88fc63363d0d8f4">TDDead</a>);</div><div class="line"><a name="l00866"></a><span class="lineno"> 866</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ab302cceb28998623fed622560e50a740">addSymmetricLoopJoin</a>(cts,joinLoop);</div><div class="line"><a name="l00867"></a><span class="lineno"> 867</span>&#160; }</div><div class="line"><a name="l00868"></a><span class="lineno"> 868</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00869"></a><span class="lineno"> 869</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ac483d3b0e9084c2033e177eda9ac9215">markCxtStmtFlag</a>(cts,<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631a2abecc56b7d5c644f7e14c98d33d0a0a">TDAlive</a>);</div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span>&#160; }</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; <span class="keywordflow">else</span></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; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ac483d3b0e9084c2033e177eda9ac9215">markCxtStmtFlag</a>(cts,<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631ad5af2a561c196e33d88fc63363d0d8f4">TDDead</a>);</div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8aa2d4c83981007108b152d05e9c51fe">addDirectlyJoinTID</a>(cts,rootTid);</div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>,<a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\n\t match join site &quot;</span> &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">SVFUtil::value2String</a>(call) &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="l00877"></a><span class="lineno"> 877</span>&#160; }</div><div class="line"><a name="l00878"></a><span class="lineno"> 878</span>&#160; }</div><div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160; {</div><div class="line"><a name="l00883"></a><span class="lineno"> 883</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#abf85e29310b2e4df8925d00a5c081314">Loop</a>* joinLoop = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a3449439792a54c847c67b3041094db49">getJoinLoop</a>(joinSite))</div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span>&#160; {</div><div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160; <a class="code" href="namespaceSVF.html#a02be4933b76c2baa7fdbe8b290e12bb3">SmallBBVector</a> exitbbs;</div><div class="line"><a name="l00886"></a><span class="lineno"> 886</span>&#160; joinLoop-&gt;getExitBlocks(exitbbs);</div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span>&#160; <span class="keywordflow">while</span>(!exitbbs.empty())</div><div class="line"><a name="l00888"></a><span class="lineno"> 888</span>&#160; {</div><div class="line"><a name="l00889"></a><span class="lineno"> 889</span>&#160; <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* eb = exitbbs.pop_back_val();</div><div class="line"><a name="l00890"></a><span class="lineno"> 890</span>&#160; <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a> newCts(curCxt,&amp;(eb-&gt;front()));</div><div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ac483d3b0e9084c2033e177eda9ac9215">markCxtStmtFlag</a>(newCts,cts);</div><div class="line"><a name="l00892"></a><span class="lineno"> 892</span>&#160; }</div><div class="line"><a name="l00893"></a><span class="lineno"> 893</span>&#160; }</div><div class="line"><a name="l00894"></a><span class="lineno"> 894</span>&#160; }</div><div class="line"><a name="l00895"></a><span class="lineno"> 895</span>&#160; }</div><div class="line"><a name="l00896"></a><span class="lineno"> 896</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#add09218cce8d8bd8dd9e73b2d26a5797">handleIntra</a>(cts);</div><div class="line"><a name="l00897"></a><span class="lineno"> 897</span>&#160;}</div><div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a4d073da3e5266964dad7422033013219"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a4d073da3e5266964dad7422033013219">SVF::ForkJoinAnalysis::isSameSCEV</a></div><div class="ttdeci">bool isSameSCEV(const Instruction *forkSite, const Instruction *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#l01065">MHP.cpp:1065</a></div></div>
1418
1418
  <div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00071">BasicTypes.h:71</a></div></div>
1419
1419
  <div class="ttc" id="SVFBasicTypes_8h_html_a217a1ccdaec1abb103cf6b0373631234"><div class="ttname"><a href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a></div><div class="ttdeci">#define DMTA</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00175">SVFBasicTypes.h:175</a></div></div>
1420
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a2c6ce7aa04c399746d89230be0e0f1ce"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">SVF::ForkJoinAnalysis::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00540">MHP.h:540</a></div></div>
1420
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a2c6ce7aa04c399746d89230be0e0f1ce"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">SVF::ForkJoinAnalysis::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00562">MHP.h:562</a></div></div>
1421
1421
  <div class="ttc" id="namespaceSVF_html_a02be4933b76c2baa7fdbe8b290e12bb3"><div class="ttname"><a href="namespaceSVF.html#a02be4933b76c2baa7fdbe8b290e12bb3">SVF::SmallBBVector</a></div><div class="ttdeci">llvm::SmallVector&lt; llvm::BasicBlock *, 8 &gt; SmallBBVector</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00119">SVFBasicTypes.h:119</a></div></div>
1422
1422
  <div class="ttc" id="classSVF_1_1CxtThread_html_a066ba29a83edc1042139641ca088b038"><div class="ttname"><a href="classSVF_1_1CxtThread.html#a066ba29a83edc1042139641ca088b038">SVF::CxtThread::getThread</a></div><div class="ttdeci">const CallInst * 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>
1423
1423
  <div class="ttc" id="namespaceSVF_html_adc8b60ca7d60cf6c81feae20e4a04c63"><div class="ttname"><a href="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">SVF::CallInst</a></div><div class="ttdeci">llvm::CallInst CallInst</div><div class="ttdoc">LLVM Instructions. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00102">BasicTypes.h:102</a></div></div>
1424
- <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#l00176">TCT.h:176</a></div></div>
1425
- <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#l00081">TCT.h:81</a></div></div>
1424
+ <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#l00198">TCT.h:198</a></div></div>
1425
+ <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#l00103">TCT.h:103</a></div></div>
1426
1426
  <div class="ttc" id="classSVF_1_1CxtStmt_html_a5e8c4b10eb5c3240d2e21a020ed834a6"><div class="ttname"><a href="classSVF_1_1CxtStmt.html#a5e8c4b10eb5c3240d2e21a020ed834a6">SVF::CxtStmt::getStmt</a></div><div class="ttdeci">const Instruction * 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>
1427
1427
  <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="SVFBasicTypes_8h_source.html#l00131">SVFBasicTypes.h:131</a></div></div>
1428
1428
  <div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00073">BasicTypes.h:73</a></div></div>
1429
1429
  <div class="ttc" id="namespaceSVF_html_abf85e29310b2e4df8925d00a5c081314"><div class="ttname"><a href="namespaceSVF.html#abf85e29310b2e4df8925d00a5c081314">SVF::Loop</a></div><div class="ttdeci">llvm::Loop Loop</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00078">BasicTypes.h:78</a></div></div>
1430
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a8aa2d4c83981007108b152d05e9c51fe"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a8aa2d4c83981007108b152d05e9c51fe">SVF::ForkJoinAnalysis::addDirectlyJoinTID</a></div><div class="ttdeci">void addDirectlyJoinTID(const CxtStmt &amp;cs, NodeID tid)</div><div class="ttdoc">maps a context-sensitive join site to a thread id </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00504">MHP.h:504</a></div></div>
1431
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a3449439792a54c847c67b3041094db49"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a3449439792a54c847c67b3041094db49">SVF::ForkJoinAnalysis::getJoinLoop</a></div><div class="ttdeci">const Loop * getJoinLoop(const Instruction *inst)</div><div class="ttdoc">Get loop for join site. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00349">MHP.h:349</a></div></div>
1432
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_ac483d3b0e9084c2033e177eda9ac9215"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#ac483d3b0e9084c2033e177eda9ac9215">SVF::ForkJoinAnalysis::markCxtStmtFlag</a></div><div class="ttdeci">void markCxtStmtFlag(const CxtStmt &amp;tgr, ValDomain flag)</div><div class="ttdoc">Initialize TDAlive and TDDead flags. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00406">MHP.h:406</a></div></div>
1433
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a3655131add43346a175576b023e32509"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a3655131add43346a175576b023e32509">SVF::ForkJoinAnalysis::isAliasedForkJoin</a></div><div class="ttdeci">bool isAliasedForkJoin(const Instruction *forkSite, const Instruction *joinSite)</div><div class="ttdoc">Whether it is a matched fork join pair. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00382">MHP.h:382</a></div></div>
1430
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a8aa2d4c83981007108b152d05e9c51fe"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a8aa2d4c83981007108b152d05e9c51fe">SVF::ForkJoinAnalysis::addDirectlyJoinTID</a></div><div class="ttdeci">void addDirectlyJoinTID(const CxtStmt &amp;cs, NodeID tid)</div><div class="ttdoc">maps a context-sensitive join site to a thread id </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00526">MHP.h:526</a></div></div>
1431
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a3449439792a54c847c67b3041094db49"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a3449439792a54c847c67b3041094db49">SVF::ForkJoinAnalysis::getJoinLoop</a></div><div class="ttdeci">const Loop * getJoinLoop(const Instruction *inst)</div><div class="ttdoc">Get loop for join site. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00371">MHP.h:371</a></div></div>
1432
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_ac483d3b0e9084c2033e177eda9ac9215"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#ac483d3b0e9084c2033e177eda9ac9215">SVF::ForkJoinAnalysis::markCxtStmtFlag</a></div><div class="ttdeci">void markCxtStmtFlag(const CxtStmt &amp;tgr, ValDomain flag)</div><div class="ttdoc">Initialize TDAlive and TDDead flags. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00428">MHP.h:428</a></div></div>
1433
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a3655131add43346a175576b023e32509"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a3655131add43346a175576b023e32509">SVF::ForkJoinAnalysis::isAliasedForkJoin</a></div><div class="ttdeci">bool isAliasedForkJoin(const Instruction *forkSite, const Instruction *joinSite)</div><div class="ttdoc">Whether it is a matched fork join pair. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00404">MHP.h:404</a></div></div>
1434
1434
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aed0b0b9f035057552a6a82154fd88e61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVF::SVFUtil::outs</a></div><div class="ttdeci">std::ostream &amp; outs()</div><div class="ttdoc">Overwrite llvm::outs() </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00049">SVFUtil.h:49</a></div></div>
1435
1435
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a7486fd8e5350879ed1cbd835c0d4e191"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">SVF::SVFUtil::value2String</a></div><div class="ttdeci">const std::string value2String(const Value *value)</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00390">SVFUtil.cpp:390</a></div></div>
1436
1436
  <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>
1437
1437
  <div class="ttc" id="classSVF_1_1CxtStmt_html_a3ce19b8f2de2e199ed4165dbe9d21f28"><div class="ttname"><a href="classSVF_1_1CxtStmt.html#a3ce19b8f2de2e199ed4165dbe9d21f28">SVF::CxtStmt::getContext</a></div><div class="ttdeci">const CallStrCxt &amp; getContext() const</div><div class="ttdoc">Return current context. </div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00057">CxtStmt.h:57</a></div></div>
1438
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a94d65f9e22a13772042b2af652cf5538"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a94d65f9e22a13772042b2af652cf5538">SVF::ForkJoinAnalysis::getCBN</a></div><div class="ttdeci">CallICFGNode * getCBN(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00387">MHP.h:387</a></div></div>
1438
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a94d65f9e22a13772042b2af652cf5538"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a94d65f9e22a13772042b2af652cf5538">SVF::ForkJoinAnalysis::getCBN</a></div><div class="ttdeci">CallICFGNode * getCBN(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00409">MHP.h:409</a></div></div>
1439
1439
  <div class="ttc" id="classSVF_1_1CallICFGNode_html"><div class="ttname"><a href="classSVF_1_1CallICFGNode.html">SVF::CallICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00363">ICFGNode.h:363</a></div></div>
1440
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a8d40e687caf8999369621ed385dfc631ad5af2a561c196e33d88fc63363d0d8f4"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631ad5af2a561c196e33d88fc63363d0d8f4">SVF::ForkJoinAnalysis::TDDead</a></div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00281">MHP.h:281</a></div></div>
1441
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_aac722a42dc6e03e771a7a80de5f8ec94"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#aac722a42dc6e03e771a7a80de5f8ec94">SVF::ForkJoinAnalysis::isTDJoin</a></div><div class="ttdeci">bool isTDJoin(const Instruction *call)</div><div class="ttdoc">Whether it is a join site. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00479">MHP.h:479</a></div></div>
1442
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_ab302cceb28998623fed622560e50a740"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#ab302cceb28998623fed622560e50a740">SVF::ForkJoinAnalysis::addSymmetricLoopJoin</a></div><div class="ttdeci">void addSymmetricLoopJoin(const CxtStmt &amp;cs, const Loop *lp)</div><div class="ttdoc">Add inloop join. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00536">MHP.h:536</a></div></div>
1443
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a8d40e687caf8999369621ed385dfc631a2abecc56b7d5c644f7e14c98d33d0a0a"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631a2abecc56b7d5c644f7e14c98d33d0a0a">SVF::ForkJoinAnalysis::TDAlive</a></div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00280">MHP.h:280</a></div></div>
1444
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a8ad9b8cb0e6300b2ffc55244e53cece6"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a8ad9b8cb0e6300b2ffc55244e53cece6">SVF::ForkJoinAnalysis::getTCG</a></div><div class="ttdeci">ThreadCallGraph * getTCG() const</div><div class="ttdoc">ThreadCallGraph. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00499">MHP.h:499</a></div></div>
1440
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a8d40e687caf8999369621ed385dfc631ad5af2a561c196e33d88fc63363d0d8f4"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631ad5af2a561c196e33d88fc63363d0d8f4">SVF::ForkJoinAnalysis::TDDead</a></div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00303">MHP.h:303</a></div></div>
1441
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_aac722a42dc6e03e771a7a80de5f8ec94"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#aac722a42dc6e03e771a7a80de5f8ec94">SVF::ForkJoinAnalysis::isTDJoin</a></div><div class="ttdeci">bool isTDJoin(const Instruction *call)</div><div class="ttdoc">Whether it is a join site. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00501">MHP.h:501</a></div></div>
1442
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_ab302cceb28998623fed622560e50a740"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#ab302cceb28998623fed622560e50a740">SVF::ForkJoinAnalysis::addSymmetricLoopJoin</a></div><div class="ttdeci">void addSymmetricLoopJoin(const CxtStmt &amp;cs, const Loop *lp)</div><div class="ttdoc">Add inloop join. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00558">MHP.h:558</a></div></div>
1443
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a8d40e687caf8999369621ed385dfc631a2abecc56b7d5c644f7e14c98d33d0a0a"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631a2abecc56b7d5c644f7e14c98d33d0a0a">SVF::ForkJoinAnalysis::TDAlive</a></div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00302">MHP.h:302</a></div></div>
1444
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a8ad9b8cb0e6300b2ffc55244e53cece6"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a8ad9b8cb0e6300b2ffc55244e53cece6">SVF::ForkJoinAnalysis::getTCG</a></div><div class="ttdeci">ThreadCallGraph * getTCG() const</div><div class="ttdoc">ThreadCallGraph. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00521">MHP.h:521</a></div></div>
1445
1445
  <div class="ttc" id="SVFBasicTypes_8h_html_a173ce1b9b505fdadf5613b663749d3b0"><div class="ttname"><a href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a></div><div class="ttdeci">#define DBOUT(TYPE, X)</div><div class="ttdoc">LLVM debug macros, define type of your DEBUG model of each pass. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00155">SVFBasicTypes.h:155</a></div></div>
1446
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_add09218cce8d8bd8dd9e73b2d26a5797"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#add09218cce8d8bd8dd9e73b2d26a5797">SVF::ForkJoinAnalysis::handleIntra</a></div><div class="ttdeci">void handleIntra(const CxtStmt &amp;cts)</div><div class="ttdoc">Handle intra. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l00948">MHP.cpp:948</a></div></div>
1446
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_add09218cce8d8bd8dd9e73b2d26a5797"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#add09218cce8d8bd8dd9e73b2d26a5797">SVF::ForkJoinAnalysis::handleIntra</a></div><div class="ttdeci">void handleIntra(const CxtStmt &amp;cts)</div><div class="ttdoc">Handle intra. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l00970">MHP.cpp:970</a></div></div>
1447
1447
  </div><!-- fragment -->
1448
1448
  </div>
1449
1449
  </div>
@@ -1473,26 +1473,26 @@ Private Attributes</h2></td></tr>
1473
1473
 
1474
1474
  <p>Handle return. </p>
1475
1475
 
1476
- <p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#l00902">902</a> of file <a class="el" href="MHP_8cpp_source.html">MHP.cpp</a>.</p>
1477
- <div class="fragment"><div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160;{</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; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* curInst = cts.<a class="code" href="classSVF_1_1CxtStmt.html#a5e8c4b10eb5c3240d2e21a020ed834a6">getStmt</a>();</div><div class="line"><a name="l00906"></a><span class="lineno"> 906</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="l00907"></a><span class="lineno"> 907</span>&#160;</div><div class="line"><a name="l00908"></a><span class="lineno"> 908</span>&#160; <a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a>* curFunNode = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8ad9b8cb0e6300b2ffc55244e53cece6">getTCG</a>()-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">getCallGraphNode</a>(<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#a21bcc063a406eb8650df42cf5ced68c9">getSVFFun</a>(curInst-&gt;getParent()-&gt;getParent()));</div><div class="line"><a name="l00909"></a><span class="lineno"> 909</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="l00910"></a><span class="lineno"> 910</span>&#160; {</div><div class="line"><a name="l00911"></a><span class="lineno"> 911</span>&#160; <a class="code" href="classSVF_1_1PTACallGraphEdge.html">PTACallGraphEdge</a>* edge = *it;</div><div class="line"><a name="l00912"></a><span class="lineno"> 912</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="l00913"></a><span class="lineno"> 913</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160; <span class="keywordflow">for</span>(PTACallGraphEdge::CallInstSet::const_iterator cit = (edge)-&gt;directCallsBegin(),</div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160; ecit = (edge)-&gt;directCallsEnd(); cit!=ecit; ++cit)</div><div class="line"><a name="l00916"></a><span class="lineno"> 916</span>&#160; {</div><div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160; <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a> newCxt = curCxt;</div><div class="line"><a name="l00918"></a><span class="lineno"> 918</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#aea9ef584ce6c7129bcd1d5ecda2f1f74">matchCxt</a>(newCxt,(*cit)-&gt;getCallSite(),curFunNode-&gt;<a class="code" href="classSVF_1_1PTACallGraphNode.html#a959445c97605953fbdebbbd999437a09">getFunction</a>()-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>()))</div><div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160; {</div><div class="line"><a name="l00920"></a><span class="lineno"> 920</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a613d763731058899e6819acdb2d7315f">InstVec</a> nextInsts;</div><div class="line"><a name="l00921"></a><span class="lineno"> 921</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a799e14292e16b9fb322cab07f3ff5593">getNextInsts</a>((*cit)-&gt;getCallSite(),nextInsts);</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; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ac483d3b0e9084c2033e177eda9ac9215">markCxtStmtFlag</a>(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_1ForkJoinAnalysis.html#aea9ef584ce6c7129bcd1d5ecda2f1f74">matchCxt</a>(newCxt,(*cit)-&gt;getCallSite(),curFunNode-&gt;<a class="code" href="classSVF_1_1PTACallGraphNode.html#a959445c97605953fbdebbbd999437a09">getFunction</a>()-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>()))</div><div class="line"><a name="l00934"></a><span class="lineno"> 934</span>&#160; {</div><div class="line"><a name="l00935"></a><span class="lineno"> 935</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a613d763731058899e6819acdb2d7315f">InstVec</a> nextInsts;</div><div class="line"><a name="l00936"></a><span class="lineno"> 936</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a799e14292e16b9fb322cab07f3ff5593">getNextInsts</a>((*cit)-&gt;getCallSite(),nextInsts);</div><div class="line"><a name="l00937"></a><span class="lineno"> 937</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="l00938"></a><span class="lineno"> 938</span>&#160; {</div><div class="line"><a name="l00939"></a><span class="lineno"> 939</span>&#160; <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a> newCts(newCxt,*nit);</div><div class="line"><a name="l00940"></a><span class="lineno"> 940</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ac483d3b0e9084c2033e177eda9ac9215">markCxtStmtFlag</a>(newCts,cts);</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="ttc" id="classSVF_1_1PTACallGraph_html_aaab54c670518d9d6790707f76ea76aa1"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">SVF::PTACallGraph::getCallGraphNode</a></div><div class="ttdeci">PTACallGraphNode * getCallGraphNode(NodeID id) const</div><div class="ttdoc">Get call graph node. </div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00315">PTACallGraph.h:315</a></div></div>
1476
+ <p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#l00924">924</a> of file <a class="el" href="MHP_8cpp_source.html">MHP.cpp</a>.</p>
1477
+ <div class="fragment"><div class="line"><a name="l00925"></a><span class="lineno"> 925</span>&#160;{</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; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* curInst = cts.<a class="code" href="classSVF_1_1CxtStmt.html#a5e8c4b10eb5c3240d2e21a020ed834a6">getStmt</a>();</div><div class="line"><a name="l00928"></a><span class="lineno"> 928</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="l00929"></a><span class="lineno"> 929</span>&#160;</div><div class="line"><a name="l00930"></a><span class="lineno"> 930</span>&#160; <a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a>* curFunNode = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8ad9b8cb0e6300b2ffc55244e53cece6">getTCG</a>()-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">getCallGraphNode</a>(<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#a21bcc063a406eb8650df42cf5ced68c9">getSVFFun</a>(curInst-&gt;getParent()-&gt;getParent()));</div><div class="line"><a name="l00931"></a><span class="lineno"> 931</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="l00932"></a><span class="lineno"> 932</span>&#160; {</div><div class="line"><a name="l00933"></a><span class="lineno"> 933</span>&#160; <a class="code" href="classSVF_1_1PTACallGraphEdge.html">PTACallGraphEdge</a>* edge = *it;</div><div class="line"><a name="l00934"></a><span class="lineno"> 934</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="l00935"></a><span class="lineno"> 935</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00936"></a><span class="lineno"> 936</span>&#160; <span class="keywordflow">for</span>(PTACallGraphEdge::CallInstSet::const_iterator cit = (edge)-&gt;directCallsBegin(),</div><div class="line"><a name="l00937"></a><span class="lineno"> 937</span>&#160; ecit = (edge)-&gt;directCallsEnd(); cit!=ecit; ++cit)</div><div class="line"><a name="l00938"></a><span class="lineno"> 938</span>&#160; {</div><div class="line"><a name="l00939"></a><span class="lineno"> 939</span>&#160; <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a> newCxt = curCxt;</div><div class="line"><a name="l00940"></a><span class="lineno"> 940</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#aea9ef584ce6c7129bcd1d5ecda2f1f74">matchCxt</a>(newCxt,(*cit)-&gt;getCallSite(),curFunNode-&gt;<a class="code" href="classSVF_1_1PTACallGraphNode.html#a959445c97605953fbdebbbd999437a09">getFunction</a>()-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>()))</div><div class="line"><a name="l00941"></a><span class="lineno"> 941</span>&#160; {</div><div class="line"><a name="l00942"></a><span class="lineno"> 942</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a613d763731058899e6819acdb2d7315f">InstVec</a> nextInsts;</div><div class="line"><a name="l00943"></a><span class="lineno"> 943</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a799e14292e16b9fb322cab07f3ff5593">getNextInsts</a>((*cit)-&gt;getCallSite(),nextInsts);</div><div class="line"><a name="l00944"></a><span class="lineno"> 944</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="l00945"></a><span class="lineno"> 945</span>&#160; {</div><div class="line"><a name="l00946"></a><span class="lineno"> 946</span>&#160; <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a> newCts(newCxt,*nit);</div><div class="line"><a name="l00947"></a><span class="lineno"> 947</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ac483d3b0e9084c2033e177eda9ac9215">markCxtStmtFlag</a>(newCts,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; }</div><div class="line"><a name="l00951"></a><span class="lineno"> 951</span>&#160; <span class="keywordflow">for</span>(PTACallGraphEdge::CallInstSet::const_iterator cit = (edge)-&gt;indirectCallsBegin(),</div><div class="line"><a name="l00952"></a><span class="lineno"> 952</span>&#160; ecit = (edge)-&gt;indirectCallsEnd(); cit!=ecit; ++cit)</div><div class="line"><a name="l00953"></a><span class="lineno"> 953</span>&#160; {</div><div class="line"><a name="l00954"></a><span class="lineno"> 954</span>&#160; <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a> newCxt = curCxt;</div><div class="line"><a name="l00955"></a><span class="lineno"> 955</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#aea9ef584ce6c7129bcd1d5ecda2f1f74">matchCxt</a>(newCxt,(*cit)-&gt;getCallSite(),curFunNode-&gt;<a class="code" href="classSVF_1_1PTACallGraphNode.html#a959445c97605953fbdebbbd999437a09">getFunction</a>()-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>()))</div><div class="line"><a name="l00956"></a><span class="lineno"> 956</span>&#160; {</div><div class="line"><a name="l00957"></a><span class="lineno"> 957</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a613d763731058899e6819acdb2d7315f">InstVec</a> nextInsts;</div><div class="line"><a name="l00958"></a><span class="lineno"> 958</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a799e14292e16b9fb322cab07f3ff5593">getNextInsts</a>((*cit)-&gt;getCallSite(),nextInsts);</div><div class="line"><a name="l00959"></a><span class="lineno"> 959</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="l00960"></a><span class="lineno"> 960</span>&#160; {</div><div class="line"><a name="l00961"></a><span class="lineno"> 961</span>&#160; <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a> newCts(newCxt,*nit);</div><div class="line"><a name="l00962"></a><span class="lineno"> 962</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ac483d3b0e9084c2033e177eda9ac9215">markCxtStmtFlag</a>(newCts,cts);</div><div class="line"><a name="l00963"></a><span class="lineno"> 963</span>&#160; }</div><div class="line"><a name="l00964"></a><span class="lineno"> 964</span>&#160; }</div><div class="line"><a name="l00965"></a><span class="lineno"> 965</span>&#160; }</div><div class="line"><a name="l00966"></a><span class="lineno"> 966</span>&#160; }</div><div class="line"><a name="l00967"></a><span class="lineno"> 967</span>&#160;}</div><div class="ttc" id="classSVF_1_1PTACallGraph_html_aaab54c670518d9d6790707f76ea76aa1"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">SVF::PTACallGraph::getCallGraphNode</a></div><div class="ttdeci">PTACallGraphNode * getCallGraphNode(NodeID id) const</div><div class="ttdoc">Get call graph node. </div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00315">PTACallGraph.h:315</a></div></div>
1478
1478
  <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>
1479
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a2c6ce7aa04c399746d89230be0e0f1ce"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">SVF::ForkJoinAnalysis::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00540">MHP.h:540</a></div></div>
1480
- <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#l00284">MHP.h:284</a></div></div>
1481
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a799e14292e16b9fb322cab07f3ff5593"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a799e14292e16b9fb322cab07f3ff5593">SVF::ForkJoinAnalysis::getNextInsts</a></div><div class="ttdeci">void getNextInsts(const Instruction *inst, InstVec &amp;instSet)</div><div class="ttdoc">Get the next instructions following control flow. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00458">MHP.h:458</a></div></div>
1479
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a2c6ce7aa04c399746d89230be0e0f1ce"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">SVF::ForkJoinAnalysis::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00562">MHP.h:562</a></div></div>
1480
+ <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#l00306">MHP.h:306</a></div></div>
1481
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a799e14292e16b9fb322cab07f3ff5593"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a799e14292e16b9fb322cab07f3ff5593">SVF::ForkJoinAnalysis::getNextInsts</a></div><div class="ttdeci">void getNextInsts(const Instruction *inst, InstVec &amp;instSet)</div><div class="ttdoc">Get the next instructions following control flow. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00480">MHP.h:480</a></div></div>
1482
1482
  <div class="ttc" id="classSVF_1_1CxtStmt_html_a5e8c4b10eb5c3240d2e21a020ed834a6"><div class="ttname"><a href="classSVF_1_1CxtStmt.html#a5e8c4b10eb5c3240d2e21a020ed834a6">SVF::CxtStmt::getStmt</a></div><div class="ttdeci">const Instruction * 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>
1483
1483
  <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="SVFBasicTypes_8h_source.html#l00131">SVFBasicTypes.h:131</a></div></div>
1484
- <div class="ttc" id="classSVF_1_1TCT_html_a21bcc063a406eb8650df42cf5ced68c9"><div class="ttname"><a href="classSVF_1_1TCT.html#a21bcc063a406eb8650df42cf5ced68c9">SVF::TCT::getSVFFun</a></div><div class="ttdeci">const SVFFunction * getSVFFun(const Function *fun) const</div><div class="ttdoc">Get SVFFuntion given Function. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00155">TCT.h:155</a></div></div>
1485
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_aea9ef584ce6c7129bcd1d5ecda2f1f74"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#aea9ef584ce6c7129bcd1d5ecda2f1f74">SVF::ForkJoinAnalysis::matchCxt</a></div><div class="ttdeci">bool matchCxt(CallStrCxt &amp;cxt, const Instruction *call, const Function *callee)</div><div class="ttdoc">Match context. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00468">MHP.h:468</a></div></div>
1484
+ <div class="ttc" id="classSVF_1_1TCT_html_a21bcc063a406eb8650df42cf5ced68c9"><div class="ttname"><a href="classSVF_1_1TCT.html#a21bcc063a406eb8650df42cf5ced68c9">SVF::TCT::getSVFFun</a></div><div class="ttdeci">const SVFFunction * getSVFFun(const Function *fun) const</div><div class="ttdoc">Get SVFFuntion given Function. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00177">TCT.h:177</a></div></div>
1485
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_aea9ef584ce6c7129bcd1d5ecda2f1f74"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#aea9ef584ce6c7129bcd1d5ecda2f1f74">SVF::ForkJoinAnalysis::matchCxt</a></div><div class="ttdeci">bool matchCxt(CallStrCxt &amp;cxt, const Instruction *call, const Function *callee)</div><div class="ttdoc">Match context. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00490">MHP.h:490</a></div></div>
1486
1486
  <div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00073">BasicTypes.h:73</a></div></div>
1487
1487
  <div class="ttc" id="classSVF_1_1PTACallGraphEdge_html"><div class="ttname"><a href="classSVF_1_1PTACallGraphEdge.html">SVF::PTACallGraphEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00051">PTACallGraph.h:51</a></div></div>
1488
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_ac483d3b0e9084c2033e177eda9ac9215"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#ac483d3b0e9084c2033e177eda9ac9215">SVF::ForkJoinAnalysis::markCxtStmtFlag</a></div><div class="ttdeci">void markCxtStmtFlag(const CxtStmt &amp;tgr, ValDomain flag)</div><div class="ttdoc">Initialize TDAlive and TDDead flags. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00406">MHP.h:406</a></div></div>
1488
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_ac483d3b0e9084c2033e177eda9ac9215"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#ac483d3b0e9084c2033e177eda9ac9215">SVF::ForkJoinAnalysis::markCxtStmtFlag</a></div><div class="ttdeci">void markCxtStmtFlag(const CxtStmt &amp;tgr, ValDomain flag)</div><div class="ttdoc">Initialize TDAlive and TDDead flags. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00428">MHP.h:428</a></div></div>
1489
1489
  <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>
1490
1490
  <div class="ttc" id="classSVF_1_1PTACallGraphNode_html_a959445c97605953fbdebbbd999437a09"><div class="ttname"><a href="classSVF_1_1PTACallGraphNode.html#a959445c97605953fbdebbbd999437a09">SVF::PTACallGraphNode::getFunction</a></div><div class="ttdeci">const SVFFunction * getFunction() const</div><div class="ttdoc">Get function of this call node. </div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00193">PTACallGraph.h:193</a></div></div>
1491
1491
  <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>
1492
1492
  <div class="ttc" id="classSVF_1_1CxtStmt_html_a3ce19b8f2de2e199ed4165dbe9d21f28"><div class="ttname"><a href="classSVF_1_1CxtStmt.html#a3ce19b8f2de2e199ed4165dbe9d21f28">SVF::CxtStmt::getContext</a></div><div class="ttdeci">const CallStrCxt &amp; getContext() const</div><div class="ttdoc">Return current context. </div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00057">CxtStmt.h:57</a></div></div>
1493
1493
  <div class="ttc" id="classSVF_1_1SVFFunction_html_ac4ae917ae35ac6fca652fe2dd90a8ac2"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">SVF::SVFFunction::getLLVMFun</a></div><div class="ttdeci">Function * getLLVMFun() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00151">BasicTypes.h:151</a></div></div>
1494
1494
  <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>
1495
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a8ad9b8cb0e6300b2ffc55244e53cece6"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a8ad9b8cb0e6300b2ffc55244e53cece6">SVF::ForkJoinAnalysis::getTCG</a></div><div class="ttdeci">ThreadCallGraph * getTCG() const</div><div class="ttdoc">ThreadCallGraph. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00499">MHP.h:499</a></div></div>
1495
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a8ad9b8cb0e6300b2ffc55244e53cece6"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a8ad9b8cb0e6300b2ffc55244e53cece6">SVF::ForkJoinAnalysis::getTCG</a></div><div class="ttdeci">ThreadCallGraph * getTCG() const</div><div class="ttdoc">ThreadCallGraph. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00521">MHP.h:521</a></div></div>
1496
1496
  </div><!-- fragment -->
1497
1497
  </div>
1498
1498
  </div>
@@ -1532,13 +1532,13 @@ Private Attributes</h2></td></tr>
1532
1532
 
1533
1533
  <p>Whether it is a matched fork join pair. </p>
1534
1534
 
1535
- <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00382">382</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
1536
- <div class="fragment"><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; {</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#a5b087b42340d1a1b2ee37339637709d3">getPTA</a>()-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a6c01f259ad2379a422d7106ce0255eb8">alias</a>(<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#acd4308b99446c277ccb3407103fe21d0">getForkedThread</a>(forkSite), <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ada1e56dfe2d64ea6310142a346c86ed4">getJoinedThread</a>(joinSite)) &amp;&amp; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a4d073da3e5266964dad7422033013219">isSameSCEV</a>(forkSite,joinSite);</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; }</div><div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a4d073da3e5266964dad7422033013219"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a4d073da3e5266964dad7422033013219">SVF::ForkJoinAnalysis::isSameSCEV</a></div><div class="ttdeci">bool isSameSCEV(const Instruction *forkSite, const Instruction *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#l01043">MHP.cpp:1043</a></div></div>
1537
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_ada1e56dfe2d64ea6310142a346c86ed4"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#ada1e56dfe2d64ea6310142a346c86ed4">SVF::ForkJoinAnalysis::getJoinedThread</a></div><div class="ttdeci">const Value * getJoinedThread(const Instruction *call)</div><div class="ttdoc">Get joined thread. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00489">MHP.h:489</a></div></div>
1538
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a2c6ce7aa04c399746d89230be0e0f1ce"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">SVF::ForkJoinAnalysis::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00540">MHP.h:540</a></div></div>
1539
- <div class="ttc" id="classSVF_1_1TCT_html_a5b087b42340d1a1b2ee37339637709d3"><div class="ttname"><a href="classSVF_1_1TCT.html#a5b087b42340d1a1b2ee37339637709d3">SVF::TCT::getPTA</a></div><div class="ttdeci">PointerAnalysis * getPTA() const</div><div class="ttdoc">Get PTA. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00171">TCT.h:171</a></div></div>
1535
+ <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00404">404</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
1536
+ <div class="fragment"><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; {</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#a5b087b42340d1a1b2ee37339637709d3">getPTA</a>()-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a6c01f259ad2379a422d7106ce0255eb8">alias</a>(<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#acd4308b99446c277ccb3407103fe21d0">getForkedThread</a>(forkSite), <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ada1e56dfe2d64ea6310142a346c86ed4">getJoinedThread</a>(joinSite)) &amp;&amp; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a4d073da3e5266964dad7422033013219">isSameSCEV</a>(forkSite,joinSite);</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; }</div><div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a4d073da3e5266964dad7422033013219"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a4d073da3e5266964dad7422033013219">SVF::ForkJoinAnalysis::isSameSCEV</a></div><div class="ttdeci">bool isSameSCEV(const Instruction *forkSite, const Instruction *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#l01065">MHP.cpp:1065</a></div></div>
1537
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_ada1e56dfe2d64ea6310142a346c86ed4"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#ada1e56dfe2d64ea6310142a346c86ed4">SVF::ForkJoinAnalysis::getJoinedThread</a></div><div class="ttdeci">const Value * getJoinedThread(const Instruction *call)</div><div class="ttdoc">Get joined thread. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00511">MHP.h:511</a></div></div>
1538
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a2c6ce7aa04c399746d89230be0e0f1ce"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">SVF::ForkJoinAnalysis::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00562">MHP.h:562</a></div></div>
1539
+ <div class="ttc" id="classSVF_1_1TCT_html_a5b087b42340d1a1b2ee37339637709d3"><div class="ttname"><a href="classSVF_1_1TCT.html#a5b087b42340d1a1b2ee37339637709d3">SVF::TCT::getPTA</a></div><div class="ttdeci">PointerAnalysis * getPTA() const</div><div class="ttdoc">Get PTA. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00193">TCT.h:193</a></div></div>
1540
1540
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a6c01f259ad2379a422d7106ce0255eb8"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a6c01f259ad2379a422d7106ce0255eb8">SVF::PointerAnalysis::alias</a></div><div class="ttdeci">virtual AliasResult alias(const Value *V1, const Value *V2)=0</div><div class="ttdoc">Interface exposed to users of our pointer analysis, given Value infos. </div></div>
1541
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_acd4308b99446c277ccb3407103fe21d0"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#acd4308b99446c277ccb3407103fe21d0">SVF::ForkJoinAnalysis::getForkedThread</a></div><div class="ttdeci">const Value * getForkedThread(const Instruction *call)</div><div class="ttdoc">Get forked thread. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00484">MHP.h:484</a></div></div>
1541
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_acd4308b99446c277ccb3407103fe21d0"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#acd4308b99446c277ccb3407103fe21d0">SVF::ForkJoinAnalysis::getForkedThread</a></div><div class="ttdeci">const Value * getForkedThread(const Instruction *call)</div><div class="ttdoc">Get forked thread. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00506">MHP.h:506</a></div></div>
1542
1542
  </div><!-- fragment -->
1543
1543
  </div>
1544
1544
  </div>
@@ -1578,9 +1578,9 @@ Private Attributes</h2></td></tr>
1578
1578
 
1579
1579
  <p>Whether t1 fully joins t2. </p>
1580
1580
 
1581
- <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00329">329</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
1582
- <div class="fragment"><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; <span class="keywordtype">bool</span> full = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a4193a30050195cd9aaafd58511b66ccc">fullJoin</a>.find(std::make_pair(tid1,tid2))!=<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a4193a30050195cd9aaafd58511b66ccc">fullJoin</a>.end();</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <span class="keywordtype">bool</span> partial = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a3616d6e1649f9e451da0f7a44cffc1e3">partialJoin</a>.find(std::make_pair(tid1,tid2))!=<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a3616d6e1649f9e451da0f7a44cffc1e3">partialJoin</a>.end();</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; <span class="keywordflow">if</span>(full &amp;&amp; !partial)</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; }</div><div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a4193a30050195cd9aaafd58511b66ccc"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a4193a30050195cd9aaafd58511b66ccc">SVF::ForkJoinAnalysis::fullJoin</a></div><div class="ttdeci">ThreadPairSet fullJoin</div><div class="ttdoc">t1 fully joins t2 along all program path </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00548">MHP.h:548</a></div></div>
1583
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a3616d6e1649f9e451da0f7a44cffc1e3"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a3616d6e1649f9e451da0f7a44cffc1e3">SVF::ForkJoinAnalysis::partialJoin</a></div><div class="ttdeci">ThreadPairSet partialJoin</div><div class="ttdoc">t1 partially joins t2 along some program path(s) </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00549">MHP.h:549</a></div></div>
1581
+ <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00351">351</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
1582
+ <div class="fragment"><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; {</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <span class="keywordtype">bool</span> full = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a4193a30050195cd9aaafd58511b66ccc">fullJoin</a>.find(std::make_pair(tid1,tid2))!=<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a4193a30050195cd9aaafd58511b66ccc">fullJoin</a>.end();</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; <span class="keywordtype">bool</span> partial = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a3616d6e1649f9e451da0f7a44cffc1e3">partialJoin</a>.find(std::make_pair(tid1,tid2))!=<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a3616d6e1649f9e451da0f7a44cffc1e3">partialJoin</a>.end();</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; <span class="keywordflow">if</span>(full &amp;&amp; !partial)</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; }</div><div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a4193a30050195cd9aaafd58511b66ccc"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a4193a30050195cd9aaafd58511b66ccc">SVF::ForkJoinAnalysis::fullJoin</a></div><div class="ttdeci">ThreadPairSet fullJoin</div><div class="ttdoc">t1 fully joins t2 along all program path </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00570">MHP.h:570</a></div></div>
1583
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a3616d6e1649f9e451da0f7a44cffc1e3"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a3616d6e1649f9e451da0f7a44cffc1e3">SVF::ForkJoinAnalysis::partialJoin</a></div><div class="ttdeci">ThreadPairSet partialJoin</div><div class="ttdoc">t1 partially joins t2 along some program path(s) </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00571">MHP.h:571</a></div></div>
1584
1584
  </div><!-- fragment -->
1585
1585
  </div>
1586
1586
  </div>
@@ -1620,9 +1620,9 @@ Private Attributes</h2></td></tr>
1620
1620
 
1621
1621
  <p>Whether thread t1 happens-before thread t2. </p>
1622
1622
 
1623
- <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00320">320</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
1624
- <div class="fragment"><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; <span class="keywordtype">bool</span> nonhp = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#aad3e722ecaa4a39aef0e1cabfa2b8019">HBPair</a>.find(std::make_pair(tid1,tid2))!=<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#aad3e722ecaa4a39aef0e1cabfa2b8019">HBPair</a>.end();</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <span class="keywordtype">bool</span> hp = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a4ad5c7a21ca994d908d648ca9d9e1833">HPPair</a>.find(std::make_pair(tid1,tid2))!=<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a4ad5c7a21ca994d908d648ca9d9e1833">HPPair</a>.end();</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; <span class="keywordflow">if</span>(nonhp &amp;&amp; !hp)</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; }</div><div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a4ad5c7a21ca994d908d648ca9d9e1833"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a4ad5c7a21ca994d908d648ca9d9e1833">SVF::ForkJoinAnalysis::HPPair</a></div><div class="ttdeci">ThreadPairSet HPPair</div><div class="ttdoc">threads happen-in-parallel </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00547">MHP.h:547</a></div></div>
1625
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_aad3e722ecaa4a39aef0e1cabfa2b8019"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#aad3e722ecaa4a39aef0e1cabfa2b8019">SVF::ForkJoinAnalysis::HBPair</a></div><div class="ttdeci">ThreadPairSet HBPair</div><div class="ttdoc">thread happens-before pair </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00546">MHP.h:546</a></div></div>
1623
+ <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00342">342</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
1624
+ <div class="fragment"><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; {</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <span class="keywordtype">bool</span> nonhp = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#aad3e722ecaa4a39aef0e1cabfa2b8019">HBPair</a>.find(std::make_pair(tid1,tid2))!=<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#aad3e722ecaa4a39aef0e1cabfa2b8019">HBPair</a>.end();</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; <span class="keywordtype">bool</span> hp = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a4ad5c7a21ca994d908d648ca9d9e1833">HPPair</a>.find(std::make_pair(tid1,tid2))!=<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a4ad5c7a21ca994d908d648ca9d9e1833">HPPair</a>.end();</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <span class="keywordflow">if</span>(nonhp &amp;&amp; !hp)</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; }</div><div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a4ad5c7a21ca994d908d648ca9d9e1833"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a4ad5c7a21ca994d908d648ca9d9e1833">SVF::ForkJoinAnalysis::HPPair</a></div><div class="ttdeci">ThreadPairSet HPPair</div><div class="ttdoc">threads happen-in-parallel </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00569">MHP.h:569</a></div></div>
1625
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_aad3e722ecaa4a39aef0e1cabfa2b8019"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#aad3e722ecaa4a39aef0e1cabfa2b8019">SVF::ForkJoinAnalysis::HBPair</a></div><div class="ttdeci">ThreadPairSet HBPair</div><div class="ttdoc">thread happens-before pair </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00568">MHP.h:568</a></div></div>
1626
1626
  </div><!-- fragment -->
1627
1627
  </div>
1628
1628
  </div>
@@ -1652,8 +1652,8 @@ Private Attributes</h2></td></tr>
1652
1652
 
1653
1653
  <p>Whether a context-sensitive join satisfies symmetric loop pattern. </p>
1654
1654
 
1655
- <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00312">312</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
1656
- <div class="fragment"><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; CxtStmtToLoopMap::const_iterator it = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a63da48d338683ec95709a6bd95238707">cxtJoinInLoop</a>.find(cs);</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <span class="keywordflow">if</span>(it!=<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a63da48d338683ec95709a6bd95238707">cxtJoinInLoop</a>.end())</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; }</div><div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a63da48d338683ec95709a6bd95238707"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a63da48d338683ec95709a6bd95238707">SVF::ForkJoinAnalysis::cxtJoinInLoop</a></div><div class="ttdeci">CxtStmtToLoopMap cxtJoinInLoop</div><div class="ttdoc">a set of context-sensitive join inside loop </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00545">MHP.h:545</a></div></div>
1655
+ <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00334">334</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
1656
+ <div class="fragment"><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; {</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; CxtStmtToLoopMap::const_iterator it = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a63da48d338683ec95709a6bd95238707">cxtJoinInLoop</a>.find(cs);</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; <span class="keywordflow">if</span>(it!=<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a63da48d338683ec95709a6bd95238707">cxtJoinInLoop</a>.end())</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; }</div><div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a63da48d338683ec95709a6bd95238707"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a63da48d338683ec95709a6bd95238707">SVF::ForkJoinAnalysis::cxtJoinInLoop</a></div><div class="ttdeci">CxtStmtToLoopMap cxtJoinInLoop</div><div class="ttdoc">a set of context-sensitive join inside loop </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00567">MHP.h:567</a></div></div>
1657
1657
  </div><!-- fragment -->
1658
1658
  </div>
1659
1659
  </div>
@@ -1694,12 +1694,12 @@ Private Attributes</h2></td></tr>
1694
1694
  <p>Return true if the fork and join have the same SCEV. </p>
1695
1695
  <p>We assume a pair of fork and join sites are must-alias if they have same <a class="el" href="classSVF_1_1PTASCEV.html">PTASCEV</a> (1) SCEV not inside loop (2) SCEV inside two symmetric loops, then pointers of fork thread and join thread should have same scev start and step. and should have same loop trip count </p>
1696
1696
 
1697
- <p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#l01043">1043</a> of file <a class="el" href="MHP_8cpp_source.html">MHP.cpp</a>.</p>
1698
- <div class="fragment"><div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>&#160;{</div><div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>&#160;</div><div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PTASCEV.html">PTASCEV</a>&amp; forkse = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a4207948054a0f98560922f3f07ada10f">fkjnToPTASCEVMap</a>[forkSite];</div><div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PTASCEV.html">PTASCEV</a>&amp; joinse = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a4207948054a0f98560922f3f07ada10f">fkjnToPTASCEVMap</a>[joinSite];</div><div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>&#160;</div><div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>&#160; <span class="comment">//if(sameLoopTripCount(forkSite,joinSite) == false)</span></div><div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160; <span class="comment">// return false;</span></div><div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160;</div><div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>&#160; <span class="keywordflow">if</span>(forkse.<a class="code" href="classSVF_1_1PTASCEV.html#ac6636f0c39ef55e2b5f126532bf2d411">inloop</a> &amp;&amp; joinse.<a class="code" href="classSVF_1_1PTASCEV.html#ac6636f0c39ef55e2b5f126532bf2d411">inloop</a>)</div><div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>&#160; <span class="keywordflow">return</span> forkse.<a class="code" href="classSVF_1_1PTASCEV.html#a0de1531fc72f5aa0bafc59101faae68d">start</a>==joinse.<a class="code" href="classSVF_1_1PTASCEV.html#a0de1531fc72f5aa0bafc59101faae68d">start</a> &amp;&amp; forkse.<a class="code" href="classSVF_1_1PTASCEV.html#aead435732fbb492627f746b3d0654ce2">step</a> == joinse.<a class="code" href="classSVF_1_1PTASCEV.html#aead435732fbb492627f746b3d0654ce2">step</a> &amp;&amp; forkse.<a class="code" href="classSVF_1_1PTASCEV.html#aa92f2da24c8b6d3548f8b4920a8d157f">tripcount</a> &lt;= joinse.<a class="code" href="classSVF_1_1PTASCEV.html#aa92f2da24c8b6d3548f8b4920a8d157f">tripcount</a>;</div><div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;GetElementPtrInst&gt;(forkse.<a class="code" href="classSVF_1_1PTASCEV.html#aa6b49b5cbe5057d779685c9ebe763421">ptr</a>) &amp;&amp; SVFUtil::isa&lt;GetElementPtrInst&gt;(joinse.<a class="code" href="classSVF_1_1PTASCEV.html#aa6b49b5cbe5057d779685c9ebe763421">ptr</a>))</div><div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>&#160; <span class="keywordflow">return</span> <a class="code" href="MHP_8cpp.html#a1a6f1ed70075da459ab275eb5c099144">accessSameArrayIndex</a>(SVFUtil::cast&lt;GetElementPtrInst&gt;(forkse.<a class="code" href="classSVF_1_1PTASCEV.html#aa6b49b5cbe5057d779685c9ebe763421">ptr</a>),SVFUtil::cast&lt;GetElementPtrInst&gt;(joinse.<a class="code" href="classSVF_1_1PTASCEV.html#aa6b49b5cbe5057d779685c9ebe763421">ptr</a>));</div><div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;GetElementPtrInst&gt;(forkse.<a class="code" href="classSVF_1_1PTASCEV.html#aa6b49b5cbe5057d779685c9ebe763421">ptr</a>) || SVFUtil::isa&lt;GetElementPtrInst&gt;(joinse.<a class="code" href="classSVF_1_1PTASCEV.html#aa6b49b5cbe5057d779685c9ebe763421">ptr</a>))</div><div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>&#160;}</div><div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a4207948054a0f98560922f3f07ada10f"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a4207948054a0f98560922f3f07ada10f">SVF::ForkJoinAnalysis::fkjnToPTASCEVMap</a></div><div class="ttdeci">forkjoinToPTASCEVMap fkjnToPTASCEVMap</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00551">MHP.h:551</a></div></div>
1697
+ <p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#l01065">1065</a> of file <a class="el" href="MHP_8cpp_source.html">MHP.cpp</a>.</p>
1698
+ <div class="fragment"><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="keyword">const</span> <a class="code" href="classSVF_1_1PTASCEV.html">PTASCEV</a>&amp; forkse = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a4207948054a0f98560922f3f07ada10f">fkjnToPTASCEVMap</a>[forkSite];</div><div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PTASCEV.html">PTASCEV</a>&amp; joinse = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a4207948054a0f98560922f3f07ada10f">fkjnToPTASCEVMap</a>[joinSite];</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(sameLoopTripCount(forkSite,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="keywordflow">if</span>(forkse.<a class="code" href="classSVF_1_1PTASCEV.html#ac6636f0c39ef55e2b5f126532bf2d411">inloop</a> &amp;&amp; joinse.<a class="code" href="classSVF_1_1PTASCEV.html#ac6636f0c39ef55e2b5f126532bf2d411">inloop</a>)</div><div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160; <span class="keywordflow">return</span> forkse.<a class="code" href="classSVF_1_1PTASCEV.html#a0de1531fc72f5aa0bafc59101faae68d">start</a>==joinse.<a class="code" href="classSVF_1_1PTASCEV.html#a0de1531fc72f5aa0bafc59101faae68d">start</a> &amp;&amp; forkse.<a class="code" href="classSVF_1_1PTASCEV.html#aead435732fbb492627f746b3d0654ce2">step</a> == joinse.<a class="code" href="classSVF_1_1PTASCEV.html#aead435732fbb492627f746b3d0654ce2">step</a> &amp;&amp; forkse.<a class="code" href="classSVF_1_1PTASCEV.html#aa92f2da24c8b6d3548f8b4920a8d157f">tripcount</a> &lt;= joinse.<a class="code" href="classSVF_1_1PTASCEV.html#aa92f2da24c8b6d3548f8b4920a8d157f">tripcount</a>;</div><div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;GetElementPtrInst&gt;(forkse.<a class="code" href="classSVF_1_1PTASCEV.html#aa6b49b5cbe5057d779685c9ebe763421">ptr</a>) &amp;&amp; SVFUtil::isa&lt;GetElementPtrInst&gt;(joinse.<a class="code" href="classSVF_1_1PTASCEV.html#aa6b49b5cbe5057d779685c9ebe763421">ptr</a>))</div><div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>&#160; <span class="keywordflow">return</span> <a class="code" href="MHP_8cpp.html#a1a6f1ed70075da459ab275eb5c099144">accessSameArrayIndex</a>(SVFUtil::cast&lt;GetElementPtrInst&gt;(forkse.<a class="code" href="classSVF_1_1PTASCEV.html#aa6b49b5cbe5057d779685c9ebe763421">ptr</a>),SVFUtil::cast&lt;GetElementPtrInst&gt;(joinse.<a class="code" href="classSVF_1_1PTASCEV.html#aa6b49b5cbe5057d779685c9ebe763421">ptr</a>));</div><div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;GetElementPtrInst&gt;(forkse.<a class="code" href="classSVF_1_1PTASCEV.html#aa6b49b5cbe5057d779685c9ebe763421">ptr</a>) || SVFUtil::isa&lt;GetElementPtrInst&gt;(joinse.<a class="code" href="classSVF_1_1PTASCEV.html#aa6b49b5cbe5057d779685c9ebe763421">ptr</a>))</div><div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>&#160;}</div><div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a4207948054a0f98560922f3f07ada10f"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a4207948054a0f98560922f3f07ada10f">SVF::ForkJoinAnalysis::fkjnToPTASCEVMap</a></div><div class="ttdeci">forkjoinToPTASCEVMap fkjnToPTASCEVMap</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00573">MHP.h:573</a></div></div>
1699
1699
  <div class="ttc" id="classSVF_1_1PTASCEV_html_aa6b49b5cbe5057d779685c9ebe763421"><div class="ttname"><a href="classSVF_1_1PTASCEV.html#aa6b49b5cbe5057d779685c9ebe763421">SVF::PTASCEV::ptr</a></div><div class="ttdeci">const Value * ptr</div><div class="ttdef"><b>Definition:</b> <a href="DataFlowUtil_8h_source.html#l00078">DataFlowUtil.h:78</a></div></div>
1700
1700
  <div class="ttc" id="classSVF_1_1PTASCEV_html_aead435732fbb492627f746b3d0654ce2"><div class="ttname"><a href="classSVF_1_1PTASCEV.html#aead435732fbb492627f746b3d0654ce2">SVF::PTASCEV::step</a></div><div class="ttdeci">const Value * step</div><div class="ttdef"><b>Definition:</b> <a href="DataFlowUtil_8h_source.html#l00077">DataFlowUtil.h:77</a></div></div>
1701
1701
  <div class="ttc" id="classSVF_1_1PTASCEV_html_ac6636f0c39ef55e2b5f126532bf2d411"><div class="ttname"><a href="classSVF_1_1PTASCEV.html#ac6636f0c39ef55e2b5f126532bf2d411">SVF::PTASCEV::inloop</a></div><div class="ttdeci">bool inloop</div><div class="ttdef"><b>Definition:</b> <a href="DataFlowUtil_8h_source.html#l00079">DataFlowUtil.h:79</a></div></div>
1702
- <div class="ttc" id="MHP_8cpp_html_a1a6f1ed70075da459ab275eb5c099144"><div class="ttname"><a href="MHP_8cpp.html#a1a6f1ed70075da459ab275eb5c099144">accessSameArrayIndex</a></div><div class="ttdeci">static bool accessSameArrayIndex(const GetElementPtrInst *ptr1, const GetElementPtrInst *ptr2)</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l01004">MHP.cpp:1004</a></div></div>
1702
+ <div class="ttc" id="MHP_8cpp_html_a1a6f1ed70075da459ab275eb5c099144"><div class="ttname"><a href="MHP_8cpp.html#a1a6f1ed70075da459ab275eb5c099144">accessSameArrayIndex</a></div><div class="ttdeci">static bool accessSameArrayIndex(const GetElementPtrInst *ptr1, const GetElementPtrInst *ptr2)</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l01026">MHP.cpp:1026</a></div></div>
1703
1703
  <div class="ttc" id="classSVF_1_1PTASCEV_html_a0de1531fc72f5aa0bafc59101faae68d"><div class="ttname"><a href="classSVF_1_1PTASCEV.html#a0de1531fc72f5aa0bafc59101faae68d">SVF::PTASCEV::start</a></div><div class="ttdeci">const Value * start</div><div class="ttdef"><b>Definition:</b> <a href="DataFlowUtil_8h_source.html#l00076">DataFlowUtil.h:76</a></div></div>
1704
1704
  <div class="ttc" id="classSVF_1_1PTASCEV_html_aa92f2da24c8b6d3548f8b4920a8d157f"><div class="ttname"><a href="classSVF_1_1PTASCEV.html#aa92f2da24c8b6d3548f8b4920a8d157f">SVF::PTASCEV::tripcount</a></div><div class="ttdeci">unsigned tripcount</div><div class="ttdef"><b>Definition:</b> <a href="DataFlowUtil_8h_source.html#l00080">DataFlowUtil.h:80</a></div></div>
1705
1705
  <div class="ttc" id="classSVF_1_1PTASCEV_html"><div class="ttname"><a href="classSVF_1_1PTASCEV.html">SVF::PTASCEV</a></div><div class="ttdef"><b>Definition:</b> <a href="DataFlowUtil_8h_source.html#l00044">DataFlowUtil.h:44</a></div></div>
@@ -1732,10 +1732,10 @@ Private Attributes</h2></td></tr>
1732
1732
 
1733
1733
  <p>Whether it is a fork site. </p>
1734
1734
 
1735
- <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00474">474</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
1736
- <div class="fragment"><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; {</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8ad9b8cb0e6300b2ffc55244e53cece6">getTCG</a>()-&gt;<a class="code" href="classSVF_1_1ThreadCallGraph.html#adcad8524a53baf256cd45503ec568c10">getThreadAPI</a>()-&gt;<a class="code" href="classSVF_1_1ThreadAPI.html#a9da276dca5092d18f4f22d32e5ab6cdf">isTDFork</a>(call);</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; }</div><div class="ttc" id="classSVF_1_1ThreadAPI_html_a9da276dca5092d18f4f22d32e5ab6cdf"><div class="ttname"><a href="classSVF_1_1ThreadAPI.html#a9da276dca5092d18f4f22d32e5ab6cdf">SVF::ThreadAPI::isTDFork</a></div><div class="ttdeci">bool isTDFork(const Instruction *inst) const</div><div class="ttdoc">Return true if this call create a new thread. </div><div class="ttdef"><b>Definition:</b> <a href="ThreadAPI_8h_source.html#l00129">ThreadAPI.h:129</a></div></div>
1735
+ <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00496">496</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
1736
+ <div class="fragment"><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; {</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8ad9b8cb0e6300b2ffc55244e53cece6">getTCG</a>()-&gt;<a class="code" href="classSVF_1_1ThreadCallGraph.html#adcad8524a53baf256cd45503ec568c10">getThreadAPI</a>()-&gt;<a class="code" href="classSVF_1_1ThreadAPI.html#a9da276dca5092d18f4f22d32e5ab6cdf">isTDFork</a>(call);</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; }</div><div class="ttc" id="classSVF_1_1ThreadAPI_html_a9da276dca5092d18f4f22d32e5ab6cdf"><div class="ttname"><a href="classSVF_1_1ThreadAPI.html#a9da276dca5092d18f4f22d32e5ab6cdf">SVF::ThreadAPI::isTDFork</a></div><div class="ttdeci">bool isTDFork(const Instruction *inst) const</div><div class="ttdoc">Return true if this call create a new thread. </div><div class="ttdef"><b>Definition:</b> <a href="ThreadAPI_8h_source.html#l00129">ThreadAPI.h:129</a></div></div>
1737
1737
  <div class="ttc" id="classSVF_1_1ThreadCallGraph_html_adcad8524a53baf256cd45503ec568c10"><div class="ttname"><a href="classSVF_1_1ThreadCallGraph.html#adcad8524a53baf256cd45503ec568c10">SVF::ThreadCallGraph::getThreadAPI</a></div><div class="ttdeci">ThreadAPI * getThreadAPI() const</div><div class="ttdoc">Thread API. </div><div class="ttdef"><b>Definition:</b> <a href="ThreadCallGraph_8h_source.html#l00324">ThreadCallGraph.h:324</a></div></div>
1738
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a8ad9b8cb0e6300b2ffc55244e53cece6"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a8ad9b8cb0e6300b2ffc55244e53cece6">SVF::ForkJoinAnalysis::getTCG</a></div><div class="ttdeci">ThreadCallGraph * getTCG() const</div><div class="ttdoc">ThreadCallGraph. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00499">MHP.h:499</a></div></div>
1738
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a8ad9b8cb0e6300b2ffc55244e53cece6"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a8ad9b8cb0e6300b2ffc55244e53cece6">SVF::ForkJoinAnalysis::getTCG</a></div><div class="ttdeci">ThreadCallGraph * getTCG() const</div><div class="ttdoc">ThreadCallGraph. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00521">MHP.h:521</a></div></div>
1739
1739
  </div><!-- fragment -->
1740
1740
  </div>
1741
1741
  </div>
@@ -1765,10 +1765,10 @@ Private Attributes</h2></td></tr>
1765
1765
 
1766
1766
  <p>Whether it is a join site. </p>
1767
1767
 
1768
- <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00479">479</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
1769
- <div class="fragment"><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; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8ad9b8cb0e6300b2ffc55244e53cece6">getTCG</a>()-&gt;<a class="code" href="classSVF_1_1ThreadCallGraph.html#adcad8524a53baf256cd45503ec568c10">getThreadAPI</a>()-&gt;<a class="code" href="classSVF_1_1ThreadAPI.html#a8cc5f9ff6039392ce1471cd830973c44">isTDJoin</a>(call);</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; }</div><div class="ttc" id="classSVF_1_1ThreadCallGraph_html_adcad8524a53baf256cd45503ec568c10"><div class="ttname"><a href="classSVF_1_1ThreadCallGraph.html#adcad8524a53baf256cd45503ec568c10">SVF::ThreadCallGraph::getThreadAPI</a></div><div class="ttdeci">ThreadAPI * getThreadAPI() const</div><div class="ttdoc">Thread API. </div><div class="ttdef"><b>Definition:</b> <a href="ThreadCallGraph_8h_source.html#l00324">ThreadCallGraph.h:324</a></div></div>
1768
+ <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00501">501</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
1769
+ <div class="fragment"><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; {</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8ad9b8cb0e6300b2ffc55244e53cece6">getTCG</a>()-&gt;<a class="code" href="classSVF_1_1ThreadCallGraph.html#adcad8524a53baf256cd45503ec568c10">getThreadAPI</a>()-&gt;<a class="code" href="classSVF_1_1ThreadAPI.html#a8cc5f9ff6039392ce1471cd830973c44">isTDJoin</a>(call);</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; }</div><div class="ttc" id="classSVF_1_1ThreadCallGraph_html_adcad8524a53baf256cd45503ec568c10"><div class="ttname"><a href="classSVF_1_1ThreadCallGraph.html#adcad8524a53baf256cd45503ec568c10">SVF::ThreadCallGraph::getThreadAPI</a></div><div class="ttdeci">ThreadAPI * getThreadAPI() const</div><div class="ttdoc">Thread API. </div><div class="ttdef"><b>Definition:</b> <a href="ThreadCallGraph_8h_source.html#l00324">ThreadCallGraph.h:324</a></div></div>
1770
1770
  <div class="ttc" id="classSVF_1_1ThreadAPI_html_a8cc5f9ff6039392ce1471cd830973c44"><div class="ttname"><a href="classSVF_1_1ThreadAPI.html#a8cc5f9ff6039392ce1471cd830973c44">SVF::ThreadAPI::isTDJoin</a></div><div class="ttdeci">bool isTDJoin(const Instruction *inst) const</div><div class="ttdoc">Return true if this call wait for a worker thread. </div><div class="ttdef"><b>Definition:</b> <a href="ThreadAPI_8h_source.html#l00223">ThreadAPI.h:223</a></div></div>
1771
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a8ad9b8cb0e6300b2ffc55244e53cece6"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a8ad9b8cb0e6300b2ffc55244e53cece6">SVF::ForkJoinAnalysis::getTCG</a></div><div class="ttdeci">ThreadCallGraph * getTCG() const</div><div class="ttdoc">ThreadCallGraph. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00499">MHP.h:499</a></div></div>
1771
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a8ad9b8cb0e6300b2ffc55244e53cece6"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a8ad9b8cb0e6300b2ffc55244e53cece6">SVF::ForkJoinAnalysis::getTCG</a></div><div class="ttdeci">ThreadCallGraph * getTCG() const</div><div class="ttdoc">ThreadCallGraph. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00521">MHP.h:521</a></div></div>
1772
1772
  </div><!-- fragment -->
1773
1773
  </div>
1774
1774
  </div>
@@ -1808,11 +1808,11 @@ Private Attributes</h2></td></tr>
1808
1808
 
1809
1809
  <p>Initialize TDAlive and TDDead flags. </p>
1810
1810
 
1811
- <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00406">406</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
1812
- <div class="fragment"><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; {</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631">ValDomain</a> flag_tgr = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a149114898b13e1430c8fbb60978ca4f5">getMarkedFlag</a>(tgr);</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#aa31b3f3d51b963ccd475e66b77143dba">cxtStmtToAliveFlagMap</a>[tgr] = flag;</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <span class="keywordflow">if</span>(flag_tgr!=<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a149114898b13e1430c8fbb60978ca4f5">getMarkedFlag</a>(tgr))</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a7ac37e3399aa6e303a6babe8f455aa87">pushToCTSWorkList</a>(tgr);</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; }</div><div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_aa31b3f3d51b963ccd475e66b77143dba"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#aa31b3f3d51b963ccd475e66b77143dba">SVF::ForkJoinAnalysis::cxtStmtToAliveFlagMap</a></div><div class="ttdeci">CxtStmtToAliveFlagMap cxtStmtToAliveFlagMap</div><div class="ttdoc">flags for context-sensitive statements </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00541">MHP.h:541</a></div></div>
1813
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a149114898b13e1430c8fbb60978ca4f5"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a149114898b13e1430c8fbb60978ca4f5">SVF::ForkJoinAnalysis::getMarkedFlag</a></div><div class="ttdeci">ValDomain getMarkedFlag(const CxtStmt &amp;cs)</div><div class="ttdoc">Mark thread flags for cxtStmt. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00394">MHP.h:394</a></div></div>
1814
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a7ac37e3399aa6e303a6babe8f455aa87"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a7ac37e3399aa6e303a6babe8f455aa87">SVF::ForkJoinAnalysis::pushToCTSWorkList</a></div><div class="ttdeci">bool pushToCTSWorkList(const CxtStmt &amp;cs)</div><div class="ttdoc">Worklist operations. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00446">MHP.h:446</a></div></div>
1815
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a8d40e687caf8999369621ed385dfc631"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631">SVF::ForkJoinAnalysis::ValDomain</a></div><div class="ttdeci">ValDomain</div><div class="ttdoc">semilattice Empty==&gt;TDDead==&gt;TDAlive </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00277">MHP.h:277</a></div></div>
1811
+ <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00428">428</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
1812
+ <div class="fragment"><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; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631">ValDomain</a> flag_tgr = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a149114898b13e1430c8fbb60978ca4f5">getMarkedFlag</a>(tgr);</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#aa31b3f3d51b963ccd475e66b77143dba">cxtStmtToAliveFlagMap</a>[tgr] = flag;</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; <span class="keywordflow">if</span>(flag_tgr!=<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a149114898b13e1430c8fbb60978ca4f5">getMarkedFlag</a>(tgr))</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a7ac37e3399aa6e303a6babe8f455aa87">pushToCTSWorkList</a>(tgr);</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; }</div><div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_aa31b3f3d51b963ccd475e66b77143dba"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#aa31b3f3d51b963ccd475e66b77143dba">SVF::ForkJoinAnalysis::cxtStmtToAliveFlagMap</a></div><div class="ttdeci">CxtStmtToAliveFlagMap cxtStmtToAliveFlagMap</div><div class="ttdoc">flags for context-sensitive statements </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00563">MHP.h:563</a></div></div>
1813
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a149114898b13e1430c8fbb60978ca4f5"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a149114898b13e1430c8fbb60978ca4f5">SVF::ForkJoinAnalysis::getMarkedFlag</a></div><div class="ttdeci">ValDomain getMarkedFlag(const CxtStmt &amp;cs)</div><div class="ttdoc">Mark thread flags for cxtStmt. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00416">MHP.h:416</a></div></div>
1814
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a7ac37e3399aa6e303a6babe8f455aa87"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a7ac37e3399aa6e303a6babe8f455aa87">SVF::ForkJoinAnalysis::pushToCTSWorkList</a></div><div class="ttdeci">bool pushToCTSWorkList(const CxtStmt &amp;cs)</div><div class="ttdoc">Worklist operations. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00468">MHP.h:468</a></div></div>
1815
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a8d40e687caf8999369621ed385dfc631"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631">SVF::ForkJoinAnalysis::ValDomain</a></div><div class="ttdeci">ValDomain</div><div class="ttdoc">semilattice Empty==&gt;TDDead==&gt;TDAlive </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00299">MHP.h:299</a></div></div>
1816
1816
  </div><!-- fragment -->
1817
1817
  </div>
1818
1818
  </div>
@@ -1853,14 +1853,14 @@ Private Attributes</h2></td></tr>
1853
1853
  <p>Transfer function for marking context-sensitive statement. </p>
1854
1854
  <p>alive is at the bottom of the semilattice, nothing needs to be done here </p>
1855
1855
 
1856
- <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00414">414</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
1857
- <div class="fragment"><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; {</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631">ValDomain</a> flag_tgr = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a149114898b13e1430c8fbb60978ca4f5">getMarkedFlag</a>(tgr);</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631">ValDomain</a> flag_src = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a149114898b13e1430c8fbb60978ca4f5">getMarkedFlag</a>(src);</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; <span class="keywordflow">if</span>(flag_tgr == <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631a9d940442c782d5a1297102209540182f">Empty</a>)</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; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#aa31b3f3d51b963ccd475e66b77143dba">cxtStmtToAliveFlagMap</a>[tgr] = flag_src;</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; }</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(flag_tgr == <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631ad5af2a561c196e33d88fc63363d0d8f4">TDDead</a>)</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="keywordflow">if</span>(flag_src==<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631a2abecc56b7d5c644f7e14c98d33d0a0a">TDAlive</a>)</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#aa31b3f3d51b963ccd475e66b77143dba">cxtStmtToAliveFlagMap</a>[tgr] = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631a2abecc56b7d5c644f7e14c98d33d0a0a">TDAlive</a>;</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; }</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00428"></a><span class="lineno"> 428</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; <span class="keywordflow">if</span>(flag_tgr!=<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a149114898b13e1430c8fbb60978ca4f5">getMarkedFlag</a>(tgr))</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; {</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a7ac37e3399aa6e303a6babe8f455aa87">pushToCTSWorkList</a>(tgr);</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="ttc" id="classSVF_1_1ForkJoinAnalysis_html_aa31b3f3d51b963ccd475e66b77143dba"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#aa31b3f3d51b963ccd475e66b77143dba">SVF::ForkJoinAnalysis::cxtStmtToAliveFlagMap</a></div><div class="ttdeci">CxtStmtToAliveFlagMap cxtStmtToAliveFlagMap</div><div class="ttdoc">flags for context-sensitive statements </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00541">MHP.h:541</a></div></div>
1858
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a149114898b13e1430c8fbb60978ca4f5"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a149114898b13e1430c8fbb60978ca4f5">SVF::ForkJoinAnalysis::getMarkedFlag</a></div><div class="ttdeci">ValDomain getMarkedFlag(const CxtStmt &amp;cs)</div><div class="ttdoc">Mark thread flags for cxtStmt. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00394">MHP.h:394</a></div></div>
1859
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a7ac37e3399aa6e303a6babe8f455aa87"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a7ac37e3399aa6e303a6babe8f455aa87">SVF::ForkJoinAnalysis::pushToCTSWorkList</a></div><div class="ttdeci">bool pushToCTSWorkList(const CxtStmt &amp;cs)</div><div class="ttdoc">Worklist operations. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00446">MHP.h:446</a></div></div>
1860
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a8d40e687caf8999369621ed385dfc631a9d940442c782d5a1297102209540182f"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631a9d940442c782d5a1297102209540182f">SVF::ForkJoinAnalysis::Empty</a></div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00279">MHP.h:279</a></div></div>
1861
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a8d40e687caf8999369621ed385dfc631"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631">SVF::ForkJoinAnalysis::ValDomain</a></div><div class="ttdeci">ValDomain</div><div class="ttdoc">semilattice Empty==&gt;TDDead==&gt;TDAlive </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00277">MHP.h:277</a></div></div>
1862
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a8d40e687caf8999369621ed385dfc631ad5af2a561c196e33d88fc63363d0d8f4"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631ad5af2a561c196e33d88fc63363d0d8f4">SVF::ForkJoinAnalysis::TDDead</a></div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00281">MHP.h:281</a></div></div>
1863
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a8d40e687caf8999369621ed385dfc631a2abecc56b7d5c644f7e14c98d33d0a0a"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631a2abecc56b7d5c644f7e14c98d33d0a0a">SVF::ForkJoinAnalysis::TDAlive</a></div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00280">MHP.h:280</a></div></div>
1856
+ <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00436">436</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
1857
+ <div class="fragment"><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; {</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631">ValDomain</a> flag_tgr = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a149114898b13e1430c8fbb60978ca4f5">getMarkedFlag</a>(tgr);</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631">ValDomain</a> flag_src = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a149114898b13e1430c8fbb60978ca4f5">getMarkedFlag</a>(src);</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; <span class="keywordflow">if</span>(flag_tgr == <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631a9d940442c782d5a1297102209540182f">Empty</a>)</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; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#aa31b3f3d51b963ccd475e66b77143dba">cxtStmtToAliveFlagMap</a>[tgr] = flag_src;</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; }</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(flag_tgr == <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631ad5af2a561c196e33d88fc63363d0d8f4">TDDead</a>)</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; {</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; <span class="keywordflow">if</span>(flag_src==<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631a2abecc56b7d5c644f7e14c98d33d0a0a">TDAlive</a>)</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#aa31b3f3d51b963ccd475e66b77143dba">cxtStmtToAliveFlagMap</a>[tgr] = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631a2abecc56b7d5c644f7e14c98d33d0a0a">TDAlive</a>;</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; }</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; {</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; <span class="keywordflow">if</span>(flag_tgr!=<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a149114898b13e1430c8fbb60978ca4f5">getMarkedFlag</a>(tgr))</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; {</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a7ac37e3399aa6e303a6babe8f455aa87">pushToCTSWorkList</a>(tgr);</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; }</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; }</div><div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_aa31b3f3d51b963ccd475e66b77143dba"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#aa31b3f3d51b963ccd475e66b77143dba">SVF::ForkJoinAnalysis::cxtStmtToAliveFlagMap</a></div><div class="ttdeci">CxtStmtToAliveFlagMap cxtStmtToAliveFlagMap</div><div class="ttdoc">flags for context-sensitive statements </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00563">MHP.h:563</a></div></div>
1858
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a149114898b13e1430c8fbb60978ca4f5"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a149114898b13e1430c8fbb60978ca4f5">SVF::ForkJoinAnalysis::getMarkedFlag</a></div><div class="ttdeci">ValDomain getMarkedFlag(const CxtStmt &amp;cs)</div><div class="ttdoc">Mark thread flags for cxtStmt. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00416">MHP.h:416</a></div></div>
1859
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a7ac37e3399aa6e303a6babe8f455aa87"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a7ac37e3399aa6e303a6babe8f455aa87">SVF::ForkJoinAnalysis::pushToCTSWorkList</a></div><div class="ttdeci">bool pushToCTSWorkList(const CxtStmt &amp;cs)</div><div class="ttdoc">Worklist operations. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00468">MHP.h:468</a></div></div>
1860
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a8d40e687caf8999369621ed385dfc631a9d940442c782d5a1297102209540182f"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631a9d940442c782d5a1297102209540182f">SVF::ForkJoinAnalysis::Empty</a></div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00301">MHP.h:301</a></div></div>
1861
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a8d40e687caf8999369621ed385dfc631"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631">SVF::ForkJoinAnalysis::ValDomain</a></div><div class="ttdeci">ValDomain</div><div class="ttdoc">semilattice Empty==&gt;TDDead==&gt;TDAlive </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00299">MHP.h:299</a></div></div>
1862
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a8d40e687caf8999369621ed385dfc631ad5af2a561c196e33d88fc63363d0d8f4"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631ad5af2a561c196e33d88fc63363d0d8f4">SVF::ForkJoinAnalysis::TDDead</a></div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00303">MHP.h:303</a></div></div>
1863
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a8d40e687caf8999369621ed385dfc631a2abecc56b7d5c644f7e14c98d33d0a0a"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631a2abecc56b7d5c644f7e14c98d33d0a0a">SVF::ForkJoinAnalysis::TDAlive</a></div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00302">MHP.h:302</a></div></div>
1864
1864
  </div><!-- fragment -->
1865
1865
  </div>
1866
1866
  </div>
@@ -1906,9 +1906,9 @@ Private Attributes</h2></td></tr>
1906
1906
 
1907
1907
  <p>Match context. </p>
1908
1908
 
1909
- <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00468">468</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
1910
- <div class="fragment"><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; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#a9b6dda84d37afadaf80bc2e26986a52e">matchCxt</a>(cxt,call,callee);</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; }</div><div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a2c6ce7aa04c399746d89230be0e0f1ce"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">SVF::ForkJoinAnalysis::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00540">MHP.h:540</a></div></div>
1911
- <div class="ttc" id="classSVF_1_1TCT_html_a9b6dda84d37afadaf80bc2e26986a52e"><div class="ttname"><a href="classSVF_1_1TCT.html#a9b6dda84d37afadaf80bc2e26986a52e">SVF::TCT::matchCxt</a></div><div class="ttdeci">bool matchCxt(CallStrCxt &amp;cxt, const Instruction *call, const Function *callee)</div><div class="ttdoc">Match context. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#l00497">TCT.cpp:497</a></div></div>
1909
+ <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00490">490</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
1910
+ <div class="fragment"><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; {</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#a9b6dda84d37afadaf80bc2e26986a52e">matchCxt</a>(cxt,call,callee);</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; }</div><div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a2c6ce7aa04c399746d89230be0e0f1ce"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">SVF::ForkJoinAnalysis::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00562">MHP.h:562</a></div></div>
1911
+ <div class="ttc" id="classSVF_1_1TCT_html_a9b6dda84d37afadaf80bc2e26986a52e"><div class="ttname"><a href="classSVF_1_1TCT.html#a9b6dda84d37afadaf80bc2e26986a52e">SVF::TCT::matchCxt</a></div><div class="ttdeci">bool matchCxt(CallStrCxt &amp;cxt, const Instruction *call, const Function *callee)</div><div class="ttdoc">Match context. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#l00520">TCT.cpp:520</a></div></div>
1912
1912
  </div><!-- fragment -->
1913
1913
  </div>
1914
1914
  </div>
@@ -1935,8 +1935,8 @@ Private Attributes</h2></td></tr>
1935
1935
  </table>
1936
1936
  </div><div class="memdoc">
1937
1937
 
1938
- <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00450">450</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
1939
- <div class="fragment"><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; {</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; CxtStmt ctp = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#acccf53d174cac3275da0d79c89a73916">cxtStmtList</a>.<a class="code" href="classSVF_1_1FIFOWorkList.html#a8fa72918fce7e9c0b2dc34b683a797c6">pop</a>();</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; <span class="keywordflow">return</span> ctp;</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; }</div><div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_acccf53d174cac3275da0d79c89a73916"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#acccf53d174cac3275da0d79c89a73916">SVF::ForkJoinAnalysis::cxtStmtList</a></div><div class="ttdeci">CxtStmtWorkList cxtStmtList</div><div class="ttdoc">context-sensitive statement worklist </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00542">MHP.h:542</a></div></div>
1938
+ <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00472">472</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
1939
+ <div class="fragment"><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; {</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; CxtStmt ctp = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#acccf53d174cac3275da0d79c89a73916">cxtStmtList</a>.<a class="code" href="classSVF_1_1FIFOWorkList.html#a8fa72918fce7e9c0b2dc34b683a797c6">pop</a>();</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; <span class="keywordflow">return</span> ctp;</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; }</div><div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_acccf53d174cac3275da0d79c89a73916"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#acccf53d174cac3275da0d79c89a73916">SVF::ForkJoinAnalysis::cxtStmtList</a></div><div class="ttdeci">CxtStmtWorkList cxtStmtList</div><div class="ttdoc">context-sensitive statement worklist </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00564">MHP.h:564</a></div></div>
1940
1940
  <div class="ttc" id="classSVF_1_1FIFOWorkList_html_a8fa72918fce7e9c0b2dc34b683a797c6"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html#a8fa72918fce7e9c0b2dc34b683a797c6">SVF::FIFOWorkList::pop</a></div><div class="ttdeci">Data pop()</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00174">WorkList.h:174</a></div></div>
1941
1941
  </div><!-- fragment -->
1942
1942
  </div>
@@ -1983,9 +1983,9 @@ Private Attributes</h2></td></tr>
1983
1983
 
1984
1984
  <p>Push calling context. </p>
1985
1985
 
1986
- <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00463">463</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
1987
- <div class="fragment"><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; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#afc6d7a91cfc98561bcce13425964a39e">pushCxt</a>(cxt,call,callee);</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; }</div><div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a2c6ce7aa04c399746d89230be0e0f1ce"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">SVF::ForkJoinAnalysis::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00540">MHP.h:540</a></div></div>
1988
- <div class="ttc" id="classSVF_1_1TCT_html_afc6d7a91cfc98561bcce13425964a39e"><div class="ttname"><a href="classSVF_1_1TCT.html#afc6d7a91cfc98561bcce13425964a39e">SVF::TCT::pushCxt</a></div><div class="ttdeci">void pushCxt(CallStrCxt &amp;cxt, const Instruction *call, const Function *callee)</div><div class="ttdoc">Push calling context. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#l00475">TCT.cpp:475</a></div></div>
1986
+ <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00485">485</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
1987
+ <div class="fragment"><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_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#afc6d7a91cfc98561bcce13425964a39e">pushCxt</a>(cxt,call,callee);</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; }</div><div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a2c6ce7aa04c399746d89230be0e0f1ce"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">SVF::ForkJoinAnalysis::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00562">MHP.h:562</a></div></div>
1988
+ <div class="ttc" id="classSVF_1_1TCT_html_afc6d7a91cfc98561bcce13425964a39e"><div class="ttname"><a href="classSVF_1_1TCT.html#afc6d7a91cfc98561bcce13425964a39e">SVF::TCT::pushCxt</a></div><div class="ttdeci">void pushCxt(CallStrCxt &amp;cxt, const Instruction *call, const Function *callee)</div><div class="ttdoc">Push calling context. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#l00498">TCT.cpp:498</a></div></div>
1989
1989
  </div><!-- fragment -->
1990
1990
  </div>
1991
1991
  </div>
@@ -2015,9 +2015,9 @@ Private Attributes</h2></td></tr>
2015
2015
 
2016
2016
  <p>Worklist operations. </p>
2017
2017
 
2018
- <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00446">446</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
2019
- <div class="fragment"><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; {</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#acccf53d174cac3275da0d79c89a73916">cxtStmtList</a>.<a class="code" href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">push</a>(cs);</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; }</div><div class="ttc" id="classSVF_1_1FIFOWorkList_html_ad4c6a48b60c870d63049fe7272cc7eb8"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">SVF::FIFOWorkList::push</a></div><div class="ttdeci">bool push(Data data)</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00159">WorkList.h:159</a></div></div>
2020
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_acccf53d174cac3275da0d79c89a73916"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#acccf53d174cac3275da0d79c89a73916">SVF::ForkJoinAnalysis::cxtStmtList</a></div><div class="ttdeci">CxtStmtWorkList cxtStmtList</div><div class="ttdoc">context-sensitive statement worklist </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00542">MHP.h:542</a></div></div>
2018
+ <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00468">468</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
2019
+ <div class="fragment"><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; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#acccf53d174cac3275da0d79c89a73916">cxtStmtList</a>.<a class="code" href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">push</a>(cs);</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; }</div><div class="ttc" id="classSVF_1_1FIFOWorkList_html_ad4c6a48b60c870d63049fe7272cc7eb8"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">SVF::FIFOWorkList::push</a></div><div class="ttdeci">bool push(Data data)</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00159">WorkList.h:159</a></div></div>
2020
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_acccf53d174cac3275da0d79c89a73916"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#acccf53d174cac3275da0d79c89a73916">SVF::ForkJoinAnalysis::cxtStmtList</a></div><div class="ttdeci">CxtStmtWorkList cxtStmtList</div><div class="ttdoc">context-sensitive statement worklist </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00564">MHP.h:564</a></div></div>
2021
2021
  </div><!-- fragment -->
2022
2022
  </div>
2023
2023
  </div>
@@ -2058,13 +2058,13 @@ Private Attributes</h2></td></tr>
2058
2058
  <p>Same loop trip count. </p>
2059
2059
  <p>The fork and join have same loop trip count </p>
2060
2060
 
2061
- <p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#l01065">1065</a> of file <a class="el" href="MHP_8cpp_source.html">MHP.cpp</a>.</p>
2062
- <div class="fragment"><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; <a class="code" href="namespaceSVF.html#ad8794eb3c00de3d3b5c5e43dded3fb42">ScalarEvolution</a>* forkSE = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ad3db3e7a2ebe7646675aab16103691e7">getSE</a>(forkSite);</div><div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>&#160; <a class="code" href="namespaceSVF.html#ad8794eb3c00de3d3b5c5e43dded3fb42">ScalarEvolution</a>* joinSE = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ad3db3e7a2ebe7646675aab16103691e7">getSE</a>(joinSite);</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">// Get loops</span></div><div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#abf85e29310b2e4df8925d00a5c081314">Loop</a> *forkSiteLoop = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#add9104a3d7a821e9c2f266ae1810d2e3">getLoop</a>(forkSite);</div><div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#abf85e29310b2e4df8925d00a5c081314">Loop</a> *joinSiteLoop = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#add9104a3d7a821e9c2f266ae1810d2e3">getLoop</a>(joinSite);</div><div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>&#160;</div><div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160; <span class="keywordflow">if</span>(forkSiteLoop == <span class="keyword">nullptr</span> || joinSiteLoop == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</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="keyword">const</span> <a class="code" href="namespaceSVF.html#aac5262378e41a3414a20cc9a41d4adc6">SCEV</a>* forkLoopCountScev = forkSE-&gt;getBackedgeTakenCount(forkSiteLoop);</div><div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aac5262378e41a3414a20cc9a41d4adc6">SCEV</a>* joinLoopCountScev = joinSE-&gt;getBackedgeTakenCount(joinSiteLoop);</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="keywordflow">if</span>(forkLoopCountScev!=forkSE-&gt;getCouldNotCompute())</div><div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>&#160; {</div><div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160; <span class="keywordflow">if</span>(forkLoopCountScev==joinLoopCountScev)</div><div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>&#160; {</div><div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160; }</div><div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>&#160; }</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="namespaceSVF_html_ad8794eb3c00de3d3b5c5e43dded3fb42"><div class="ttname"><a href="namespaceSVF.html#ad8794eb3c00de3d3b5c5e43dded3fb42">SVF::ScalarEvolution</a></div><div class="ttdeci">llvm::ScalarEvolution ScalarEvolution</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00168">BasicTypes.h:168</a></div></div>
2063
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a2c6ce7aa04c399746d89230be0e0f1ce"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">SVF::ForkJoinAnalysis::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00540">MHP.h:540</a></div></div>
2064
- <div class="ttc" id="classSVF_1_1TCT_html_add9104a3d7a821e9c2f266ae1810d2e3"><div class="ttname"><a href="classSVF_1_1TCT.html#add9104a3d7a821e9c2f266ae1810d2e3">SVF::TCT::getLoop</a></div><div class="ttdeci">const Loop * getLoop(const Instruction *inst)</div><div class="ttdoc">Get loop for an instruction. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#l00349">TCT.cpp:349</a></div></div>
2061
+ <p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#l01087">1087</a> of file <a class="el" href="MHP_8cpp_source.html">MHP.cpp</a>.</p>
2062
+ <div class="fragment"><div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>&#160;{</div><div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160;</div><div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160; <a class="code" href="namespaceSVF.html#ad8794eb3c00de3d3b5c5e43dded3fb42">ScalarEvolution</a>* forkSE = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ad3db3e7a2ebe7646675aab16103691e7">getSE</a>(forkSite);</div><div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>&#160; <a class="code" href="namespaceSVF.html#ad8794eb3c00de3d3b5c5e43dded3fb42">ScalarEvolution</a>* joinSE = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ad3db3e7a2ebe7646675aab16103691e7">getSE</a>(joinSite);</div><div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>&#160;</div><div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>&#160; <span class="comment">// Get loops</span></div><div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#abf85e29310b2e4df8925d00a5c081314">Loop</a> *forkSiteLoop = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#add9104a3d7a821e9c2f266ae1810d2e3">getLoop</a>(forkSite);</div><div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#abf85e29310b2e4df8925d00a5c081314">Loop</a> *joinSiteLoop = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#add9104a3d7a821e9c2f266ae1810d2e3">getLoop</a>(joinSite);</div><div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>&#160;</div><div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>&#160; <span class="keywordflow">if</span>(forkSiteLoop == <span class="keyword">nullptr</span> || joinSiteLoop == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>&#160;</div><div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aac5262378e41a3414a20cc9a41d4adc6">SCEV</a>* forkLoopCountScev = forkSE-&gt;getBackedgeTakenCount(forkSiteLoop);</div><div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aac5262378e41a3414a20cc9a41d4adc6">SCEV</a>* joinLoopCountScev = joinSE-&gt;getBackedgeTakenCount(joinSiteLoop);</div><div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>&#160;</div><div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>&#160; <span class="keywordflow">if</span>(forkLoopCountScev!=forkSE-&gt;getCouldNotCompute())</div><div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>&#160; {</div><div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>&#160; <span class="keywordflow">if</span>(forkLoopCountScev==joinLoopCountScev)</div><div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>&#160; {</div><div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160; }</div><div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>&#160; }</div><div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_ad8794eb3c00de3d3b5c5e43dded3fb42"><div class="ttname"><a href="namespaceSVF.html#ad8794eb3c00de3d3b5c5e43dded3fb42">SVF::ScalarEvolution</a></div><div class="ttdeci">llvm::ScalarEvolution ScalarEvolution</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00168">BasicTypes.h:168</a></div></div>
2063
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a2c6ce7aa04c399746d89230be0e0f1ce"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">SVF::ForkJoinAnalysis::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00562">MHP.h:562</a></div></div>
2064
+ <div class="ttc" id="classSVF_1_1TCT_html_add9104a3d7a821e9c2f266ae1810d2e3"><div class="ttname"><a href="classSVF_1_1TCT.html#add9104a3d7a821e9c2f266ae1810d2e3">SVF::TCT::getLoop</a></div><div class="ttdeci">const Loop * getLoop(const Instruction *inst)</div><div class="ttdoc">Get loop for an instruction. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#l00372">TCT.cpp:372</a></div></div>
2065
2065
  <div class="ttc" id="namespaceSVF_html_abf85e29310b2e4df8925d00a5c081314"><div class="ttname"><a href="namespaceSVF.html#abf85e29310b2e4df8925d00a5c081314">SVF::Loop</a></div><div class="ttdeci">llvm::Loop Loop</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00078">BasicTypes.h:78</a></div></div>
2066
2066
  <div class="ttc" id="namespaceSVF_html_aac5262378e41a3414a20cc9a41d4adc6"><div class="ttname"><a href="namespaceSVF.html#aac5262378e41a3414a20cc9a41d4adc6">SVF::SCEV</a></div><div class="ttdeci">llvm::SCEV SCEV</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00169">BasicTypes.h:169</a></div></div>
2067
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_ad3db3e7a2ebe7646675aab16103691e7"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#ad3db3e7a2ebe7646675aab16103691e7">SVF::ForkJoinAnalysis::getSE</a></div><div class="ttdeci">ScalarEvolution * getSE(const Instruction *inst)</div><div class="ttdoc">Get SE for function. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00354">MHP.h:354</a></div></div>
2067
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_ad3db3e7a2ebe7646675aab16103691e7"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#ad3db3e7a2ebe7646675aab16103691e7">SVF::ForkJoinAnalysis::getSE</a></div><div class="ttdeci">ScalarEvolution * getSE(const Instruction *inst)</div><div class="ttdoc">Get SE for function. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00376">MHP.h:376</a></div></div>
2068
2068
  </div><!-- fragment -->
2069
2069
  </div>
2070
2070
  </div>
@@ -2091,7 +2091,7 @@ Private Attributes</h2></td></tr>
2091
2091
 
2092
2092
  <p>a set of context-sensitive join inside loop </p>
2093
2093
 
2094
- <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00545">545</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
2094
+ <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00567">567</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
2095
2095
 
2096
2096
  </div>
2097
2097
  </div>
@@ -2117,7 +2117,7 @@ Private Attributes</h2></td></tr>
2117
2117
 
2118
2118
  <p>context-sensitive statement worklist </p>
2119
2119
 
2120
- <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00542">542</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
2120
+ <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00564">564</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
2121
2121
 
2122
2122
  </div>
2123
2123
  </div>
@@ -2143,7 +2143,7 @@ Private Attributes</h2></td></tr>
2143
2143
 
2144
2144
  <p>flags for context-sensitive statements </p>
2145
2145
 
2146
- <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00541">541</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
2146
+ <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00563">563</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
2147
2147
 
2148
2148
  </div>
2149
2149
  </div>
@@ -2169,7 +2169,7 @@ Private Attributes</h2></td></tr>
2169
2169
 
2170
2170
  <p>maps a context-sensitive join site to directly and indirectly joined thread ids </p>
2171
2171
 
2172
- <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00544">544</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
2172
+ <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00566">566</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
2173
2173
 
2174
2174
  </div>
2175
2175
  </div>
@@ -2195,7 +2195,7 @@ Private Attributes</h2></td></tr>
2195
2195
 
2196
2196
  <p>maps a context-sensitive join site to directly joined thread ids </p>
2197
2197
 
2198
- <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00543">543</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
2198
+ <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00565">565</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
2199
2199
 
2200
2200
  </div>
2201
2201
  </div>
@@ -2219,7 +2219,7 @@ Private Attributes</h2></td></tr>
2219
2219
  </table>
2220
2220
  </div><div class="memdoc">
2221
2221
 
2222
- <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00551">551</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
2222
+ <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00573">573</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
2223
2223
 
2224
2224
  </div>
2225
2225
  </div>
@@ -2245,7 +2245,7 @@ Private Attributes</h2></td></tr>
2245
2245
 
2246
2246
  <p>t1 fully joins t2 along all program path </p>
2247
2247
 
2248
- <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00548">548</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
2248
+ <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00570">570</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
2249
2249
 
2250
2250
  </div>
2251
2251
  </div>
@@ -2271,7 +2271,7 @@ Private Attributes</h2></td></tr>
2271
2271
 
2272
2272
  <p>thread happens-before pair </p>
2273
2273
 
2274
- <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00546">546</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
2274
+ <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00568">568</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
2275
2275
 
2276
2276
  </div>
2277
2277
  </div>
@@ -2297,7 +2297,7 @@ Private Attributes</h2></td></tr>
2297
2297
 
2298
2298
  <p>threads happen-in-parallel </p>
2299
2299
 
2300
- <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00547">547</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
2300
+ <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00569">569</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
2301
2301
 
2302
2302
  </div>
2303
2303
  </div>
@@ -2323,7 +2323,7 @@ Private Attributes</h2></td></tr>
2323
2323
 
2324
2324
  <p>t1 partially joins t2 along some program path(s) </p>
2325
2325
 
2326
- <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00549">549</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
2326
+ <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00571">571</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
2327
2327
 
2328
2328
  </div>
2329
2329
  </div>
@@ -2349,7 +2349,7 @@ Private Attributes</h2></td></tr>
2349
2349
 
2350
2350
  <p>PTA control flow info. </p>
2351
2351
 
2352
- <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00550">550</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
2352
+ <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00572">572</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
2353
2353
 
2354
2354
  </div>
2355
2355
  </div>
@@ -2373,7 +2373,7 @@ Private Attributes</h2></td></tr>
2373
2373
  </table>
2374
2374
  </div><div class="memdoc">
2375
2375
 
2376
- <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00540">540</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
2376
+ <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00562">562</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
2377
2377
 
2378
2378
  </div>
2379
2379
  </div>