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
@@ -431,7 +431,7 @@ Additional Inherited Members</h2></td></tr>
431
431
  </table>
432
432
  <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
433
433
  <div class="textblock">
434
- <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00115">115</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
434
+ <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00137">137</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
435
435
  </div><h2 class="groupheader">Member Typedef Documentation</h2>
436
436
  <a id="a09493a428c0ebe7f67847b48f0481f40"></a>
437
437
  <h2 class="memtitle"><span class="permalink"><a href="#a09493a428c0ebe7f67847b48f0481f40">&#9670;&nbsp;</a></span>CxtThreadProcSet</h2>
@@ -445,7 +445,7 @@ Additional Inherited Members</h2></td></tr>
445
445
  </table>
446
446
  </div><div class="memdoc">
447
447
 
448
- <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00130">130</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
448
+ <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00152">152</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
449
449
 
450
450
  </div>
451
451
  </div>
@@ -461,7 +461,7 @@ Additional Inherited Members</h2></td></tr>
461
461
  </table>
462
462
  </div><div class="memdoc">
463
463
 
464
- <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00129">129</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
464
+ <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00151">151</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
465
465
 
466
466
  </div>
467
467
  </div>
@@ -477,7 +477,7 @@ Additional Inherited Members</h2></td></tr>
477
477
  </table>
478
478
  </div><div class="memdoc">
479
479
 
480
- <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00126">126</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
480
+ <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00148">148</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
481
481
 
482
482
  </div>
483
483
  </div>
@@ -493,7 +493,7 @@ Additional Inherited Members</h2></td></tr>
493
493
  </table>
494
494
  </div><div class="memdoc">
495
495
 
496
- <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00127">127</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
496
+ <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00149">149</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
497
497
 
498
498
  </div>
499
499
  </div>
@@ -509,7 +509,7 @@ Additional Inherited Members</h2></td></tr>
509
509
  </table>
510
510
  </div><div class="memdoc">
511
511
 
512
- <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00125">125</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
512
+ <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00147">147</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
513
513
 
514
514
  </div>
515
515
  </div>
@@ -525,7 +525,7 @@ Additional Inherited Members</h2></td></tr>
525
525
  </table>
526
526
  </div><div class="memdoc">
527
527
 
528
- <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00121">121</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
528
+ <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00143">143</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
529
529
 
530
530
  </div>
531
531
  </div>
@@ -541,7 +541,7 @@ Additional Inherited Members</h2></td></tr>
541
541
  </table>
542
542
  </div><div class="memdoc">
543
543
 
544
- <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00123">123</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
544
+ <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00145">145</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
545
545
 
546
546
  </div>
547
547
  </div>
@@ -557,7 +557,7 @@ Additional Inherited Members</h2></td></tr>
557
557
  </table>
558
558
  </div><div class="memdoc">
559
559
 
560
- <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00128">128</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
560
+ <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00150">150</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
561
561
 
562
562
  </div>
563
563
  </div>
@@ -573,7 +573,7 @@ Additional Inherited Members</h2></td></tr>
573
573
  </table>
574
574
  </div><div class="memdoc">
575
575
 
576
- <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00122">122</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
576
+ <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00144">144</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
577
577
 
578
578
  </div>
579
579
  </div>
@@ -589,7 +589,7 @@ Additional Inherited Members</h2></td></tr>
589
589
  </table>
590
590
  </div><div class="memdoc">
591
591
 
592
- <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00124">124</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
592
+ <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00146">146</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
593
593
 
594
594
  </div>
595
595
  </div>
@@ -605,7 +605,7 @@ Additional Inherited Members</h2></td></tr>
605
605
  </table>
606
606
  </div><div class="memdoc">
607
607
 
608
- <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00120">120</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
608
+ <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00142">142</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
609
609
 
610
610
  </div>
611
611
  </div>
@@ -621,7 +621,7 @@ Additional Inherited Members</h2></td></tr>
621
621
  </table>
622
622
  </div><div class="memdoc">
623
623
 
624
- <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00131">131</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
624
+ <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00153">153</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
625
625
 
626
626
  </div>
627
627
  </div>
@@ -637,7 +637,7 @@ Additional Inherited Members</h2></td></tr>
637
637
  </table>
638
638
  </div><div class="memdoc">
639
639
 
640
- <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00119">119</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
640
+ <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00141">141</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
641
641
 
642
642
  </div>
643
643
  </div>
@@ -668,19 +668,19 @@ Additional Inherited Members</h2></td></tr>
668
668
 
669
669
  <p>Constructor. </p>
670
670
 
671
- <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00134">134</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
672
- <div class="fragment"><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; :<a class="code" href="classSVF_1_1TCT.html#a980de0593e41d18d2716aa5120d35d04">pta</a>(<a class="code" href="cJSON_8cpp.html#a009ef1d888ab6dbe77e6b42b0b39f1ae">p</a>),<a class="code" href="classSVF_1_1TCT.html#a52e3759054281c1ca1ccde07a9af1799">TCTNodeNum</a>(0),<a class="code" href="classSVF_1_1TCT.html#a862899f2e5fb35920adf8e763e1dba57">TCTEdgeNum</a>(0),<a class="code" href="classSVF_1_1TCT.html#aaae41663b1d1f4d38b047c50c156defb">MaxCxtSize</a>(0)</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; {</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <a class="code" href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">tcg</a> = SVFUtil::cast&lt;ThreadCallGraph&gt;(<a class="code" href="classSVF_1_1TCT.html#a980de0593e41d18d2716aa5120d35d04">pta</a>-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a7c9b7e5fe37ae31ba84d167945ca57df">getPTACallGraph</a>());</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <a class="code" href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">tcg</a>-&gt;<a class="code" href="classSVF_1_1ThreadCallGraph.html#ae25bca6e64ceedc56f1e2f1ae30f89eb">updateCallGraph</a>(<a class="code" href="classSVF_1_1TCT.html#a980de0593e41d18d2716aa5120d35d04">pta</a>);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="comment">//tcg-&gt;updateJoinEdge(pta);</span></div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <a class="code" href="classSVF_1_1TCT.html#a30662928bafc97c1e7b123270ca69980">tcgSCC</a> = <a class="code" href="classSVF_1_1TCT.html#a980de0593e41d18d2716aa5120d35d04">pta</a>-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a0bddf297a2d8cd59ce9a232f0229f248">getCallGraphSCC</a>();</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <a class="code" href="classSVF_1_1TCT.html#a30662928bafc97c1e7b123270ca69980">tcgSCC</a>-&gt;<a class="code" href="classSVF_1_1SCCDetection.html#a123b5006a6da7053e5e357140da3c5a3">find</a>();</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <a class="code" href="classSVF_1_1TCT.html#ab86389b3bf292c5b3d2b29fc49a5d94d">build</a>();</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; }</div><div class="ttc" id="cJSON_8cpp_html_a009ef1d888ab6dbe77e6b42b0b39f1ae"><div class="ttname"><a href="cJSON_8cpp.html#a009ef1d888ab6dbe77e6b42b0b39f1ae">p</a></div><div class="ttdeci">cJSON * p</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l02559">cJSON.cpp:2559</a></div></div>
673
- <div class="ttc" id="classSVF_1_1TCT_html_a862899f2e5fb35920adf8e763e1dba57"><div class="ttname"><a href="classSVF_1_1TCT.html#a862899f2e5fb35920adf8e763e1dba57">SVF::TCT::TCTEdgeNum</a></div><div class="ttdeci">u32_t TCTEdgeNum</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00399">TCT.h:399</a></div></div>
671
+ <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00156">156</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
672
+ <div class="fragment"><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; :<a class="code" href="classSVF_1_1TCT.html#a980de0593e41d18d2716aa5120d35d04">pta</a>(<a class="code" href="cJSON_8cpp.html#a009ef1d888ab6dbe77e6b42b0b39f1ae">p</a>),<a class="code" href="classSVF_1_1TCT.html#a52e3759054281c1ca1ccde07a9af1799">TCTNodeNum</a>(0),<a class="code" href="classSVF_1_1TCT.html#a862899f2e5fb35920adf8e763e1dba57">TCTEdgeNum</a>(0),<a class="code" href="classSVF_1_1TCT.html#aaae41663b1d1f4d38b047c50c156defb">MaxCxtSize</a>(0)</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; {</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <a class="code" href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">tcg</a> = SVFUtil::cast&lt;ThreadCallGraph&gt;(<a class="code" href="classSVF_1_1TCT.html#a980de0593e41d18d2716aa5120d35d04">pta</a>-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a7c9b7e5fe37ae31ba84d167945ca57df">getPTACallGraph</a>());</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <a class="code" href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">tcg</a>-&gt;<a class="code" href="classSVF_1_1ThreadCallGraph.html#ae25bca6e64ceedc56f1e2f1ae30f89eb">updateCallGraph</a>(<a class="code" href="classSVF_1_1TCT.html#a980de0593e41d18d2716aa5120d35d04">pta</a>);</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="comment">//tcg-&gt;updateJoinEdge(pta);</span></div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <a class="code" href="classSVF_1_1TCT.html#a30662928bafc97c1e7b123270ca69980">tcgSCC</a> = <a class="code" href="classSVF_1_1TCT.html#a980de0593e41d18d2716aa5120d35d04">pta</a>-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a0bddf297a2d8cd59ce9a232f0229f248">getCallGraphSCC</a>();</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <a class="code" href="classSVF_1_1TCT.html#a30662928bafc97c1e7b123270ca69980">tcgSCC</a>-&gt;<a class="code" href="classSVF_1_1SCCDetection.html#a123b5006a6da7053e5e357140da3c5a3">find</a>();</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <a class="code" href="classSVF_1_1TCT.html#ab86389b3bf292c5b3d2b29fc49a5d94d">build</a>();</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; }</div><div class="ttc" id="cJSON_8cpp_html_a009ef1d888ab6dbe77e6b42b0b39f1ae"><div class="ttname"><a href="cJSON_8cpp.html#a009ef1d888ab6dbe77e6b42b0b39f1ae">p</a></div><div class="ttdeci">cJSON * p</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l02559">cJSON.cpp:2559</a></div></div>
673
+ <div class="ttc" id="classSVF_1_1TCT_html_a862899f2e5fb35920adf8e763e1dba57"><div class="ttname"><a href="classSVF_1_1TCT.html#a862899f2e5fb35920adf8e763e1dba57">SVF::TCT::TCTEdgeNum</a></div><div class="ttdeci">u32_t TCTEdgeNum</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00421">TCT.h:421</a></div></div>
674
674
  <div class="ttc" id="classSVF_1_1SCCDetection_html_a123b5006a6da7053e5e357140da3c5a3"><div class="ttname"><a href="classSVF_1_1SCCDetection.html#a123b5006a6da7053e5e357140da3c5a3">SVF::SCCDetection::find</a></div><div class="ttdeci">void find(void)</div><div class="ttdef"><b>Definition:</b> <a href="SCC_8h_source.html#l00308">SCC.h:308</a></div></div>
675
- <div class="ttc" id="classSVF_1_1TCT_html_ac9ddd6559e818f37c018ed5435182363"><div class="ttname"><a href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">SVF::TCT::tcg</a></div><div class="ttdeci">ThreadCallGraph * tcg</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00396">TCT.h:396</a></div></div>
675
+ <div class="ttc" id="classSVF_1_1TCT_html_ac9ddd6559e818f37c018ed5435182363"><div class="ttname"><a href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">SVF::TCT::tcg</a></div><div class="ttdeci">ThreadCallGraph * tcg</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00418">TCT.h:418</a></div></div>
676
676
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a7c9b7e5fe37ae31ba84d167945ca57df"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a7c9b7e5fe37ae31ba84d167945ca57df">SVF::PointerAnalysis::getPTACallGraph</a></div><div class="ttdeci">PTACallGraph * getPTACallGraph() const</div><div class="ttdoc">Return call graph. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00174">PointerAnalysis.h:174</a></div></div>
677
677
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a0bddf297a2d8cd59ce9a232f0229f248"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0bddf297a2d8cd59ce9a232f0229f248">SVF::PointerAnalysis::getCallGraphSCC</a></div><div class="ttdeci">CallGraphSCC * getCallGraphSCC() const</div><div class="ttdoc">Return call graph SCC. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00179">PointerAnalysis.h:179</a></div></div>
678
- <div class="ttc" id="classSVF_1_1TCT_html_ab86389b3bf292c5b3d2b29fc49a5d94d"><div class="ttname"><a href="classSVF_1_1TCT.html#ab86389b3bf292c5b3d2b29fc49a5d94d">SVF::TCT::build</a></div><div class="ttdeci">void build()</div><div class="ttdoc">Build TCT. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#l00387">TCT.cpp:387</a></div></div>
678
+ <div class="ttc" id="classSVF_1_1TCT_html_ab86389b3bf292c5b3d2b29fc49a5d94d"><div class="ttname"><a href="classSVF_1_1TCT.html#ab86389b3bf292c5b3d2b29fc49a5d94d">SVF::TCT::build</a></div><div class="ttdeci">void build()</div><div class="ttdoc">Build TCT. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#l00410">TCT.cpp:410</a></div></div>
679
679
  <div class="ttc" id="classSVF_1_1ThreadCallGraph_html_ae25bca6e64ceedc56f1e2f1ae30f89eb"><div class="ttname"><a href="classSVF_1_1ThreadCallGraph.html#ae25bca6e64ceedc56f1e2f1ae30f89eb">SVF::ThreadCallGraph::updateCallGraph</a></div><div class="ttdeci">void updateCallGraph(PointerAnalysis *pta)</div><div class="ttdoc">Update call graph using pointer results. </div><div class="ttdef"><b>Definition:</b> <a href="ThreadCallGraph_8cpp_source.html#l00053">ThreadCallGraph.cpp:53</a></div></div>
680
- <div class="ttc" id="classSVF_1_1TCT_html_a980de0593e41d18d2716aa5120d35d04"><div class="ttname"><a href="classSVF_1_1TCT.html#a980de0593e41d18d2716aa5120d35d04">SVF::TCT::pta</a></div><div class="ttdeci">PointerAnalysis * pta</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00397">TCT.h:397</a></div></div>
681
- <div class="ttc" id="classSVF_1_1TCT_html_a30662928bafc97c1e7b123270ca69980"><div class="ttname"><a href="classSVF_1_1TCT.html#a30662928bafc97c1e7b123270ca69980">SVF::TCT::tcgSCC</a></div><div class="ttdeci">ThreadCallGraphSCC * tcgSCC</div><div class="ttdoc">Procedures we care about during call graph traversing when creating TCT. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00542">TCT.h:542</a></div></div>
682
- <div class="ttc" id="classSVF_1_1TCT_html_aaae41663b1d1f4d38b047c50c156defb"><div class="ttname"><a href="classSVF_1_1TCT.html#aaae41663b1d1f4d38b047c50c156defb">SVF::TCT::MaxCxtSize</a></div><div class="ttdeci">u32_t MaxCxtSize</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00400">TCT.h:400</a></div></div>
683
- <div class="ttc" id="classSVF_1_1TCT_html_a52e3759054281c1ca1ccde07a9af1799"><div class="ttname"><a href="classSVF_1_1TCT.html#a52e3759054281c1ca1ccde07a9af1799">SVF::TCT::TCTNodeNum</a></div><div class="ttdeci">u32_t TCTNodeNum</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00398">TCT.h:398</a></div></div>
680
+ <div class="ttc" id="classSVF_1_1TCT_html_a980de0593e41d18d2716aa5120d35d04"><div class="ttname"><a href="classSVF_1_1TCT.html#a980de0593e41d18d2716aa5120d35d04">SVF::TCT::pta</a></div><div class="ttdeci">PointerAnalysis * pta</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00419">TCT.h:419</a></div></div>
681
+ <div class="ttc" id="classSVF_1_1TCT_html_a30662928bafc97c1e7b123270ca69980"><div class="ttname"><a href="classSVF_1_1TCT.html#a30662928bafc97c1e7b123270ca69980">SVF::TCT::tcgSCC</a></div><div class="ttdeci">ThreadCallGraphSCC * tcgSCC</div><div class="ttdoc">Procedures we care about during call graph traversing when creating TCT. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00564">TCT.h:564</a></div></div>
682
+ <div class="ttc" id="classSVF_1_1TCT_html_aaae41663b1d1f4d38b047c50c156defb"><div class="ttname"><a href="classSVF_1_1TCT.html#aaae41663b1d1f4d38b047c50c156defb">SVF::TCT::MaxCxtSize</a></div><div class="ttdeci">u32_t MaxCxtSize</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00422">TCT.h:422</a></div></div>
683
+ <div class="ttc" id="classSVF_1_1TCT_html_a52e3759054281c1ca1ccde07a9af1799"><div class="ttname"><a href="classSVF_1_1TCT.html#a52e3759054281c1ca1ccde07a9af1799">SVF::TCT::TCTNodeNum</a></div><div class="ttdeci">u32_t TCTNodeNum</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00420">TCT.h:420</a></div></div>
684
684
  </div><!-- fragment -->
685
685
  </div>
686
686
  </div>
@@ -709,8 +709,8 @@ Additional Inherited Members</h2></td></tr>
709
709
 
710
710
  <p>Destructor. </p>
711
711
 
712
- <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00145">145</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
713
- <div class="fragment"><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; {</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <a class="code" href="classSVF_1_1TCT.html#aa453e3b27ec5fa4782bd6b9adef66877">destroy</a>();</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; }</div><div class="ttc" id="classSVF_1_1TCT_html_aa453e3b27ec5fa4782bd6b9adef66877"><div class="ttname"><a href="classSVF_1_1TCT.html#aa453e3b27ec5fa4782bd6b9adef66877">SVF::TCT::destroy</a></div><div class="ttdeci">void destroy()</div><div class="ttdoc">Clean up memory. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00533">TCT.h:533</a></div></div>
712
+ <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00167">167</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
713
+ <div class="fragment"><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; {</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <a class="code" href="classSVF_1_1TCT.html#aa453e3b27ec5fa4782bd6b9adef66877">destroy</a>();</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; }</div><div class="ttc" id="classSVF_1_1TCT_html_aa453e3b27ec5fa4782bd6b9adef66877"><div class="ttname"><a href="classSVF_1_1TCT.html#aa453e3b27ec5fa4782bd6b9adef66877">SVF::TCT::destroy</a></div><div class="ttdeci">void destroy()</div><div class="ttdoc">Clean up memory. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00555">TCT.h:555</a></div></div>
714
714
  </div><!-- fragment -->
715
715
  </div>
716
716
  </div>
@@ -751,8 +751,8 @@ Additional Inherited Members</h2></td></tr>
751
751
 
752
752
  <p>Add context for a thread at its spawning site (fork site) </p>
753
753
 
754
- <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00501">501</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
755
- <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; <a class="code" href="classSVF_1_1TCT.html#aea88fdb40c28724546f5903d3a73999a">ctToForkCxtMap</a>[ct] = cxt;</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; }</div><div class="ttc" id="classSVF_1_1TCT_html_aea88fdb40c28724546f5903d3a73999a"><div class="ttname"><a href="classSVF_1_1TCT.html#aea88fdb40c28724546f5903d3a73999a">SVF::TCT::ctToForkCxtMap</a></div><div class="ttdeci">CxtThreadToForkCxt ctToForkCxtMap</div><div class="ttdoc">Map a ctp to its graph node. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00546">TCT.h:546</a></div></div>
754
+ <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00523">523</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
755
+ <div class="fragment"><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; {</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; <a class="code" href="classSVF_1_1TCT.html#aea88fdb40c28724546f5903d3a73999a">ctToForkCxtMap</a>[ct] = cxt;</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; }</div><div class="ttc" id="classSVF_1_1TCT_html_aea88fdb40c28724546f5903d3a73999a"><div class="ttname"><a href="classSVF_1_1TCT.html#aea88fdb40c28724546f5903d3a73999a">SVF::TCT::ctToForkCxtMap</a></div><div class="ttdeci">CxtThreadToForkCxt ctToForkCxtMap</div><div class="ttdoc">Map a ctp to its graph node. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00568">TCT.h:568</a></div></div>
756
756
  </div><!-- fragment -->
757
757
  </div>
758
758
  </div>
@@ -792,8 +792,8 @@ Additional Inherited Members</h2></td></tr>
792
792
 
793
793
  <p>Add start routine function of a cxt thread. </p>
794
794
 
795
- <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00506">506</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
796
- <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; <a class="code" href="classSVF_1_1TCT.html#a36c7884869d923c1a9363962c9e013bd">ctToRoutineFunMap</a>[ct] = fun;</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; }</div><div class="ttc" id="classSVF_1_1TCT_html_a36c7884869d923c1a9363962c9e013bd"><div class="ttname"><a href="classSVF_1_1TCT.html#a36c7884869d923c1a9363962c9e013bd">SVF::TCT::ctToRoutineFunMap</a></div><div class="ttdeci">CxtThreadToFun ctToRoutineFunMap</div><div class="ttdoc">Map a CxtThread to the context at its spawning site (fork site). </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00547">TCT.h:547</a></div></div>
795
+ <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00528">528</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
796
+ <div class="fragment"><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; {</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; <a class="code" href="classSVF_1_1TCT.html#a36c7884869d923c1a9363962c9e013bd">ctToRoutineFunMap</a>[ct] = fun;</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; }</div><div class="ttc" id="classSVF_1_1TCT_html_a36c7884869d923c1a9363962c9e013bd"><div class="ttname"><a href="classSVF_1_1TCT.html#a36c7884869d923c1a9363962c9e013bd">SVF::TCT::ctToRoutineFunMap</a></div><div class="ttdeci">CxtThreadToFun ctToRoutineFunMap</div><div class="ttdoc">Map a CxtThread to the context at its spawning site (fork site). </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00569">TCT.h:569</a></div></div>
797
797
  </div><!-- fragment -->
798
798
  </div>
799
799
  </div>
@@ -833,10 +833,10 @@ Additional Inherited Members</h2></td></tr>
833
833
 
834
834
  <p>Add <a class="el" href="classSVF_1_1TCT.html">TCT</a> edge. </p>
835
835
 
836
- <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00414">414</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
837
- <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; <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1TCT.html#adb2025048dc69f0689f526c58df29802">hasGraphEdge</a>(src, dst, <a class="code" href="classSVF_1_1TCTEdge.html#a18644ee9ae37b03254afb077dca5494fac7915e379517d9d17b770540adb577c8">TCTEdge::ThreadCreateEdge</a>))</div><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; TCTEdge* edge = <span class="keyword">new</span> TCTEdge(src, dst, <a class="code" href="classSVF_1_1TCTEdge.html#a18644ee9ae37b03254afb077dca5494fac7915e379517d9d17b770540adb577c8">TCTEdge::ThreadCreateEdge</a>);</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; dst-&gt;addIncomingEdge(edge);</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; src-&gt;addOutgoingEdge(edge);</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; <a class="code" href="classSVF_1_1TCT.html#a862899f2e5fb35920adf8e763e1dba57">TCTEdgeNum</a>++;</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; }</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; }</div><div class="ttc" id="classSVF_1_1TCT_html_adb2025048dc69f0689f526c58df29802"><div class="ttname"><a href="classSVF_1_1TCT.html#adb2025048dc69f0689f526c58df29802">SVF::TCT::hasGraphEdge</a></div><div class="ttdeci">TCTEdge * hasGraphEdge(TCTNode *src, TCTNode *dst, TCTEdge::CEDGEK kind) const</div><div class="ttdoc">Whether we have aleady created this call graph edge. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#l00567">TCT.cpp:567</a></div></div>
838
- <div class="ttc" id="classSVF_1_1TCT_html_a862899f2e5fb35920adf8e763e1dba57"><div class="ttname"><a href="classSVF_1_1TCT.html#a862899f2e5fb35920adf8e763e1dba57">SVF::TCT::TCTEdgeNum</a></div><div class="ttdeci">u32_t TCTEdgeNum</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00399">TCT.h:399</a></div></div>
839
- <div class="ttc" id="classSVF_1_1TCTEdge_html_a18644ee9ae37b03254afb077dca5494fac7915e379517d9d17b770540adb577c8"><div class="ttname"><a href="classSVF_1_1TCTEdge.html#a18644ee9ae37b03254afb077dca5494fac7915e379517d9d17b770540adb577c8">SVF::TCTEdge::ThreadCreateEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00035">TCT.h:35</a></div></div>
836
+ <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00436">436</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
837
+ <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; <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1TCT.html#adb2025048dc69f0689f526c58df29802">hasGraphEdge</a>(src, dst, <a class="code" href="classSVF_1_1TCTEdge.html#a18644ee9ae37b03254afb077dca5494fac7915e379517d9d17b770540adb577c8">TCTEdge::ThreadCreateEdge</a>))</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; {</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; TCTEdge* edge = <span class="keyword">new</span> TCTEdge(src, dst, <a class="code" href="classSVF_1_1TCTEdge.html#a18644ee9ae37b03254afb077dca5494fac7915e379517d9d17b770540adb577c8">TCTEdge::ThreadCreateEdge</a>);</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; dst-&gt;addIncomingEdge(edge);</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; src-&gt;addOutgoingEdge(edge);</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; <a class="code" href="classSVF_1_1TCT.html#a862899f2e5fb35920adf8e763e1dba57">TCTEdgeNum</a>++;</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</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">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; }</div><div class="ttc" id="classSVF_1_1TCT_html_adb2025048dc69f0689f526c58df29802"><div class="ttname"><a href="classSVF_1_1TCT.html#adb2025048dc69f0689f526c58df29802">SVF::TCT::hasGraphEdge</a></div><div class="ttdeci">TCTEdge * hasGraphEdge(TCTNode *src, TCTNode *dst, TCTEdge::CEDGEK kind) const</div><div class="ttdoc">Whether we have aleady created this call graph edge. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#l00590">TCT.cpp:590</a></div></div>
838
+ <div class="ttc" id="classSVF_1_1TCT_html_a862899f2e5fb35920adf8e763e1dba57"><div class="ttname"><a href="classSVF_1_1TCT.html#a862899f2e5fb35920adf8e763e1dba57">SVF::TCT::TCTEdgeNum</a></div><div class="ttdeci">u32_t TCTEdgeNum</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00421">TCT.h:421</a></div></div>
839
+ <div class="ttc" id="classSVF_1_1TCTEdge_html_a18644ee9ae37b03254afb077dca5494fac7915e379517d9d17b770540adb577c8"><div class="ttname"><a href="classSVF_1_1TCTEdge.html#a18644ee9ae37b03254afb077dca5494fac7915e379517d9d17b770540adb577c8">SVF::TCTEdge::ThreadCreateEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00057">TCT.h:57</a></div></div>
840
840
  </div><!-- fragment -->
841
841
  </div>
842
842
  </div>
@@ -866,11 +866,11 @@ Additional Inherited Members</h2></td></tr>
866
866
 
867
867
  <p>Add <a class="el" href="classSVF_1_1TCT.html">TCT</a> node. </p>
868
868
 
869
- <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00403">403</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
870
- <div class="fragment"><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; {</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; assert(<a class="code" href="classSVF_1_1TCT.html#a0ccb6e9ffff0f22a0a054a92222893d5">ctpToNodeMap</a>.find(ct)==<a class="code" href="classSVF_1_1TCT.html#a0ccb6e9ffff0f22a0a054a92222893d5">ctpToNodeMap</a>.end() &amp;&amp; <span class="stringliteral">&quot;Already has this node!!&quot;</span>);</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span> = <a class="code" href="classSVF_1_1TCT.html#a52e3759054281c1ca1ccde07a9af1799">TCTNodeNum</a>;</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; TCTNode* node = <span class="keyword">new</span> TCTNode(<span class="keywordtype">id</span>, ct);</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; <a class="code" href="classSVF_1_1GenericGraph.html#a0a8831a5429005ff9d71adbd6bf3994f">addGNode</a>(<span class="keywordtype">id</span>, node);</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; <a class="code" href="classSVF_1_1TCT.html#a52e3759054281c1ca1ccde07a9af1799">TCTNodeNum</a>++;</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <a class="code" href="classSVF_1_1TCT.html#a0ccb6e9ffff0f22a0a054a92222893d5">ctpToNodeMap</a>[ct] = node;</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; <span class="keywordflow">return</span> node;</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; }</div><div class="ttc" id="classSVF_1_1TCT_html_a0ccb6e9ffff0f22a0a054a92222893d5"><div class="ttname"><a href="classSVF_1_1TCT.html#a0ccb6e9ffff0f22a0a054a92222893d5">SVF::TCT::ctpToNodeMap</a></div><div class="ttdeci">CxtThreadToNodeMap ctpToNodeMap</div><div class="ttdoc">Record all visited ctps. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00545">TCT.h:545</a></div></div>
869
+ <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00425">425</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
870
+ <div class="fragment"><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; assert(<a class="code" href="classSVF_1_1TCT.html#a0ccb6e9ffff0f22a0a054a92222893d5">ctpToNodeMap</a>.find(ct)==<a class="code" href="classSVF_1_1TCT.html#a0ccb6e9ffff0f22a0a054a92222893d5">ctpToNodeMap</a>.end() &amp;&amp; <span class="stringliteral">&quot;Already has this node!!&quot;</span>);</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span> = <a class="code" href="classSVF_1_1TCT.html#a52e3759054281c1ca1ccde07a9af1799">TCTNodeNum</a>;</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; TCTNode* node = <span class="keyword">new</span> TCTNode(<span class="keywordtype">id</span>, ct);</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; <a class="code" href="classSVF_1_1GenericGraph.html#a0a8831a5429005ff9d71adbd6bf3994f">addGNode</a>(<span class="keywordtype">id</span>, node);</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; <a class="code" href="classSVF_1_1TCT.html#a52e3759054281c1ca1ccde07a9af1799">TCTNodeNum</a>++;</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; <a class="code" href="classSVF_1_1TCT.html#a0ccb6e9ffff0f22a0a054a92222893d5">ctpToNodeMap</a>[ct] = node;</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; <span class="keywordflow">return</span> node;</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; }</div><div class="ttc" id="classSVF_1_1TCT_html_a0ccb6e9ffff0f22a0a054a92222893d5"><div class="ttname"><a href="classSVF_1_1TCT.html#a0ccb6e9ffff0f22a0a054a92222893d5">SVF::TCT::ctpToNodeMap</a></div><div class="ttdeci">CxtThreadToNodeMap ctpToNodeMap</div><div class="ttdoc">Record all visited ctps. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00567">TCT.h:567</a></div></div>
871
871
  <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>
872
872
  <div class="ttc" id="classSVF_1_1GenericGraph_html_a0a8831a5429005ff9d71adbd6bf3994f"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a0a8831a5429005ff9d71adbd6bf3994f">SVF::GenericGraph::addGNode</a></div><div class="ttdeci">void addGNode(NodeID id, NodeType *node)</div><div class="ttdoc">Add a Node. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00384">GenericGraph.h:384</a></div></div>
873
- <div class="ttc" id="classSVF_1_1TCT_html_a52e3759054281c1ca1ccde07a9af1799"><div class="ttname"><a href="classSVF_1_1TCT.html#a52e3759054281c1ca1ccde07a9af1799">SVF::TCT::TCTNodeNum</a></div><div class="ttdeci">u32_t TCTNodeNum</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00398">TCT.h:398</a></div></div>
873
+ <div class="ttc" id="classSVF_1_1TCT_html_a52e3759054281c1ca1ccde07a9af1799"><div class="ttname"><a href="classSVF_1_1TCT.html#a52e3759054281c1ca1ccde07a9af1799">SVF::TCT::TCTNodeNum</a></div><div class="ttdeci">u32_t TCTNodeNum</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00420">TCT.h:420</a></div></div>
874
874
  </div><!-- fragment -->
875
875
  </div>
876
876
  </div>
@@ -900,47 +900,47 @@ Additional Inherited Members</h2></td></tr>
900
900
  <p>Build <a class="el" href="classSVF_1_1TCT.html">TCT</a>. </p>
901
901
  <p>Start building <a class="el" href="classSVF_1_1TCT.html">TCT</a> </p>
902
902
 
903
- <p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#l00387">387</a> of file <a class="el" href="TCT_8cpp_source.html">TCT.cpp</a>.</p>
904
- <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;</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <a class="code" href="classSVF_1_1TCT.html#a8bb7ffa8dd185c52e6c150f9bc995511">markRelProcs</a>();</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160;</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <a class="code" href="classSVF_1_1TCT.html#a276da0e6bbe3e4fe9d1dd051ddd8d81b">collectLoopInfoForJoin</a>();</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160;</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <span class="comment">// the fork site of main function is initialized with nullptr.</span></div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <span class="comment">// the context of main is initialized with empty</span></div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; <span class="comment">// start routine is empty</span></div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160;</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; <a class="code" href="classSVF_1_1TCT.html#a313962cab59c12057d4f780a918ed1e8">collectEntryFunInCallGraph</a>();</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; <span class="keywordflow">for</span> (FunSet::iterator it=<a class="code" href="classSVF_1_1TCT.html#a140eaf9440ae9d52dbfb659967aa449a">entryFuncSet</a>.begin(), eit=<a class="code" href="classSVF_1_1TCT.html#a140eaf9440ae9d52dbfb659967aa449a">entryFuncSet</a>.end(); it!=eit; ++it)</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; {</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1TCT.html#aa69b82c888c8193e97f9e95c62ac99d4">isCandidateFun</a>(*it))</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a> cxt;</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; <a class="code" href="classSVF_1_1TCTNode.html">TCTNode</a>* mainTCTNode = <a class="code" href="classSVF_1_1TCT.html#a787e815e9c7e53566ce56127dd31a3a9">getOrCreateTCTNode</a>(cxt, <span class="keyword">nullptr</span>, cxt, *it);</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; <a class="code" href="classSVF_1_1CxtThreadProc.html">CxtThreadProc</a> t(mainTCTNode-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(), cxt, <a class="code" href="classSVF_1_1TCT.html#a21bcc063a406eb8650df42cf5ced68c9">getSVFFun</a>(*it));</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <a class="code" href="classSVF_1_1TCT.html#a002bac3dc928bc78b94de0ca97b1ec1d">pushToCTPWorkList</a>(t);</div><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;</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; <span class="keywordflow">while</span>(!<a class="code" href="classSVF_1_1TCT.html#a80dad1dfdf64cb7a5805eb8bedf79226">ctpList</a>.<a class="code" href="classSVF_1_1FIFOWorkList.html#a7056704c224dfb4b57287fe90c004aa8">empty</a>())</div><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; <a class="code" href="classSVF_1_1CxtThreadProc.html">CxtThreadProc</a> ctp = <a class="code" href="classSVF_1_1TCT.html#ad84cdb0d192312f96d006f7b9e660da3">popFromCTPWorkList</a>();</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; <a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a>* cgNode = <a class="code" href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">tcg</a>-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">getCallGraphNode</a>(ctp.<a class="code" href="classSVF_1_1CxtProc.html#ab9ac6459c90873b7dea35e0a22700189">getProc</a>());</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1TCT.html#aa69b82c888c8193e97f9e95c62ac99d4">isCandidateFun</a>(cgNode-&gt;<a class="code" href="classSVF_1_1PTACallGraphNode.html#a959445c97605953fbdebbbd999437a09">getFunction</a>()-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>()) == <span class="keyword">false</span>)</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; <span class="keywordflow">continue</span>;</div><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; <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1PTACallGraphNode.html#adf17f5699c9f40ffc8837e813e3af3ec">PTACallGraphNode::const_iterator</a> nit = cgNode-&gt;<a class="code" href="classSVF_1_1GenericNode.html#aa4f103330118c8976bf95e4bf53416eb">OutEdgeBegin</a>(), neit = cgNode-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a19a3366fd8a58290d0c740c46c3dcb3d">OutEdgeEnd</a>(); nit!=neit; nit++)</div><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; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PTACallGraphEdge.html">PTACallGraphEdge</a>* cgEdge = (*nit);</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; <span class="keywordflow">for</span>(PTACallGraphEdge::CallInstSet::const_iterator cit = cgEdge-&gt;<a class="code" href="classSVF_1_1PTACallGraphEdge.html#a750e50a9022451e406c4819979edffa5">directCallsBegin</a>(),</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; ecit = cgEdge-&gt;<a class="code" href="classSVF_1_1PTACallGraphEdge.html#acc4fcacefdc9be9a214dfcc455fe7970">directCallsEnd</a>(); cit!=ecit; ++cit)</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; {</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</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;\nTCT handling direct call:&quot;</span> &lt;&lt; **cit &lt;&lt; <span class="stringliteral">&quot;\t&quot;</span> &lt;&lt; cgEdge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>()-&gt;getFunction()-&gt;getName() &lt;&lt; <span class="stringliteral">&quot;--&gt;&quot;</span> &lt;&lt; cgEdge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>()-&gt;getFunction()-&gt;getName() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; <a class="code" href="classSVF_1_1TCT.html#aac0c4c3f1c7cb1d89ebd2a3da2d49bd3">handleCallRelation</a>(ctp,cgEdge,<a class="code" href="namespaceSVF_1_1SVFUtil.html#a202de7ad2bea0311e2f75894c030e7a9">getLLVMCallSite</a>((*cit)-&gt;getCallSite()));</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; }</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; <span class="keywordflow">for</span>(PTACallGraphEdge::CallInstSet::const_iterator ind = cgEdge-&gt;<a class="code" href="classSVF_1_1PTACallGraphEdge.html#afbdb582d20ab953b2de1f3efacb74679">indirectCallsBegin</a>(),</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; eind = cgEdge-&gt;<a class="code" href="classSVF_1_1PTACallGraphEdge.html#a494bc8bacca5ca8d266286f3fb303495">indirectCallsEnd</a>(); ind!=eind; ++ind)</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; {</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</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;\nTCT handling indirect call:&quot;</span> &lt;&lt; **ind &lt;&lt; <span class="stringliteral">&quot;\t&quot;</span> &lt;&lt; cgEdge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>()-&gt;getFunction()-&gt;getName() &lt;&lt; <span class="stringliteral">&quot;--&gt;&quot;</span> &lt;&lt; cgEdge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>()-&gt;getFunction()-&gt;getName() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; <a class="code" href="classSVF_1_1TCT.html#aac0c4c3f1c7cb1d89ebd2a3da2d49bd3">handleCallRelation</a>(ctp,cgEdge,<a class="code" href="namespaceSVF_1_1SVFUtil.html#a202de7ad2bea0311e2f75894c030e7a9">getLLVMCallSite</a>((*ind)-&gt;getCallSite()));</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; }</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; }</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; <a class="code" href="classSVF_1_1TCT.html#ad15753a9c20d738325e5c0edea6c9c56">collectMultiForkedThreads</a>();</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160;</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a19758db674de8af8a1c80734a1c0fac8">Options::TCTDotGraph</a>)</div><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_1TCT.html#abf2a992a66de9832915b1f959b8988e4">print</a>();</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; <a class="code" href="classSVF_1_1TCT.html#a716c97a80c483c571ca7a03b9acce3e8">dump</a>(<span class="stringliteral">&quot;tct&quot;</span>);</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;</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</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>
905
- <div class="ttc" id="classSVF_1_1TCT_html_aac0c4c3f1c7cb1d89ebd2a3da2d49bd3"><div class="ttname"><a href="classSVF_1_1TCT.html#aac0c4c3f1c7cb1d89ebd2a3da2d49bd3">SVF::TCT::handleCallRelation</a></div><div class="ttdeci">void handleCallRelation(CxtThreadProc &amp;ctp, const PTACallGraphEdge *cgEdge, CallSite call)</div><div class="ttdoc">Handle call relations. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#l00224">TCT.cpp:224</a></div></div>
906
- <div class="ttc" id="classSVF_1_1TCT_html_a002bac3dc928bc78b94de0ca97b1ec1d"><div class="ttname"><a href="classSVF_1_1TCT.html#a002bac3dc928bc78b94de0ca97b1ec1d">SVF::TCT::pushToCTPWorkList</a></div><div class="ttdeci">bool pushToCTPWorkList(const CxtThreadProc &amp;ctp)</div><div class="ttdoc">WorkList helper functions. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00513">TCT.h:513</a></div></div>
903
+ <p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#l00410">410</a> of file <a class="el" href="TCT_8cpp_source.html">TCT.cpp</a>.</p>
904
+ <div class="fragment"><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160;{</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160;</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; <a class="code" href="classSVF_1_1TCT.html#a8bb7ffa8dd185c52e6c150f9bc995511">markRelProcs</a>();</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160;</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; <a class="code" href="classSVF_1_1TCT.html#a276da0e6bbe3e4fe9d1dd051ddd8d81b">collectLoopInfoForJoin</a>();</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160;</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; <span class="comment">// the fork site of main function is initialized with nullptr.</span></div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; <span class="comment">// the context of main is initialized with empty</span></div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; <span class="comment">// start routine is empty</span></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_1TCT.html#a313962cab59c12057d4f780a918ed1e8">collectEntryFunInCallGraph</a>();</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; <span class="keywordflow">for</span> (FunSet::iterator it=<a class="code" href="classSVF_1_1TCT.html#a140eaf9440ae9d52dbfb659967aa449a">entryFuncSet</a>.begin(), eit=<a class="code" href="classSVF_1_1TCT.html#a140eaf9440ae9d52dbfb659967aa449a">entryFuncSet</a>.end(); it!=eit; ++it)</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> (!<a class="code" href="classSVF_1_1TCT.html#aa69b82c888c8193e97f9e95c62ac99d4">isCandidateFun</a>(*it))</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a> cxt;</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; <a class="code" href="classSVF_1_1TCTNode.html">TCTNode</a>* mainTCTNode = <a class="code" href="classSVF_1_1TCT.html#a787e815e9c7e53566ce56127dd31a3a9">getOrCreateTCTNode</a>(cxt, <span class="keyword">nullptr</span>, cxt, *it);</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; <a class="code" href="classSVF_1_1CxtThreadProc.html">CxtThreadProc</a> t(mainTCTNode-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(), cxt, <a class="code" href="classSVF_1_1TCT.html#a21bcc063a406eb8650df42cf5ced68c9">getSVFFun</a>(*it));</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; <a class="code" href="classSVF_1_1TCT.html#a002bac3dc928bc78b94de0ca97b1ec1d">pushToCTPWorkList</a>(t);</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;</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; <span class="keywordflow">while</span>(!<a class="code" href="classSVF_1_1TCT.html#a80dad1dfdf64cb7a5805eb8bedf79226">ctpList</a>.<a class="code" href="classSVF_1_1FIFOWorkList.html#a7056704c224dfb4b57287fe90c004aa8">empty</a>())</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; {</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; <a class="code" href="classSVF_1_1CxtThreadProc.html">CxtThreadProc</a> ctp = <a class="code" href="classSVF_1_1TCT.html#ad84cdb0d192312f96d006f7b9e660da3">popFromCTPWorkList</a>();</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; <a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a>* cgNode = <a class="code" href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">tcg</a>-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">getCallGraphNode</a>(ctp.<a class="code" href="classSVF_1_1CxtProc.html#ab9ac6459c90873b7dea35e0a22700189">getProc</a>());</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1TCT.html#aa69b82c888c8193e97f9e95c62ac99d4">isCandidateFun</a>(cgNode-&gt;<a class="code" href="classSVF_1_1PTACallGraphNode.html#a959445c97605953fbdebbbd999437a09">getFunction</a>()-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>()) == <span class="keyword">false</span>)</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; <span class="keywordflow">continue</span>;</div><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; <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1PTACallGraphNode.html#adf17f5699c9f40ffc8837e813e3af3ec">PTACallGraphNode::const_iterator</a> nit = cgNode-&gt;<a class="code" href="classSVF_1_1GenericNode.html#aa4f103330118c8976bf95e4bf53416eb">OutEdgeBegin</a>(), neit = cgNode-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a19a3366fd8a58290d0c740c46c3dcb3d">OutEdgeEnd</a>(); nit!=neit; nit++)</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; {</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PTACallGraphEdge.html">PTACallGraphEdge</a>* cgEdge = (*nit);</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160;</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; <span class="keywordflow">for</span>(PTACallGraphEdge::CallInstSet::const_iterator cit = cgEdge-&gt;<a class="code" href="classSVF_1_1PTACallGraphEdge.html#a750e50a9022451e406c4819979edffa5">directCallsBegin</a>(),</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; ecit = cgEdge-&gt;<a class="code" href="classSVF_1_1PTACallGraphEdge.html#acc4fcacefdc9be9a214dfcc455fe7970">directCallsEnd</a>(); cit!=ecit; ++cit)</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; <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;\nTCT handling direct call:&quot;</span> &lt;&lt; **cit &lt;&lt; <span class="stringliteral">&quot;\t&quot;</span> &lt;&lt; cgEdge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>()-&gt;getFunction()-&gt;getName() &lt;&lt; <span class="stringliteral">&quot;--&gt;&quot;</span> &lt;&lt; cgEdge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>()-&gt;getFunction()-&gt;getName() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; <a class="code" href="classSVF_1_1TCT.html#aac0c4c3f1c7cb1d89ebd2a3da2d49bd3">handleCallRelation</a>(ctp,cgEdge,<a class="code" href="namespaceSVF_1_1SVFUtil.html#a202de7ad2bea0311e2f75894c030e7a9">getLLVMCallSite</a>((*cit)-&gt;getCallSite()));</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">for</span>(PTACallGraphEdge::CallInstSet::const_iterator ind = cgEdge-&gt;<a class="code" href="classSVF_1_1PTACallGraphEdge.html#afbdb582d20ab953b2de1f3efacb74679">indirectCallsBegin</a>(),</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; eind = cgEdge-&gt;<a class="code" href="classSVF_1_1PTACallGraphEdge.html#a494bc8bacca5ca8d266286f3fb303495">indirectCallsEnd</a>(); ind!=eind; ++ind)</div><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; <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;\nTCT handling indirect call:&quot;</span> &lt;&lt; **ind &lt;&lt; <span class="stringliteral">&quot;\t&quot;</span> &lt;&lt; cgEdge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>()-&gt;getFunction()-&gt;getName() &lt;&lt; <span class="stringliteral">&quot;--&gt;&quot;</span> &lt;&lt; cgEdge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>()-&gt;getFunction()-&gt;getName() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; <a class="code" href="classSVF_1_1TCT.html#aac0c4c3f1c7cb1d89ebd2a3da2d49bd3">handleCallRelation</a>(ctp,cgEdge,<a class="code" href="namespaceSVF_1_1SVFUtil.html#a202de7ad2bea0311e2f75894c030e7a9">getLLVMCallSite</a>((*ind)-&gt;getCallSite()));</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; }</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="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; <a class="code" href="classSVF_1_1TCT.html#ad15753a9c20d738325e5c0edea6c9c56">collectMultiForkedThreads</a>();</div><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; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a19758db674de8af8a1c80734a1c0fac8">Options::TCTDotGraph</a>)</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; {</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; <a class="code" href="classSVF_1_1TCT.html#abf2a992a66de9832915b1f959b8988e4">print</a>();</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; <a class="code" href="classSVF_1_1TCT.html#a716c97a80c483c571ca7a03b9acce3e8">dump</a>(<span class="stringliteral">&quot;tct&quot;</span>);</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; }</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160;</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160;}</div><div class="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>
905
+ <div class="ttc" id="classSVF_1_1TCT_html_aac0c4c3f1c7cb1d89ebd2a3da2d49bd3"><div class="ttname"><a href="classSVF_1_1TCT.html#aac0c4c3f1c7cb1d89ebd2a3da2d49bd3">SVF::TCT::handleCallRelation</a></div><div class="ttdeci">void handleCallRelation(CxtThreadProc &amp;ctp, const PTACallGraphEdge *cgEdge, CallSite call)</div><div class="ttdoc">Handle call relations. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#l00247">TCT.cpp:247</a></div></div>
906
+ <div class="ttc" id="classSVF_1_1TCT_html_a002bac3dc928bc78b94de0ca97b1ec1d"><div class="ttname"><a href="classSVF_1_1TCT.html#a002bac3dc928bc78b94de0ca97b1ec1d">SVF::TCT::pushToCTPWorkList</a></div><div class="ttdeci">bool pushToCTPWorkList(const CxtThreadProc &amp;ctp)</div><div class="ttdoc">WorkList helper functions. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00535">TCT.h:535</a></div></div>
907
907
  <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>
908
908
  <div class="ttc" id="classSVF_1_1GenericNode_html_aa4f103330118c8976bf95e4bf53416eb"><div class="ttname"><a href="classSVF_1_1GenericNode.html#aa4f103330118c8976bf95e4bf53416eb">SVF::GenericNode::OutEdgeBegin</a></div><div class="ttdeci">iterator OutEdgeBegin()</div><div class="ttdoc">iterators </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00206">GenericGraph.h:206</a></div></div>
909
909
  <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>
910
- <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>
911
- <div class="ttc" id="classSVF_1_1TCT_html_a80dad1dfdf64cb7a5805eb8bedf79226"><div class="ttname"><a href="classSVF_1_1TCT.html#a80dad1dfdf64cb7a5805eb8bedf79226">SVF::TCT::ctpList</a></div><div class="ttdeci">CxtThreadProcVec ctpList</div><div class="ttdoc">Thread call graph SCC. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00543">TCT.h:543</a></div></div>
910
+ <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>
911
+ <div class="ttc" id="classSVF_1_1TCT_html_a80dad1dfdf64cb7a5805eb8bedf79226"><div class="ttname"><a href="classSVF_1_1TCT.html#a80dad1dfdf64cb7a5805eb8bedf79226">SVF::TCT::ctpList</a></div><div class="ttdeci">CxtThreadProcVec ctpList</div><div class="ttdoc">Thread call graph SCC. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00565">TCT.h:565</a></div></div>
912
912
  <div class="ttc" id="classSVF_1_1PTACallGraphEdge_html_a494bc8bacca5ca8d266286f3fb303495"><div class="ttname"><a href="classSVF_1_1PTACallGraphEdge.html#a494bc8bacca5ca8d266286f3fb303495">SVF::PTACallGraphEdge::indirectCallsEnd</a></div><div class="ttdeci">CallInstSet::const_iterator indirectCallsEnd() const</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00135">PTACallGraph.h:135</a></div></div>
913
913
  <div class="ttc" id="classSVF_1_1CxtThreadProc_html"><div class="ttname"><a href="classSVF_1_1CxtThreadProc.html">SVF::CxtThreadProc</a></div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00394">CxtStmt.h:394</a></div></div>
914
914
  <div class="ttc" id="classSVF_1_1CxtProc_html_ab9ac6459c90873b7dea35e0a22700189"><div class="ttname"><a href="classSVF_1_1CxtProc.html#ab9ac6459c90873b7dea35e0a22700189">SVF::CxtProc::getProc</a></div><div class="ttdeci">const SVFFunction * getProc() const</div><div class="ttdoc">Return current procedure. </div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00325">CxtStmt.h:325</a></div></div>
915
- <div class="ttc" id="classSVF_1_1TCT_html_ac9ddd6559e818f37c018ed5435182363"><div class="ttname"><a href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">SVF::TCT::tcg</a></div><div class="ttdeci">ThreadCallGraph * tcg</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00396">TCT.h:396</a></div></div>
915
+ <div class="ttc" id="classSVF_1_1TCT_html_ac9ddd6559e818f37c018ed5435182363"><div class="ttname"><a href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">SVF::TCT::tcg</a></div><div class="ttdeci">ThreadCallGraph * tcg</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00418">TCT.h:418</a></div></div>
916
916
  <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>
917
- <div class="ttc" id="classSVF_1_1TCT_html_a787e815e9c7e53566ce56127dd31a3a9"><div class="ttname"><a href="classSVF_1_1TCT.html#a787e815e9c7e53566ce56127dd31a3a9">SVF::TCT::getOrCreateTCTNode</a></div><div class="ttdeci">TCTNode * getOrCreateTCTNode(const CallStrCxt &amp;cxt, const CallInst *fork, const CallStrCxt &amp;oldCxt, const Function *routine)</div><div class="ttdoc">Get or create a tct node based on CxtThread. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00466">TCT.h:466</a></div></div>
918
- <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>
917
+ <div class="ttc" id="classSVF_1_1TCT_html_a787e815e9c7e53566ce56127dd31a3a9"><div class="ttname"><a href="classSVF_1_1TCT.html#a787e815e9c7e53566ce56127dd31a3a9">SVF::TCT::getOrCreateTCTNode</a></div><div class="ttdeci">TCTNode * getOrCreateTCTNode(const CallStrCxt &amp;cxt, const CallInst *fork, const CallStrCxt &amp;oldCxt, const Function *routine)</div><div class="ttdoc">Get or create a tct node based on CxtThread. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00488">TCT.h:488</a></div></div>
918
+ <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>
919
919
  <div class="ttc" id="classSVF_1_1GenericEdge_html_aeaa31a2c8479e831b36ce2e2582ceb86"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">SVF::GenericEdge::getDstNode</a></div><div class="ttdeci">NodeType * getDstNode() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00093">GenericGraph.h:93</a></div></div>
920
- <div class="ttc" id="classSVF_1_1TCT_html_ad84cdb0d192312f96d006f7b9e660da3"><div class="ttname"><a href="classSVF_1_1TCT.html#ad84cdb0d192312f96d006f7b9e660da3">SVF::TCT::popFromCTPWorkList</a></div><div class="ttdeci">CxtThreadProc popFromCTPWorkList()</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00522">TCT.h:522</a></div></div>
920
+ <div class="ttc" id="classSVF_1_1TCT_html_ad84cdb0d192312f96d006f7b9e660da3"><div class="ttname"><a href="classSVF_1_1TCT.html#ad84cdb0d192312f96d006f7b9e660da3">SVF::TCT::popFromCTPWorkList</a></div><div class="ttdeci">CxtThreadProc popFromCTPWorkList()</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00544">TCT.h:544</a></div></div>
921
921
  <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>
922
922
  <div class="ttc" id="classSVF_1_1PTACallGraphEdge_html_acc4fcacefdc9be9a214dfcc455fe7970"><div class="ttname"><a href="classSVF_1_1PTACallGraphEdge.html#acc4fcacefdc9be9a214dfcc455fe7970">SVF::PTACallGraphEdge::directCallsEnd</a></div><div class="ttdeci">CallInstSet::const_iterator directCallsEnd() const</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00126">PTACallGraph.h:126</a></div></div>
923
- <div class="ttc" id="classSVF_1_1TCT_html_a276da0e6bbe3e4fe9d1dd051ddd8d81b"><div class="ttname"><a href="classSVF_1_1TCT.html#a276da0e6bbe3e4fe9d1dd051ddd8d81b">SVF::TCT::collectLoopInfoForJoin</a></div><div class="ttdeci">void collectLoopInfoForJoin()</div><div class="ttdoc">Handle join site in loop. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#l00296">TCT.cpp:296</a></div></div>
923
+ <div class="ttc" id="classSVF_1_1TCT_html_a276da0e6bbe3e4fe9d1dd051ddd8d81b"><div class="ttname"><a href="classSVF_1_1TCT.html#a276da0e6bbe3e4fe9d1dd051ddd8d81b">SVF::TCT::collectLoopInfoForJoin</a></div><div class="ttdeci">void collectLoopInfoForJoin()</div><div class="ttdoc">Handle join site in loop. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#l00319">TCT.cpp:319</a></div></div>
924
924
  <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>
925
925
  <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>
926
926
  <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>
927
927
  <div class="ttc" id="classSVF_1_1GenericEdge_html_ab47ca533c415841ef75456cbad439589"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">SVF::GenericEdge::getSrcNode</a></div><div class="ttdeci">NodeType * getSrcNode() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00089">GenericGraph.h:89</a></div></div>
928
- <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>
929
- <div class="ttc" id="classSVF_1_1TCT_html_a313962cab59c12057d4f780a918ed1e8"><div class="ttname"><a href="classSVF_1_1TCT.html#a313962cab59c12057d4f780a918ed1e8">SVF::TCT::collectEntryFunInCallGraph</a></div><div class="ttdeci">void collectEntryFunInCallGraph()</div><div class="ttdoc">Get entry functions that are neither called by other functions nor extern functions. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#l00167">TCT.cpp:167</a></div></div>
930
- <div class="ttc" id="classSVF_1_1TCT_html_a140eaf9440ae9d52dbfb659967aa449a"><div class="ttname"><a href="classSVF_1_1TCT.html#a140eaf9440ae9d52dbfb659967aa449a">SVF::TCT::entryFuncSet</a></div><div class="ttdeci">FunSet entryFuncSet</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00540">TCT.h:540</a></div></div>
928
+ <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>
929
+ <div class="ttc" id="classSVF_1_1TCT_html_a313962cab59c12057d4f780a918ed1e8"><div class="ttname"><a href="classSVF_1_1TCT.html#a313962cab59c12057d4f780a918ed1e8">SVF::TCT::collectEntryFunInCallGraph</a></div><div class="ttdeci">void collectEntryFunInCallGraph()</div><div class="ttdoc">Get entry functions that are neither called by other functions nor extern functions. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#l00190">TCT.cpp:190</a></div></div>
930
+ <div class="ttc" id="classSVF_1_1TCT_html_a140eaf9440ae9d52dbfb659967aa449a"><div class="ttname"><a href="classSVF_1_1TCT.html#a140eaf9440ae9d52dbfb659967aa449a">SVF::TCT::entryFuncSet</a></div><div class="ttdeci">FunSet entryFuncSet</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00562">TCT.h:562</a></div></div>
931
931
  <div class="ttc" id="classSVF_1_1PTACallGraphEdge_html_a750e50a9022451e406c4819979edffa5"><div class="ttname"><a href="classSVF_1_1PTACallGraphEdge.html#a750e50a9022451e406c4819979edffa5">SVF::PTACallGraphEdge::directCallsBegin</a></div><div class="ttdeci">CallInstSet::const_iterator directCallsBegin() const</div><div class="ttdoc">Iterators for direct and indirect callsites. </div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00122">PTACallGraph.h:122</a></div></div>
932
932
  <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>
933
933
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a202de7ad2bea0311e2f75894c030e7a9"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a202de7ad2bea0311e2f75894c030e7a9">SVF::SVFUtil::getLLVMCallSite</a></div><div class="ttdeci">CallSite getLLVMCallSite(const Instruction *inst)</div><div class="ttdoc">Return LLVM callsite given a instruction. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00217">SVFUtil.h:217</a></div></div>
934
934
  <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>
935
- <div class="ttc" id="classSVF_1_1TCT_html_a716c97a80c483c571ca7a03b9acce3e8"><div class="ttname"><a href="classSVF_1_1TCT.html#a716c97a80c483c571ca7a03b9acce3e8">SVF::TCT::dump</a></div><div class="ttdeci">void dump(const std::string &amp;filename)</div><div class="ttdoc">Dump the graph. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#l00546">TCT.cpp:546</a></div></div>
935
+ <div class="ttc" id="classSVF_1_1TCT_html_a716c97a80c483c571ca7a03b9acce3e8"><div class="ttname"><a href="classSVF_1_1TCT.html#a716c97a80c483c571ca7a03b9acce3e8">SVF::TCT::dump</a></div><div class="ttdeci">void dump(const std::string &amp;filename)</div><div class="ttdoc">Dump the graph. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#l00569">TCT.cpp:569</a></div></div>
936
936
  <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>
937
937
  <div class="ttc" id="classSVF_1_1GenericNode_html_a19a3366fd8a58290d0c740c46c3dcb3d"><div class="ttname"><a href="classSVF_1_1GenericNode.html#a19a3366fd8a58290d0c740c46c3dcb3d">SVF::GenericNode::OutEdgeEnd</a></div><div class="ttdeci">iterator OutEdgeEnd()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00210">GenericGraph.h:210</a></div></div>
938
938
  <div class="ttc" id="classSVF_1_1Options_html_a19758db674de8af8a1c80734a1c0fac8"><div class="ttname"><a href="classSVF_1_1Options.html#a19758db674de8af8a1c80734a1c0fac8">SVF::Options::TCTDotGraph</a></div><div class="ttdeci">static const llvm::cl::opt&lt; bool &gt; TCTDotGraph</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00195">Options.h:195</a></div></div>
939
939
  <div class="ttc" id="classSVF_1_1PTACallGraphEdge_html_afbdb582d20ab953b2de1f3efacb74679"><div class="ttname"><a href="classSVF_1_1PTACallGraphEdge.html#afbdb582d20ab953b2de1f3efacb74679">SVF::PTACallGraphEdge::indirectCallsBegin</a></div><div class="ttdeci">CallInstSet::const_iterator indirectCallsBegin() const</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00131">PTACallGraph.h:131</a></div></div>
940
- <div class="ttc" id="classSVF_1_1TCT_html_a8bb7ffa8dd185c52e6c150f9bc995511"><div class="ttname"><a href="classSVF_1_1TCT.html#a8bb7ffa8dd185c52e6c150f9bc995511">SVF::TCT::markRelProcs</a></div><div class="ttdeci">void markRelProcs()</div><div class="ttdoc">Mark relevant procedures that are backward reachable from any fork/join site. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#l00114">TCT.cpp:114</a></div></div>
941
- <div class="ttc" id="classSVF_1_1TCT_html_ad15753a9c20d738325e5c0edea6c9c56"><div class="ttname"><a href="classSVF_1_1TCT.html#ad15753a9c20d738325e5c0edea6c9c56">SVF::TCT::collectMultiForkedThreads</a></div><div class="ttdeci">void collectMultiForkedThreads()</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#l00186">TCT.cpp:186</a></div></div>
940
+ <div class="ttc" id="classSVF_1_1TCT_html_a8bb7ffa8dd185c52e6c150f9bc995511"><div class="ttname"><a href="classSVF_1_1TCT.html#a8bb7ffa8dd185c52e6c150f9bc995511">SVF::TCT::markRelProcs</a></div><div class="ttdeci">void markRelProcs()</div><div class="ttdoc">Mark relevant procedures that are backward reachable from any fork/join site. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#l00137">TCT.cpp:137</a></div></div>
941
+ <div class="ttc" id="classSVF_1_1TCT_html_ad15753a9c20d738325e5c0edea6c9c56"><div class="ttname"><a href="classSVF_1_1TCT.html#ad15753a9c20d738325e5c0edea6c9c56">SVF::TCT::collectMultiForkedThreads</a></div><div class="ttdeci">void collectMultiForkedThreads()</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#l00209">TCT.cpp:209</a></div></div>
942
942
  <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>
943
- <div class="ttc" id="classSVF_1_1TCT_html_abf2a992a66de9832915b1f959b8988e4"><div class="ttname"><a href="classSVF_1_1TCT.html#abf2a992a66de9832915b1f959b8988e4">SVF::TCT::print</a></div><div class="ttdeci">void print() const</div><div class="ttdoc">Print TCT information. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#l00555">TCT.cpp:555</a></div></div>
943
+ <div class="ttc" id="classSVF_1_1TCT_html_abf2a992a66de9832915b1f959b8988e4"><div class="ttname"><a href="classSVF_1_1TCT.html#abf2a992a66de9832915b1f959b8988e4">SVF::TCT::print</a></div><div class="ttdeci">void print() const</div><div class="ttdoc">Print TCT information. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#l00578">TCT.cpp:578</a></div></div>
944
944
  </div><!-- fragment -->
945
945
  </div>
946
946
  </div>
@@ -970,15 +970,15 @@ Additional Inherited Members</h2></td></tr>
970
970
  <p>Get entry functions that are neither called by other functions nor extern functions. </p>
971
971
  <p>Get Main function </p>
972
972
 
973
- <p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#l00167">167</a> of file <a class="el" href="TCT_8cpp_source.html">TCT.cpp</a>.</p>
974
- <div class="fragment"><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;{</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1SVFModule.html#afcf2978f32e15127fb093405dc17d7f1">SVFModule::const_iterator</a> it = <a class="code" href="classSVF_1_1TCT.html#aabc2c84e951ed9ae64207e379acb3074">getSVFModule</a>()-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(), eit = <a class="code" href="classSVF_1_1TCT.html#aabc2c84e951ed9ae64207e379acb3074">getSVFModule</a>()-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); it!=eit; ++it)</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; {</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun = (*it);</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">isExtCall</a>(fun))</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a>* node = <a class="code" href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">tcg</a>-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">getCallGraphNode</a>(fun);</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="keywordflow">if</span> (!node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a06a7373b11143e709784de784fa476fe">hasIncomingEdge</a>())</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; {</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <a class="code" href="classSVF_1_1TCT.html#a140eaf9440ae9d52dbfb659967aa449a">entryFuncSet</a>.insert(fun-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>());</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; }</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; }</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; assert(!<a class="code" href="classSVF_1_1TCT.html#a140eaf9440ae9d52dbfb659967aa449a">entryFuncSet</a>.empty() &amp;&amp; <span class="stringliteral">&quot;Can&#39;t find any function in module!&quot;</span>);</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</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>
973
+ <p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#l00190">190</a> of file <a class="el" href="TCT_8cpp_source.html">TCT.cpp</a>.</p>
974
+ <div class="fragment"><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;{</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1SVFModule.html#afcf2978f32e15127fb093405dc17d7f1">SVFModule::const_iterator</a> it = <a class="code" href="classSVF_1_1TCT.html#aabc2c84e951ed9ae64207e379acb3074">getSVFModule</a>()-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(), eit = <a class="code" href="classSVF_1_1TCT.html#aabc2c84e951ed9ae64207e379acb3074">getSVFModule</a>()-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); it!=eit; ++it)</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; {</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun = (*it);</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">isExtCall</a>(fun))</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a>* node = <a class="code" href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">tcg</a>-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">getCallGraphNode</a>(fun);</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <span class="keywordflow">if</span> (!node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a06a7373b11143e709784de784fa476fe">hasIncomingEdge</a>())</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; {</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <a class="code" href="classSVF_1_1TCT.html#a140eaf9440ae9d52dbfb659967aa449a">entryFuncSet</a>.insert(fun-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>());</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; }</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; }</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; assert(!<a class="code" href="classSVF_1_1TCT.html#a140eaf9440ae9d52dbfb659967aa449a">entryFuncSet</a>.empty() &amp;&amp; <span class="stringliteral">&quot;Can&#39;t find any function in module!&quot;</span>);</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</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>
975
975
  <div class="ttc" id="classSVF_1_1GenericNode_html_a06a7373b11143e709784de784fa476fe"><div class="ttname"><a href="classSVF_1_1GenericNode.html#a06a7373b11143e709784de784fa476fe">SVF::GenericNode::hasIncomingEdge</a></div><div class="ttdeci">bool hasIncomingEdge() const</div><div class="ttdoc">Has incoming/outgoing edge set. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00194">GenericGraph.h:194</a></div></div>
976
976
  <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>
977
977
  <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>
978
- <div class="ttc" id="classSVF_1_1TCT_html_ac9ddd6559e818f37c018ed5435182363"><div class="ttname"><a href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">SVF::TCT::tcg</a></div><div class="ttdeci">ThreadCallGraph * tcg</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00396">TCT.h:396</a></div></div>
978
+ <div class="ttc" id="classSVF_1_1TCT_html_ac9ddd6559e818f37c018ed5435182363"><div class="ttname"><a href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">SVF::TCT::tcg</a></div><div class="ttdeci">ThreadCallGraph * tcg</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00418">TCT.h:418</a></div></div>
979
979
  <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>
980
- <div class="ttc" id="classSVF_1_1TCT_html_aabc2c84e951ed9ae64207e379acb3074"><div class="ttname"><a href="classSVF_1_1TCT.html#aabc2c84e951ed9ae64207e379acb3074">SVF::TCT::getSVFModule</a></div><div class="ttdeci">SVFModule * getSVFModule() const</div><div class="ttdoc">Get SVFFModule. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00160">TCT.h:160</a></div></div>
981
- <div class="ttc" id="classSVF_1_1TCT_html_a140eaf9440ae9d52dbfb659967aa449a"><div class="ttname"><a href="classSVF_1_1TCT.html#a140eaf9440ae9d52dbfb659967aa449a">SVF::TCT::entryFuncSet</a></div><div class="ttdeci">FunSet entryFuncSet</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00540">TCT.h:540</a></div></div>
980
+ <div class="ttc" id="classSVF_1_1TCT_html_aabc2c84e951ed9ae64207e379acb3074"><div class="ttname"><a href="classSVF_1_1TCT.html#aabc2c84e951ed9ae64207e379acb3074">SVF::TCT::getSVFModule</a></div><div class="ttdeci">SVFModule * getSVFModule() const</div><div class="ttdoc">Get SVFFModule. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00182">TCT.h:182</a></div></div>
981
+ <div class="ttc" id="classSVF_1_1TCT_html_a140eaf9440ae9d52dbfb659967aa449a"><div class="ttname"><a href="classSVF_1_1TCT.html#a140eaf9440ae9d52dbfb659967aa449a">SVF::TCT::entryFuncSet</a></div><div class="ttdeci">FunSet entryFuncSet</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00562">TCT.h:562</a></div></div>
982
982
  <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>
983
983
  <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>
984
984
  <div class="ttc" id="classSVF_1_1SVFModule_html_afcf2978f32e15127fb093405dc17d7f1"><div class="ttname"><a href="classSVF_1_1SVFModule.html#afcf2978f32e15127fb093405dc17d7f1">SVF::SVFModule::const_iterator</a></div><div class="ttdeci">FunctionSetType::const_iterator const_iterator</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00052">SVFModule.h:52</a></div></div>
@@ -1013,17 +1013,17 @@ Additional Inherited Members</h2></td></tr>
1013
1013
  <p>collect loop info for join sites</p>
1014
1014
  <p>Collect loop info for join sites the in-loop join site must be joined if the loop is executed </p>
1015
1015
 
1016
- <p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#l00296">296</a> of file <a class="el" href="TCT_8cpp_source.html">TCT.cpp</a>.</p>
1017
- <div class="fragment"><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160;{</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <span class="keywordflow">for</span>(ThreadCallGraph::CallSiteSet::const_iterator it = <a class="code" href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">tcg</a>-&gt;<a class="code" href="classSVF_1_1ThreadCallGraph.html#a98ecfe14be2d38d292b5919716cdd29d">joinsitesBegin</a>(), eit = <a class="code" href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">tcg</a>-&gt;<a class="code" href="classSVF_1_1ThreadCallGraph.html#a50502f398e5eac9c6da3e26ea6052057">joinsitesEnd</a>(); it!=eit; ++it)</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; {</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* join = (*it)-&gt;getCallSite();</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#abf85e29310b2e4df8925d00a5c081314">Loop</a>* lp = <a class="code" href="classSVF_1_1TCT.html#add9104a3d7a821e9c2f266ae1810d2e3">getLoop</a>(join);</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <span class="keywordflow">if</span>(lp &amp;&amp; <a class="code" href="classSVF_1_1TCT.html#a65d0260b37ab60debb7fa84fa0b7a5d4">isJoinMustExecutedInLoop</a>(lp,join))</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; {</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <a class="code" href="classSVF_1_1TCT.html#a5b1f44ffa732607a7800728befa5bc57">joinSiteToLoopMap</a>[join] = lp;</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; }</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160;</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1TCT.html#af7cd9f1862836818593685bc5105da52">isInRecursion</a>(join))</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <a class="code" href="classSVF_1_1TCT.html#a1b3872361dc17aaea359db8ce0cc2431">inRecurJoinSites</a>.insert(join);</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; }</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160;}</div><div class="ttc" id="classSVF_1_1TCT_html_a65d0260b37ab60debb7fa84fa0b7a5d4"><div class="ttname"><a href="classSVF_1_1TCT.html#a65d0260b37ab60debb7fa84fa0b7a5d4">SVF::TCT::isJoinMustExecutedInLoop</a></div><div class="ttdeci">bool isJoinMustExecutedInLoop(const Loop *lp, const Instruction *join)</div><div class="ttdoc">Return true if a join instruction must be executed inside a loop. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#l00272">TCT.cpp:272</a></div></div>
1018
- <div class="ttc" id="classSVF_1_1TCT_html_af7cd9f1862836818593685bc5105da52"><div class="ttname"><a href="classSVF_1_1TCT.html#af7cd9f1862836818593685bc5105da52">SVF::TCT::isInRecursion</a></div><div class="ttdeci">bool isInRecursion(const Instruction *inst) const</div><div class="ttdoc">Whether an instruction is in a recursion. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#l00071">TCT.cpp:71</a></div></div>
1019
- <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>
1020
- <div class="ttc" id="classSVF_1_1TCT_html_ac9ddd6559e818f37c018ed5435182363"><div class="ttname"><a href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">SVF::TCT::tcg</a></div><div class="ttdeci">ThreadCallGraph * tcg</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00396">TCT.h:396</a></div></div>
1016
+ <p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#l00319">319</a> of file <a class="el" href="TCT_8cpp_source.html">TCT.cpp</a>.</p>
1017
+ <div class="fragment"><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160;{</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <span class="keywordflow">for</span>(ThreadCallGraph::CallSiteSet::const_iterator it = <a class="code" href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">tcg</a>-&gt;<a class="code" href="classSVF_1_1ThreadCallGraph.html#a98ecfe14be2d38d292b5919716cdd29d">joinsitesBegin</a>(), eit = <a class="code" href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">tcg</a>-&gt;<a class="code" href="classSVF_1_1ThreadCallGraph.html#a50502f398e5eac9c6da3e26ea6052057">joinsitesEnd</a>(); it!=eit; ++it)</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; {</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</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="l00324"></a><span class="lineno"> 324</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#abf85e29310b2e4df8925d00a5c081314">Loop</a>* lp = <a class="code" href="classSVF_1_1TCT.html#add9104a3d7a821e9c2f266ae1810d2e3">getLoop</a>(join);</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <span class="keywordflow">if</span>(lp &amp;&amp; <a class="code" href="classSVF_1_1TCT.html#a65d0260b37ab60debb7fa84fa0b7a5d4">isJoinMustExecutedInLoop</a>(lp,join))</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; {</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <a class="code" href="classSVF_1_1TCT.html#a5b1f44ffa732607a7800728befa5bc57">joinSiteToLoopMap</a>[join] = lp;</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; }</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160;</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1TCT.html#af7cd9f1862836818593685bc5105da52">isInRecursion</a>(join))</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <a class="code" href="classSVF_1_1TCT.html#a1b3872361dc17aaea359db8ce0cc2431">inRecurJoinSites</a>.insert(join);</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; }</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160;}</div><div class="ttc" id="classSVF_1_1TCT_html_a65d0260b37ab60debb7fa84fa0b7a5d4"><div class="ttname"><a href="classSVF_1_1TCT.html#a65d0260b37ab60debb7fa84fa0b7a5d4">SVF::TCT::isJoinMustExecutedInLoop</a></div><div class="ttdeci">bool isJoinMustExecutedInLoop(const Loop *lp, const Instruction *join)</div><div class="ttdoc">Return true if a join instruction must be executed inside a loop. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#l00295">TCT.cpp:295</a></div></div>
1018
+ <div class="ttc" id="classSVF_1_1TCT_html_af7cd9f1862836818593685bc5105da52"><div class="ttname"><a href="classSVF_1_1TCT.html#af7cd9f1862836818593685bc5105da52">SVF::TCT::isInRecursion</a></div><div class="ttdeci">bool isInRecursion(const Instruction *inst) const</div><div class="ttdoc">Whether an instruction is in a recursion. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#l00094">TCT.cpp:94</a></div></div>
1019
+ <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>
1020
+ <div class="ttc" id="classSVF_1_1TCT_html_ac9ddd6559e818f37c018ed5435182363"><div class="ttname"><a href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">SVF::TCT::tcg</a></div><div class="ttdeci">ThreadCallGraph * tcg</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00418">TCT.h:418</a></div></div>
1021
1021
  <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>
1022
1022
  <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>
1023
1023
  <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>
1024
- <div class="ttc" id="classSVF_1_1TCT_html_a1b3872361dc17aaea359db8ce0cc2431"><div class="ttname"><a href="classSVF_1_1TCT.html#a1b3872361dc17aaea359db8ce0cc2431">SVF::TCT::inRecurJoinSites</a></div><div class="ttdeci">InstSet inRecurJoinSites</div><div class="ttdoc">Fork or Join sites in recursions. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00550">TCT.h:550</a></div></div>
1024
+ <div class="ttc" id="classSVF_1_1TCT_html_a1b3872361dc17aaea359db8ce0cc2431"><div class="ttname"><a href="classSVF_1_1TCT.html#a1b3872361dc17aaea359db8ce0cc2431">SVF::TCT::inRecurJoinSites</a></div><div class="ttdeci">InstSet inRecurJoinSites</div><div class="ttdoc">Fork or Join sites in recursions. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00572">TCT.h:572</a></div></div>
1025
1025
  <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>
1026
- <div class="ttc" id="classSVF_1_1TCT_html_a5b1f44ffa732607a7800728befa5bc57"><div class="ttname"><a href="classSVF_1_1TCT.html#a5b1f44ffa732607a7800728befa5bc57">SVF::TCT::joinSiteToLoopMap</a></div><div class="ttdeci">InstToLoopMap joinSiteToLoopMap</div><div class="ttdoc">map an inloop join to its loop class </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00549">TCT.h:549</a></div></div>
1026
+ <div class="ttc" id="classSVF_1_1TCT_html_a5b1f44ffa732607a7800728befa5bc57"><div class="ttname"><a href="classSVF_1_1TCT.html#a5b1f44ffa732607a7800728befa5bc57">SVF::TCT::joinSiteToLoopMap</a></div><div class="ttdeci">InstToLoopMap joinSiteToLoopMap</div><div class="ttdoc">map an inloop join to its loop class </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00571">TCT.h:571</a></div></div>
1027
1027
  </div><!-- fragment -->
1028
1028
  </div>
1029
1029
  </div>
@@ -1052,15 +1052,15 @@ Additional Inherited Members</h2></td></tr>
1052
1052
  <p>Collect multi-forked threads whose 1, cxt is in loop or recursion; 2, parent thread is a multi-forked thread.</p>
1053
1053
  <p>Collect all multi-forked threads </p>
1054
1054
 
1055
- <p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#l00186">186</a> of file <a class="el" href="TCT_8cpp_source.html">TCT.cpp</a>.</p>
1056
- <div class="fragment"><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160;{</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <span class="keywordflow">if</span> (this-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a38122734cbe71551a420dfb7fee2012e">nodeNum</a> == 0 )</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160;</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <a class="code" href="classSVF_1_1FIFOWorkList.html">FIFOWorkList&lt;TCTNode*&gt;</a> worklist;</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">push</a>(<a class="code" href="classSVF_1_1TCT.html#a7b4ad0b052e1f8b6869733eef15f4e4d">getTCTNode</a>(0));</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="keywordflow">while</span>(!worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#a7056704c224dfb4b57287fe90c004aa8">empty</a>())</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; {</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <a class="code" href="classSVF_1_1TCTNode.html">TCTNode</a>* node = worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#a8fa72918fce7e9c0b2dc34b683a797c6">pop</a>();</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtThread.html">CxtThread</a> &amp;ct = node-&gt;<a class="code" href="classSVF_1_1TCTNode.html#a21591b19f6a9267151c31178f9543ee6">getCxtThread</a>();</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <span class="keywordflow">if</span>(ct.<a class="code" href="classSVF_1_1CxtThread.html#a54c95794963cb5a478db7c49c1b8c428">isIncycle</a>() || ct.<a class="code" href="classSVF_1_1CxtThread.html#a39230596cd1c927353eaaee071eb16c6">isInloop</a>())</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; {</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; node-&gt;<a class="code" href="classSVF_1_1TCTNode.html#a0fafde34cdffde6d38bb9efca9b7a9a1">setMultiforked</a>(<span class="keyword">true</span>);</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; }</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; {</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="keywordflow">for</span> (TCT::ThreadCreateEdgeSet::const_iterator it = node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">getInEdges</a>().begin(), eit = node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">getInEdges</a>().end(); it != eit;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; ++it)</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; {</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <span class="keywordflow">if</span> ((*it)-&gt;getSrcNode()-&gt;isMultiforked())</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; node-&gt;<a class="code" href="classSVF_1_1TCTNode.html#a0fafde34cdffde6d38bb9efca9b7a9a1">setMultiforked</a>(<span class="keyword">true</span>);</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; }</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; }</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keywordflow">for</span> (TCT::ThreadCreateEdgeSet::const_iterator it = node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a2d9cd758d6f8c5189d9b90b74f43e009">getOutEdges</a>().begin(), eit = node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a2d9cd758d6f8c5189d9b90b74f43e009">getOutEdges</a>().end(); it != eit;</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; ++it)</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; {</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">push</a>((*it)-&gt;getDstNode());</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; }</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; }</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;}</div><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>
1055
+ <p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#l00209">209</a> of file <a class="el" href="TCT_8cpp_source.html">TCT.cpp</a>.</p>
1056
+ <div class="fragment"><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;{</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <span class="keywordflow">if</span> (this-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a38122734cbe71551a420dfb7fee2012e">nodeNum</a> == 0 )</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160;</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <a class="code" href="classSVF_1_1FIFOWorkList.html">FIFOWorkList&lt;TCTNode*&gt;</a> worklist;</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">push</a>(<a class="code" href="classSVF_1_1TCT.html#a7b4ad0b052e1f8b6869733eef15f4e4d">getTCTNode</a>(0));</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160;</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <span class="keywordflow">while</span>(!worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#a7056704c224dfb4b57287fe90c004aa8">empty</a>())</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; {</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <a class="code" href="classSVF_1_1TCTNode.html">TCTNode</a>* node = worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#a8fa72918fce7e9c0b2dc34b683a797c6">pop</a>();</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtThread.html">CxtThread</a> &amp;ct = node-&gt;<a class="code" href="classSVF_1_1TCTNode.html#a21591b19f6a9267151c31178f9543ee6">getCxtThread</a>();</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <span class="keywordflow">if</span>(ct.<a class="code" href="classSVF_1_1CxtThread.html#a54c95794963cb5a478db7c49c1b8c428">isIncycle</a>() || ct.<a class="code" href="classSVF_1_1CxtThread.html#a39230596cd1c927353eaaee071eb16c6">isInloop</a>())</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; {</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; node-&gt;<a class="code" href="classSVF_1_1TCTNode.html#a0fafde34cdffde6d38bb9efca9b7a9a1">setMultiforked</a>(<span class="keyword">true</span>);</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; }</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; {</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keywordflow">for</span> (TCT::ThreadCreateEdgeSet::const_iterator it = node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">getInEdges</a>().begin(), eit = node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">getInEdges</a>().end(); it != eit;</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; ++it)</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; {</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <span class="keywordflow">if</span> ((*it)-&gt;getSrcNode()-&gt;isMultiforked())</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; node-&gt;<a class="code" href="classSVF_1_1TCTNode.html#a0fafde34cdffde6d38bb9efca9b7a9a1">setMultiforked</a>(<span class="keyword">true</span>);</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; }</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; }</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="keywordflow">for</span> (TCT::ThreadCreateEdgeSet::const_iterator it = node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a2d9cd758d6f8c5189d9b90b74f43e009">getOutEdges</a>().begin(), eit = node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a2d9cd758d6f8c5189d9b90b74f43e009">getOutEdges</a>().end(); it != eit;</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; ++it)</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; {</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">push</a>((*it)-&gt;getDstNode());</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; }</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; }</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;}</div><div class="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>
1057
1057
  <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>
1058
1058
  <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>
1059
1059
  <div class="ttc" id="classSVF_1_1GenericGraph_html_a38122734cbe71551a420dfb7fee2012e"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a38122734cbe71551a420dfb7fee2012e">SVF::GenericGraph::nodeNum</a></div><div class="ttdeci">u32_t nodeNum</div><div class="ttdoc">total num of edge </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00441">GenericGraph.h:441</a></div></div>
1060
- <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>
1061
- <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>
1062
- <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>
1063
- <div class="ttc" id="classSVF_1_1TCTNode_html_a0fafde34cdffde6d38bb9efca9b7a9a1"><div class="ttname"><a href="classSVF_1_1TCTNode.html#a0fafde34cdffde6d38bb9efca9b7a9a1">SVF::TCTNode::setMultiforked</a></div><div class="ttdeci">void setMultiforked(bool value)</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00096">TCT.h:96</a></div></div>
1060
+ <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>
1061
+ <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>
1062
+ <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>
1063
+ <div class="ttc" id="classSVF_1_1TCTNode_html_a0fafde34cdffde6d38bb9efca9b7a9a1"><div class="ttname"><a href="classSVF_1_1TCTNode.html#a0fafde34cdffde6d38bb9efca9b7a9a1">SVF::TCTNode::setMultiforked</a></div><div class="ttdeci">void setMultiforked(bool value)</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00118">TCT.h:118</a></div></div>
1064
1064
  <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>
1065
1065
  <div class="ttc" id="classSVF_1_1GenericNode_html_a2d9cd758d6f8c5189d9b90b74f43e009"><div class="ttname"><a href="classSVF_1_1GenericNode.html#a2d9cd758d6f8c5189d9b90b74f43e009">SVF::GenericNode::getOutEdges</a></div><div class="ttdeci">const GEdgeSetTy &amp; getOutEdges() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00182">GenericGraph.h:182</a></div></div>
1066
1066
  <div class="ttc" id="classSVF_1_1CxtThread_html_a39230596cd1c927353eaaee071eb16c6"><div class="ttname"><a href="classSVF_1_1CxtThread.html#a39230596cd1c927353eaaee071eb16c6">SVF::CxtThread::isInloop</a></div><div class="ttdeci">bool isInloop() const</div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00263">CxtStmt.h:263</a></div></div>
@@ -1095,8 +1095,8 @@ Additional Inherited Members</h2></td></tr>
1095
1095
 
1096
1096
  <p>Clean up memory. </p>
1097
1097
 
1098
- <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00533">533</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
1099
- <div class="fragment"><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; {</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1TCT.html#a30662928bafc97c1e7b123270ca69980">tcgSCC</a>)</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; <span class="keyword">delete</span> <a class="code" href="classSVF_1_1TCT.html#a30662928bafc97c1e7b123270ca69980">tcgSCC</a>;</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; <a class="code" href="classSVF_1_1TCT.html#a30662928bafc97c1e7b123270ca69980">tcgSCC</a>=<span class="keyword">nullptr</span>;</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; }</div><div class="ttc" id="classSVF_1_1TCT_html_a30662928bafc97c1e7b123270ca69980"><div class="ttname"><a href="classSVF_1_1TCT.html#a30662928bafc97c1e7b123270ca69980">SVF::TCT::tcgSCC</a></div><div class="ttdeci">ThreadCallGraphSCC * tcgSCC</div><div class="ttdoc">Procedures we care about during call graph traversing when creating TCT. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00542">TCT.h:542</a></div></div>
1098
+ <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00555">555</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
1099
+ <div class="fragment"><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; {</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1TCT.html#a30662928bafc97c1e7b123270ca69980">tcgSCC</a>)</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; <span class="keyword">delete</span> <a class="code" href="classSVF_1_1TCT.html#a30662928bafc97c1e7b123270ca69980">tcgSCC</a>;</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; <a class="code" href="classSVF_1_1TCT.html#a30662928bafc97c1e7b123270ca69980">tcgSCC</a>=<span class="keyword">nullptr</span>;</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; }</div><div class="ttc" id="classSVF_1_1TCT_html_a30662928bafc97c1e7b123270ca69980"><div class="ttname"><a href="classSVF_1_1TCT.html#a30662928bafc97c1e7b123270ca69980">SVF::TCT::tcgSCC</a></div><div class="ttdeci">ThreadCallGraphSCC * tcgSCC</div><div class="ttdoc">Procedures we care about during call graph traversing when creating TCT. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00564">TCT.h:564</a></div></div>
1100
1100
  </div><!-- fragment -->
1101
1101
  </div>
1102
1102
  </div>
@@ -1119,8 +1119,8 @@ Additional Inherited Members</h2></td></tr>
1119
1119
  <p>Dump the graph. </p>
1120
1120
  <p>Dump call graph into dot file </p>
1121
1121
 
1122
- <p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#l00546">546</a> of file <a class="el" href="TCT_8cpp_source.html">TCT.cpp</a>.</p>
1123
- <div class="fragment"><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160;{</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a19758db674de8af8a1c80734a1c0fac8">Options::TCTDotGraph</a>)</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; <a class="code" href="classllvm_1_1GraphPrinter.html#af6ed328e74882d2b5e2b4039cb836928">GraphPrinter::WriteGraphToFile</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>(), filename, <span class="keyword">this</span>);</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160;}</div><div class="ttc" id="classllvm_1_1GraphPrinter_html_af6ed328e74882d2b5e2b4039cb836928"><div class="ttname"><a href="classllvm_1_1GraphPrinter.html#af6ed328e74882d2b5e2b4039cb836928">llvm::GraphPrinter::WriteGraphToFile</a></div><div class="ttdeci">static void WriteGraphToFile(SVF::OutStream &amp;O, const std::string &amp;GraphName, const GraphType &amp;GT, bool simple=false)</div><div class="ttdef"><b>Definition:</b> <a href="GraphPrinter_8h_source.html#l00058">GraphPrinter.h:58</a></div></div>
1122
+ <p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#l00569">569</a> of file <a class="el" href="TCT_8cpp_source.html">TCT.cpp</a>.</p>
1123
+ <div class="fragment"><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160;{</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a19758db674de8af8a1c80734a1c0fac8">Options::TCTDotGraph</a>)</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; <a class="code" href="classllvm_1_1GraphPrinter.html#af6ed328e74882d2b5e2b4039cb836928">GraphPrinter::WriteGraphToFile</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>(), filename, <span class="keyword">this</span>);</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160;}</div><div class="ttc" id="classllvm_1_1GraphPrinter_html_af6ed328e74882d2b5e2b4039cb836928"><div class="ttname"><a href="classllvm_1_1GraphPrinter.html#af6ed328e74882d2b5e2b4039cb836928">llvm::GraphPrinter::WriteGraphToFile</a></div><div class="ttdeci">static void WriteGraphToFile(SVF::OutStream &amp;O, const std::string &amp;GraphName, const GraphType &amp;GT, bool simple=false)</div><div class="ttdef"><b>Definition:</b> <a href="GraphPrinter_8h_source.html#l00058">GraphPrinter.h:58</a></div></div>
1124
1124
  <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>
1125
1125
  <div class="ttc" id="classSVF_1_1Options_html_a19758db674de8af8a1c80734a1c0fac8"><div class="ttname"><a href="classSVF_1_1Options.html#a19758db674de8af8a1c80734a1c0fac8">SVF::Options::TCTDotGraph</a></div><div class="ttdeci">static const llvm::cl::opt&lt; bool &gt; TCTDotGraph</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00195">Options.h:195</a></div></div>
1126
1126
  </div><!-- fragment -->
@@ -1145,10 +1145,10 @@ Additional Inherited Members</h2></td></tr>
1145
1145
  <p>Dump calling context. </p>
1146
1146
  <p>Dump calling context information </p>
1147
1147
 
1148
- <p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#l00528">528</a> of file <a class="el" href="TCT_8cpp_source.html">TCT.cpp</a>.</p>
1149
- <div class="fragment"><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160;{</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;[:&quot;</span>;</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; <span class="keywordflow">for</span>(CallStrCxt::const_iterator it = cxt.begin(), eit = cxt.end(); it!=eit; ++it)</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; {</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; &#39; &quot;</span>&lt;&lt; *it &lt;&lt; <span class="stringliteral">&quot; &#39; &quot;</span>;</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; rawstr &lt;&lt; *(<a class="code" href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">tcg</a>-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#a16e0017ad3a2d36d7efbc4383e394154">getCallSite</a>(*it)-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a674753d5ca0fbe28674acb25291f2bcf">getCallSite</a>());</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; call &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">tcg</a>-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#a16e0017ad3a2d36d7efbc4383e394154">getCallSite</a>(*it)-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a18f4077d42b23c3fed35efc793b6102e">getCaller</a>()-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a2409c01221b9a6632655cee43d1b35e4">getName</a>() &lt;&lt; <span class="stringliteral">&quot;--&gt;&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">tcg</a>-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#aacd5f35171717cb4d758c17bef828a0f">getCalleeOfCallSite</a>(*it)-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a2409c01221b9a6632655cee43d1b35e4">getName</a>() &lt;&lt; <span class="stringliteral">&quot;, \n&quot;</span>;</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; }</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; ]&quot;</span>;</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;max cxt = &quot;</span> &lt;&lt; cxt.size() &lt;&lt; rawstr.str() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160;}</div><div class="ttc" id="classSVF_1_1PTACallGraph_html_a16e0017ad3a2d36d7efbc4383e394154"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#a16e0017ad3a2d36d7efbc4383e394154">SVF::PTACallGraph::getCallSite</a></div><div class="ttdeci">const CallICFGNode * getCallSite(CallSiteID id) const</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00363">PTACallGraph.h:363</a></div></div>
1148
+ <p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#l00551">551</a> of file <a class="el" href="TCT_8cpp_source.html">TCT.cpp</a>.</p>
1149
+ <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="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;[:&quot;</span>;</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; <span class="keywordflow">for</span>(CallStrCxt::const_iterator it = cxt.begin(), eit = cxt.end(); it!=eit; ++it)</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; {</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; &#39; &quot;</span>&lt;&lt; *it &lt;&lt; <span class="stringliteral">&quot; &#39; &quot;</span>;</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; rawstr &lt;&lt; *(<a class="code" href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">tcg</a>-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#a16e0017ad3a2d36d7efbc4383e394154">getCallSite</a>(*it)-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a674753d5ca0fbe28674acb25291f2bcf">getCallSite</a>());</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; call &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">tcg</a>-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#a16e0017ad3a2d36d7efbc4383e394154">getCallSite</a>(*it)-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a18f4077d42b23c3fed35efc793b6102e">getCaller</a>()-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a2409c01221b9a6632655cee43d1b35e4">getName</a>() &lt;&lt; <span class="stringliteral">&quot;--&gt;&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">tcg</a>-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#aacd5f35171717cb4d758c17bef828a0f">getCalleeOfCallSite</a>(*it)-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a2409c01221b9a6632655cee43d1b35e4">getName</a>() &lt;&lt; <span class="stringliteral">&quot;, \n&quot;</span>;</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; }</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; ]&quot;</span>;</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;max cxt = &quot;</span> &lt;&lt; cxt.size() &lt;&lt; rawstr.str() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160;}</div><div class="ttc" id="classSVF_1_1PTACallGraph_html_a16e0017ad3a2d36d7efbc4383e394154"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#a16e0017ad3a2d36d7efbc4383e394154">SVF::PTACallGraph::getCallSite</a></div><div class="ttdeci">const CallICFGNode * getCallSite(CallSiteID id) const</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00363">PTACallGraph.h:363</a></div></div>
1150
1150
  <div class="ttc" id="classSVF_1_1PTACallGraph_html_aacd5f35171717cb4d758c17bef828a0f"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#aacd5f35171717cb4d758c17bef828a0f">SVF::PTACallGraph::getCalleeOfCallSite</a></div><div class="ttdeci">const SVFFunction * getCalleeOfCallSite(CallSiteID id) const</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00371">PTACallGraph.h:371</a></div></div>
1151
- <div class="ttc" id="classSVF_1_1TCT_html_ac9ddd6559e818f37c018ed5435182363"><div class="ttname"><a href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">SVF::TCT::tcg</a></div><div class="ttdeci">ThreadCallGraph * tcg</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00396">TCT.h:396</a></div></div>
1151
+ <div class="ttc" id="classSVF_1_1TCT_html_ac9ddd6559e818f37c018ed5435182363"><div class="ttname"><a href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">SVF::TCT::tcg</a></div><div class="ttdeci">ThreadCallGraph * tcg</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00418">TCT.h:418</a></div></div>
1152
1152
  <div class="ttc" id="namespaceSVF_html_a726981481ac082dcda3e4921416b65a0"><div class="ttname"><a href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">SVF::raw_string_ostream</a></div><div class="ttdeci">llvm::raw_string_ostream raw_string_ostream</div><div class="ttdoc">LLVM outputs. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00082">BasicTypes.h:82</a></div></div>
1153
1153
  <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>
1154
1154
  <div class="ttc" id="classSVF_1_1SVFValue_html_a2409c01221b9a6632655cee43d1b35e4"><div class="ttname"><a href="classSVF_1_1SVFValue.html#a2409c01221b9a6632655cee43d1b35e4">SVF::SVFValue::getName</a></div><div class="ttdeci">const std::string getName() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00253">SVFBasicTypes.h:253</a></div></div>
@@ -1184,11 +1184,11 @@ Additional Inherited Members</h2></td></tr>
1184
1184
 
1185
1185
  <p>Get all ancestor threads. </p>
1186
1186
 
1187
- <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00290">290</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
1188
- <div class="fragment"><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; {</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <a class="code" href="namespaceSVF.html#aa7b6a13e52671de8524b130738aeb564">NodeBS</a> tds;</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1TCT.html#a6855a3a8a98591e58dba07047f7705ce">hasParentThread</a>(tid) == <span class="keyword">false</span>)</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <span class="keywordflow">return</span> tds;</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160;</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; FIFOWorkList&lt;NodeID&gt; worklist;</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; worklist.push(<a class="code" href="classSVF_1_1TCT.html#a516578af1f8666ff672e6611e61d7152">getParentThread</a>(tid));</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160;</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <span class="keywordflow">while</span>(!worklist.empty())</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; {</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> t = worklist.pop();</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <span class="keywordflow">if</span>(tds.test_and_set(t))</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; {</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1TCT.html#a6855a3a8a98591e58dba07047f7705ce">hasParentThread</a>(t))</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; worklist.push(<a class="code" href="classSVF_1_1TCT.html#a516578af1f8666ff672e6611e61d7152">getParentThread</a>(t));</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; }</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; }</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <span class="keywordflow">return</span> tds;</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; }</div><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>
1187
+ <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00312">312</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
1188
+ <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; <a class="code" href="namespaceSVF.html#aa7b6a13e52671de8524b130738aeb564">NodeBS</a> tds;</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1TCT.html#a6855a3a8a98591e58dba07047f7705ce">hasParentThread</a>(tid) == <span class="keyword">false</span>)</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <span class="keywordflow">return</span> tds;</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160;</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; FIFOWorkList&lt;NodeID&gt; worklist;</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; worklist.push(<a class="code" href="classSVF_1_1TCT.html#a516578af1f8666ff672e6611e61d7152">getParentThread</a>(tid));</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160;</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <span class="keywordflow">while</span>(!worklist.empty())</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; {</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> t = worklist.pop();</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; <span class="keywordflow">if</span>(tds.test_and_set(t))</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; {</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1TCT.html#a6855a3a8a98591e58dba07047f7705ce">hasParentThread</a>(t))</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; worklist.push(<a class="code" href="classSVF_1_1TCT.html#a516578af1f8666ff672e6611e61d7152">getParentThread</a>(t));</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; }</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; }</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; <span class="keywordflow">return</span> tds;</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; }</div><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>
1189
1189
  <div class="ttc" id="namespaceSVF_html_aa7b6a13e52671de8524b130738aeb564"><div class="ttname"><a href="namespaceSVF.html#aa7b6a13e52671de8524b130738aeb564">SVF::NodeBS</a></div><div class="ttdeci">SparseBitVector NodeBS</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00096">SVFBasicTypes.h:96</a></div></div>
1190
- <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>
1191
- <div class="ttc" id="classSVF_1_1TCT_html_a6855a3a8a98591e58dba07047f7705ce"><div class="ttname"><a href="classSVF_1_1TCT.html#a6855a3a8a98591e58dba07047f7705ce">SVF::TCT::hasParentThread</a></div><div class="ttdeci">bool hasParentThread(NodeID tid) const</div><div class="ttdoc">Get parent and sibling threads. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00275">TCT.h:275</a></div></div>
1190
+ <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>
1191
+ <div class="ttc" id="classSVF_1_1TCT_html_a6855a3a8a98591e58dba07047f7705ce"><div class="ttname"><a href="classSVF_1_1TCT.html#a6855a3a8a98591e58dba07047f7705ce">SVF::TCT::hasParentThread</a></div><div class="ttdeci">bool hasParentThread(NodeID tid) const</div><div class="ttdoc">Get parent and sibling threads. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00297">TCT.h:297</a></div></div>
1192
1192
  </div><!-- fragment -->
1193
1193
  </div>
1194
1194
  </div>
@@ -1218,9 +1218,9 @@ Additional Inherited Members</h2></td></tr>
1218
1218
 
1219
1219
  <p>Get <a class="el" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a> given inst. </p>
1220
1220
 
1221
- <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00150">150</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
1222
- <div class="fragment"><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; {</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1TCT.html#a980de0593e41d18d2716aa5120d35d04">pta</a>-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#ade879ee99cae01632d567d3736dcad9e">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#adc66b547720b9271e6805edea0b9d01f">getCallICFGNode</a>(inst);</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; }</div><div class="ttc" id="classSVF_1_1ICFG_html_adc66b547720b9271e6805edea0b9d01f"><div class="ttname"><a href="classSVF_1_1ICFG.html#adc66b547720b9271e6805edea0b9d01f">SVF::ICFG::getCallICFGNode</a></div><div class="ttdeci">CallICFGNode * getCallICFGNode(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00239">ICFG.cpp:239</a></div></div>
1223
- <div class="ttc" id="classSVF_1_1TCT_html_a980de0593e41d18d2716aa5120d35d04"><div class="ttname"><a href="classSVF_1_1TCT.html#a980de0593e41d18d2716aa5120d35d04">SVF::TCT::pta</a></div><div class="ttdeci">PointerAnalysis * pta</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00397">TCT.h:397</a></div></div>
1221
+ <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00172">172</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
1222
+ <div class="fragment"><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; {</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1TCT.html#a980de0593e41d18d2716aa5120d35d04">pta</a>-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#ade879ee99cae01632d567d3736dcad9e">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#adc66b547720b9271e6805edea0b9d01f">getCallICFGNode</a>(inst);</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; }</div><div class="ttc" id="classSVF_1_1ICFG_html_adc66b547720b9271e6805edea0b9d01f"><div class="ttname"><a href="classSVF_1_1ICFG.html#adc66b547720b9271e6805edea0b9d01f">SVF::ICFG::getCallICFGNode</a></div><div class="ttdeci">CallICFGNode * getCallICFGNode(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00239">ICFG.cpp:239</a></div></div>
1223
+ <div class="ttc" id="classSVF_1_1TCT_html_a980de0593e41d18d2716aa5120d35d04"><div class="ttname"><a href="classSVF_1_1TCT.html#a980de0593e41d18d2716aa5120d35d04">SVF::TCT::pta</a></div><div class="ttdeci">PointerAnalysis * pta</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00419">TCT.h:419</a></div></div>
1224
1224
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_ade879ee99cae01632d567d3736dcad9e"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#ade879ee99cae01632d567d3736dcad9e">SVF::PointerAnalysis::getICFG</a></div><div class="ttdeci">ICFG * getICFG() const</div><div class="ttdoc">Get ICFG. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00164">PointerAnalysis.h:164</a></div></div>
1225
1225
  </div><!-- fragment -->
1226
1226
  </div>
@@ -1251,8 +1251,8 @@ Additional Inherited Members</h2></td></tr>
1251
1251
 
1252
1252
  <p>Get children and parent nodes. </p>
1253
1253
 
1254
- <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00187">187</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
1255
- <div class="fragment"><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; {</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="keywordflow">return</span> node-&gt;OutEdgeBegin();</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; }</div></div><!-- fragment -->
1254
+ <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00209">209</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
1255
+ <div class="fragment"><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; {</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <span class="keywordflow">return</span> node-&gt;OutEdgeBegin();</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; }</div></div><!-- fragment -->
1256
1256
  </div>
1257
1257
  </div>
1258
1258
  <a id="af47837e30a80e8d6684f3ee6001afb7a"></a>
@@ -1279,8 +1279,8 @@ Additional Inherited Members</h2></td></tr>
1279
1279
  </table>
1280
1280
  </div><div class="memdoc">
1281
1281
 
1282
- <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00191">191</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
1283
- <div class="fragment"><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; {</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keywordflow">return</span> node-&gt;OutEdgeEnd();</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; }</div></div><!-- fragment -->
1282
+ <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00213">213</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
1283
+ <div class="fragment"><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; {</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <span class="keywordflow">return</span> node-&gt;OutEdgeEnd();</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; }</div></div><!-- fragment -->
1284
1284
  </div>
1285
1285
  </div>
1286
1286
  <a id="ab4bc72ca330b315df06f2d4d2c1a7b4f"></a>
@@ -1309,8 +1309,8 @@ Additional Inherited Members</h2></td></tr>
1309
1309
 
1310
1310
  <p>get the context of a thread at its spawning site (fork site) </p>
1311
1311
 
1312
- <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00330">330</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
1313
- <div class="fragment"><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; {</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; CxtThreadToForkCxt::const_iterator it = <a class="code" href="classSVF_1_1TCT.html#aea88fdb40c28724546f5903d3a73999a">ctToForkCxtMap</a>.find(ct);</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; assert(it!=<a class="code" href="classSVF_1_1TCT.html#aea88fdb40c28724546f5903d3a73999a">ctToForkCxtMap</a>.end() &amp;&amp; <span class="stringliteral">&quot;Cxt Thread not found!!&quot;</span>);</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; }</div><div class="ttc" id="classSVF_1_1TCT_html_aea88fdb40c28724546f5903d3a73999a"><div class="ttname"><a href="classSVF_1_1TCT.html#aea88fdb40c28724546f5903d3a73999a">SVF::TCT::ctToForkCxtMap</a></div><div class="ttdeci">CxtThreadToForkCxt ctToForkCxtMap</div><div class="ttdoc">Map a ctp to its graph node. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00546">TCT.h:546</a></div></div>
1312
+ <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00352">352</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
1313
+ <div class="fragment"><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; {</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; CxtThreadToForkCxt::const_iterator it = <a class="code" href="classSVF_1_1TCT.html#aea88fdb40c28724546f5903d3a73999a">ctToForkCxtMap</a>.find(ct);</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; assert(it!=<a class="code" href="classSVF_1_1TCT.html#aea88fdb40c28724546f5903d3a73999a">ctToForkCxtMap</a>.end() &amp;&amp; <span class="stringliteral">&quot;Cxt Thread not found!!&quot;</span>);</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; }</div><div class="ttc" id="classSVF_1_1TCT_html_aea88fdb40c28724546f5903d3a73999a"><div class="ttname"><a href="classSVF_1_1TCT.html#aea88fdb40c28724546f5903d3a73999a">SVF::TCT::ctToForkCxtMap</a></div><div class="ttdeci">CxtThreadToForkCxt ctToForkCxtMap</div><div class="ttdoc">Map a ctp to its graph node. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00568">TCT.h:568</a></div></div>
1314
1314
  </div><!-- fragment -->
1315
1315
  </div>
1316
1316
  </div>
@@ -1332,9 +1332,9 @@ Additional Inherited Members</h2></td></tr>
1332
1332
 
1333
1333
  <p>Get dominator for a function. </p>
1334
1334
 
1335
- <p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#l00356">356</a> of file <a class="el" href="TCT_8cpp_source.html">TCT.cpp</a>.</p>
1336
- <div class="fragment"><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160;{</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1TCT.html#ae64d6203b41c92d4ca617b8e976b88b2">loopInfoBuilder</a>.<a class="code" href="classSVF_1_1PTACFInfoBuilder.html#afb3864bae4ac95c7d3b731634c1abdab">getDT</a>(fun);</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160;}</div><div class="ttc" id="classSVF_1_1PTACFInfoBuilder_html_afb3864bae4ac95c7d3b731634c1abdab"><div class="ttname"><a href="classSVF_1_1PTACFInfoBuilder.html#afb3864bae4ac95c7d3b731634c1abdab">SVF::PTACFInfoBuilder::getDT</a></div><div class="ttdeci">DominatorTree * getDT(const Function *f)</div><div class="ttdoc">Get dominator tree of a function. </div><div class="ttdef"><b>Definition:</b> <a href="DataFlowUtil_8cpp_source.html#l00111">DataFlowUtil.cpp:111</a></div></div>
1337
- <div class="ttc" id="classSVF_1_1TCT_html_ae64d6203b41c92d4ca617b8e976b88b2"><div class="ttname"><a href="classSVF_1_1TCT.html#ae64d6203b41c92d4ca617b8e976b88b2">SVF::TCT::loopInfoBuilder</a></div><div class="ttdeci">PTACFInfoBuilder loopInfoBuilder</div><div class="ttdoc">Map a CxtThread to its start routine function. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00548">TCT.h:548</a></div></div>
1335
+ <p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#l00379">379</a> of file <a class="el" href="TCT_8cpp_source.html">TCT.cpp</a>.</p>
1336
+ <div class="fragment"><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160;{</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1TCT.html#ae64d6203b41c92d4ca617b8e976b88b2">loopInfoBuilder</a>.<a class="code" href="classSVF_1_1PTACFInfoBuilder.html#afb3864bae4ac95c7d3b731634c1abdab">getDT</a>(fun);</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160;}</div><div class="ttc" id="classSVF_1_1PTACFInfoBuilder_html_afb3864bae4ac95c7d3b731634c1abdab"><div class="ttname"><a href="classSVF_1_1PTACFInfoBuilder.html#afb3864bae4ac95c7d3b731634c1abdab">SVF::PTACFInfoBuilder::getDT</a></div><div class="ttdeci">DominatorTree * getDT(const Function *f)</div><div class="ttdoc">Get dominator tree of a function. </div><div class="ttdef"><b>Definition:</b> <a href="DataFlowUtil_8cpp_source.html#l00111">DataFlowUtil.cpp:111</a></div></div>
1337
+ <div class="ttc" id="classSVF_1_1TCT_html_ae64d6203b41c92d4ca617b8e976b88b2"><div class="ttname"><a href="classSVF_1_1TCT.html#ae64d6203b41c92d4ca617b8e976b88b2">SVF::TCT::loopInfoBuilder</a></div><div class="ttdeci">PTACFInfoBuilder loopInfoBuilder</div><div class="ttdoc">Map a CxtThread to its start routine function. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00570">TCT.h:570</a></div></div>
1338
1338
  </div><!-- fragment -->
1339
1339
  </div>
1340
1340
  </div>
@@ -1363,8 +1363,8 @@ Additional Inherited Members</h2></td></tr>
1363
1363
 
1364
1364
  <p>Get marked candidate functions. </p>
1365
1365
 
1366
- <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00212">212</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
1367
- <div class="fragment"><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; {</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1TCT.html#a140eaf9440ae9d52dbfb659967aa449a">entryFuncSet</a>;</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; }</div><div class="ttc" id="classSVF_1_1TCT_html_a140eaf9440ae9d52dbfb659967aa449a"><div class="ttname"><a href="classSVF_1_1TCT.html#a140eaf9440ae9d52dbfb659967aa449a">SVF::TCT::entryFuncSet</a></div><div class="ttdeci">FunSet entryFuncSet</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00540">TCT.h:540</a></div></div>
1366
+ <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00234">234</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
1367
+ <div class="fragment"><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; {</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1TCT.html#a140eaf9440ae9d52dbfb659967aa449a">entryFuncSet</a>;</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; }</div><div class="ttc" id="classSVF_1_1TCT_html_a140eaf9440ae9d52dbfb659967aa449a"><div class="ttname"><a href="classSVF_1_1TCT.html#a140eaf9440ae9d52dbfb659967aa449a">SVF::TCT::entryFuncSet</a></div><div class="ttdeci">FunSet entryFuncSet</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00562">TCT.h:562</a></div></div>
1368
1368
  </div><!-- fragment -->
1369
1369
  </div>
1370
1370
  </div>
@@ -1403,11 +1403,11 @@ Additional Inherited Members</h2></td></tr>
1403
1403
  <p>Get call graph edge via nodes. </p>
1404
1404
  <p>get CallGraph edge via nodes </p>
1405
1405
 
1406
- <p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#l00584">584</a> of file <a class="el" href="TCT_8cpp_source.html">TCT.cpp</a>.</p>
1407
- <div class="fragment"><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160;{</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; <span class="keywordflow">for</span> (TCTEdge::ThreadCreateEdgeSet::const_iterator iter = src-&gt;<a class="code" href="classSVF_1_1GenericNode.html#aa4f103330118c8976bf95e4bf53416eb">OutEdgeBegin</a>(); iter != src-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a19a3366fd8a58290d0c740c46c3dcb3d">OutEdgeEnd</a>(); ++iter)</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; {</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; <a class="code" href="classSVF_1_1TCTEdge.html">TCTEdge</a>* edge = (*iter);</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; <span class="keywordflow">if</span> (edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == kind &amp;&amp; edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">getDstID</a>() == dst-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>())</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; <span class="keywordflow">return</span> edge;</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; }</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160;}</div><div class="ttc" id="classSVF_1_1GenericEdge_html_abe8525c542def8162b094c169a01993b"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">SVF::GenericEdge::getEdgeKind</a></div><div class="ttdeci">GEdgeKind getEdgeKind() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00081">GenericGraph.h:81</a></div></div>
1406
+ <p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#l00607">607</a> of file <a class="el" href="TCT_8cpp_source.html">TCT.cpp</a>.</p>
1407
+ <div class="fragment"><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160;{</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; <span class="keywordflow">for</span> (TCTEdge::ThreadCreateEdgeSet::const_iterator iter = src-&gt;<a class="code" href="classSVF_1_1GenericNode.html#aa4f103330118c8976bf95e4bf53416eb">OutEdgeBegin</a>(); iter != src-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a19a3366fd8a58290d0c740c46c3dcb3d">OutEdgeEnd</a>(); ++iter)</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; {</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; <a class="code" href="classSVF_1_1TCTEdge.html">TCTEdge</a>* edge = (*iter);</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; <span class="keywordflow">if</span> (edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == kind &amp;&amp; edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">getDstID</a>() == dst-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>())</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; <span class="keywordflow">return</span> edge;</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; }</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160;}</div><div class="ttc" id="classSVF_1_1GenericEdge_html_abe8525c542def8162b094c169a01993b"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">SVF::GenericEdge::getEdgeKind</a></div><div class="ttdeci">GEdgeKind getEdgeKind() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00081">GenericGraph.h:81</a></div></div>
1408
1408
  <div class="ttc" id="classSVF_1_1GenericEdge_html_ad9edb45e74ae675d9da82f5acf02d56e"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">SVF::GenericEdge::getDstID</a></div><div class="ttdeci">NodeID getDstID() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00077">GenericGraph.h:77</a></div></div>
1409
1409
  <div class="ttc" id="classSVF_1_1GenericNode_html_aa4f103330118c8976bf95e4bf53416eb"><div class="ttname"><a href="classSVF_1_1GenericNode.html#aa4f103330118c8976bf95e4bf53416eb">SVF::GenericNode::OutEdgeBegin</a></div><div class="ttdeci">iterator OutEdgeBegin()</div><div class="ttdoc">iterators </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00206">GenericGraph.h:206</a></div></div>
1410
- <div class="ttc" id="classSVF_1_1TCTEdge_html"><div class="ttname"><a href="classSVF_1_1TCTEdge.html">SVF::TCTEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00029">TCT.h:29</a></div></div>
1410
+ <div class="ttc" id="classSVF_1_1TCTEdge_html"><div class="ttname"><a href="classSVF_1_1TCTEdge.html">SVF::TCTEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00051">TCT.h:51</a></div></div>
1411
1411
  <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>
1412
1412
  <div class="ttc" id="classSVF_1_1GenericNode_html_a19a3366fd8a58290d0c740c46c3dcb3d"><div class="ttname"><a href="classSVF_1_1GenericNode.html#a19a3366fd8a58290d0c740c46c3dcb3d">SVF::GenericNode::OutEdgeEnd</a></div><div class="ttdeci">iterator OutEdgeEnd()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00210">GenericGraph.h:210</a></div></div>
1413
1413
  </div><!-- fragment -->
@@ -1439,11 +1439,11 @@ Additional Inherited Members</h2></td></tr>
1439
1439
 
1440
1440
  <p>Get loop for join site. </p>
1441
1441
 
1442
- <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00346">346</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
1443
- <div class="fragment"><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; {</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; assert(<a class="code" href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">tcg</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>(join) &amp;&amp; <span class="stringliteral">&quot;not a join site&quot;</span>);</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; InstToLoopMap::const_iterator it = <a class="code" href="classSVF_1_1TCT.html#a5b1f44ffa732607a7800728befa5bc57">joinSiteToLoopMap</a>.find(join);</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; <span class="keywordflow">if</span>(it!=<a class="code" href="classSVF_1_1TCT.html#a5b1f44ffa732607a7800728befa5bc57">joinSiteToLoopMap</a>.end())</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; }</div><div class="ttc" id="classSVF_1_1TCT_html_ac9ddd6559e818f37c018ed5435182363"><div class="ttname"><a href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">SVF::TCT::tcg</a></div><div class="ttdeci">ThreadCallGraph * tcg</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00396">TCT.h:396</a></div></div>
1442
+ <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00368">368</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
1443
+ <div class="fragment"><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; {</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; assert(<a class="code" href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">tcg</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>(join) &amp;&amp; <span class="stringliteral">&quot;not a join site&quot;</span>);</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; InstToLoopMap::const_iterator it = <a class="code" href="classSVF_1_1TCT.html#a5b1f44ffa732607a7800728befa5bc57">joinSiteToLoopMap</a>.find(join);</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <span class="keywordflow">if</span>(it!=<a class="code" href="classSVF_1_1TCT.html#a5b1f44ffa732607a7800728befa5bc57">joinSiteToLoopMap</a>.end())</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; }</div><div class="ttc" id="classSVF_1_1TCT_html_ac9ddd6559e818f37c018ed5435182363"><div class="ttname"><a href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">SVF::TCT::tcg</a></div><div class="ttdeci">ThreadCallGraph * tcg</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00418">TCT.h:418</a></div></div>
1444
1444
  <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>
1445
1445
  <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>
1446
- <div class="ttc" id="classSVF_1_1TCT_html_a5b1f44ffa732607a7800728befa5bc57"><div class="ttname"><a href="classSVF_1_1TCT.html#a5b1f44ffa732607a7800728befa5bc57">SVF::TCT::joinSiteToLoopMap</a></div><div class="ttdeci">InstToLoopMap joinSiteToLoopMap</div><div class="ttdoc">map an inloop join to its loop class </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00549">TCT.h:549</a></div></div>
1446
+ <div class="ttc" id="classSVF_1_1TCT_html_a5b1f44ffa732607a7800728befa5bc57"><div class="ttname"><a href="classSVF_1_1TCT.html#a5b1f44ffa732607a7800728befa5bc57">SVF::TCT::joinSiteToLoopMap</a></div><div class="ttdeci">InstToLoopMap joinSiteToLoopMap</div><div class="ttdoc">map an inloop join to its loop class </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00571">TCT.h:571</a></div></div>
1447
1447
  </div><!-- fragment -->
1448
1448
  </div>
1449
1449
  </div>
@@ -1466,10 +1466,10 @@ Additional Inherited Members</h2></td></tr>
1466
1466
  <p>Get loop for an instruction. </p>
1467
1467
  <p>Get loop for fork/join site </p>
1468
1468
 
1469
- <p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#l00349">349</a> of file <a class="el" href="TCT_8cpp_source.html">TCT.cpp</a>.</p>
1470
- <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="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun = inst-&gt;getParent()-&gt;getParent();</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1TCT.html#ae64d6203b41c92d4ca617b8e976b88b2">loopInfoBuilder</a>.<a class="code" href="classSVF_1_1PTACFInfoBuilder.html#a418e6009760a7c9a048d2ffd9cd29956">getLoopInfo</a>(fun)-&gt;getLoopFor(inst-&gt;getParent());</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160;}</div><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>
1469
+ <p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#l00372">372</a> of file <a class="el" href="TCT_8cpp_source.html">TCT.cpp</a>.</p>
1470
+ <div class="fragment"><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160;{</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun = inst-&gt;getParent()-&gt;getParent();</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1TCT.html#ae64d6203b41c92d4ca617b8e976b88b2">loopInfoBuilder</a>.<a class="code" href="classSVF_1_1PTACFInfoBuilder.html#a418e6009760a7c9a048d2ffd9cd29956">getLoopInfo</a>(fun)-&gt;getLoopFor(inst-&gt;getParent());</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160;}</div><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>
1471
1471
  <div class="ttc" id="classSVF_1_1PTACFInfoBuilder_html_a418e6009760a7c9a048d2ffd9cd29956"><div class="ttname"><a href="classSVF_1_1PTACFInfoBuilder.html#a418e6009760a7c9a048d2ffd9cd29956">SVF::PTACFInfoBuilder::getLoopInfo</a></div><div class="ttdeci">LoopInfo * getLoopInfo(const Function *f)</div><div class="ttdoc">Get loop info of a function. </div><div class="ttdef"><b>Definition:</b> <a href="DataFlowUtil_8cpp_source.html#l00075">DataFlowUtil.cpp:75</a></div></div>
1472
- <div class="ttc" id="classSVF_1_1TCT_html_ae64d6203b41c92d4ca617b8e976b88b2"><div class="ttname"><a href="classSVF_1_1TCT.html#ae64d6203b41c92d4ca617b8e976b88b2">SVF::TCT::loopInfoBuilder</a></div><div class="ttdeci">PTACFInfoBuilder loopInfoBuilder</div><div class="ttdoc">Map a CxtThread to its start routine function. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00548">TCT.h:548</a></div></div>
1472
+ <div class="ttc" id="classSVF_1_1TCT_html_ae64d6203b41c92d4ca617b8e976b88b2"><div class="ttname"><a href="classSVF_1_1TCT.html#ae64d6203b41c92d4ca617b8e976b88b2">SVF::TCT::loopInfoBuilder</a></div><div class="ttdeci">PTACFInfoBuilder loopInfoBuilder</div><div class="ttdoc">Map a CxtThread to its start routine function. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00570">TCT.h:570</a></div></div>
1473
1473
  </div><!-- fragment -->
1474
1474
  </div>
1475
1475
  </div>
@@ -1492,10 +1492,10 @@ Additional Inherited Members</h2></td></tr>
1492
1492
  <p>Get loop for fork/join site. </p>
1493
1493
  <p>Get loop for fork/join site </p>
1494
1494
 
1495
- <p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#l00369">369</a> of file <a class="el" href="TCT_8cpp_source.html">TCT.cpp</a>.</p>
1496
- <div class="fragment"><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160;{</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun = bb-&gt;getParent();</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1TCT.html#ae64d6203b41c92d4ca617b8e976b88b2">loopInfoBuilder</a>.<a class="code" href="classSVF_1_1PTACFInfoBuilder.html#a418e6009760a7c9a048d2ffd9cd29956">getLoopInfo</a>(fun)-&gt;getLoopFor(bb);</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160;}</div><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>
1495
+ <p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#l00392">392</a> of file <a class="el" href="TCT_8cpp_source.html">TCT.cpp</a>.</p>
1496
+ <div class="fragment"><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160;{</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun = bb-&gt;getParent();</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1TCT.html#ae64d6203b41c92d4ca617b8e976b88b2">loopInfoBuilder</a>.<a class="code" href="classSVF_1_1PTACFInfoBuilder.html#a418e6009760a7c9a048d2ffd9cd29956">getLoopInfo</a>(fun)-&gt;getLoopFor(bb);</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160;}</div><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>
1497
1497
  <div class="ttc" id="classSVF_1_1PTACFInfoBuilder_html_a418e6009760a7c9a048d2ffd9cd29956"><div class="ttname"><a href="classSVF_1_1PTACFInfoBuilder.html#a418e6009760a7c9a048d2ffd9cd29956">SVF::PTACFInfoBuilder::getLoopInfo</a></div><div class="ttdeci">LoopInfo * getLoopInfo(const Function *f)</div><div class="ttdoc">Get loop info of a function. </div><div class="ttdef"><b>Definition:</b> <a href="DataFlowUtil_8cpp_source.html#l00075">DataFlowUtil.cpp:75</a></div></div>
1498
- <div class="ttc" id="classSVF_1_1TCT_html_ae64d6203b41c92d4ca617b8e976b88b2"><div class="ttname"><a href="classSVF_1_1TCT.html#ae64d6203b41c92d4ca617b8e976b88b2">SVF::TCT::loopInfoBuilder</a></div><div class="ttdeci">PTACFInfoBuilder loopInfoBuilder</div><div class="ttdoc">Map a CxtThread to its start routine function. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00548">TCT.h:548</a></div></div>
1498
+ <div class="ttc" id="classSVF_1_1TCT_html_ae64d6203b41c92d4ca617b8e976b88b2"><div class="ttname"><a href="classSVF_1_1TCT.html#ae64d6203b41c92d4ca617b8e976b88b2">SVF::TCT::loopInfoBuilder</a></div><div class="ttdeci">PTACFInfoBuilder loopInfoBuilder</div><div class="ttdoc">Map a CxtThread to its start routine function. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00570">TCT.h:570</a></div></div>
1499
1499
  </div><!-- fragment -->
1500
1500
  </div>
1501
1501
  </div>
@@ -1524,8 +1524,8 @@ Additional Inherited Members</h2></td></tr>
1524
1524
 
1525
1525
  <p>Get marked candidate functions. </p>
1526
1526
 
1527
- <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00206">206</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
1528
- <div class="fragment"><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; {</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1TCT.html#a720a934088dddda2b134cabcc59ef43d">candidateFuncSet</a>;</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; }</div><div class="ttc" id="classSVF_1_1TCT_html_a720a934088dddda2b134cabcc59ef43d"><div class="ttname"><a href="classSVF_1_1TCT.html#a720a934088dddda2b134cabcc59ef43d">SVF::TCT::candidateFuncSet</a></div><div class="ttdeci">FunSet candidateFuncSet</div><div class="ttdoc">Procedures that are neither called by other functions nor extern functions. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00541">TCT.h:541</a></div></div>
1527
+ <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00228">228</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
1528
+ <div class="fragment"><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; {</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1TCT.html#a720a934088dddda2b134cabcc59ef43d">candidateFuncSet</a>;</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; }</div><div class="ttc" id="classSVF_1_1TCT_html_a720a934088dddda2b134cabcc59ef43d"><div class="ttname"><a href="classSVF_1_1TCT.html#a720a934088dddda2b134cabcc59ef43d">SVF::TCT::candidateFuncSet</a></div><div class="ttdeci">FunSet candidateFuncSet</div><div class="ttdoc">Procedures that are neither called by other functions nor extern functions. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00563">TCT.h:563</a></div></div>
1529
1529
  </div><!-- fragment -->
1530
1530
  </div>
1531
1531
  </div>
@@ -1552,8 +1552,8 @@ Additional Inherited Members</h2></td></tr>
1552
1552
  </table>
1553
1553
  </div><div class="memdoc">
1554
1554
 
1555
- <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00227">227</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
1556
- <div class="fragment"><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; {</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1TCT.html#aaae41663b1d1f4d38b047c50c156defb">MaxCxtSize</a>;</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; }</div><div class="ttc" id="classSVF_1_1TCT_html_aaae41663b1d1f4d38b047c50c156defb"><div class="ttname"><a href="classSVF_1_1TCT.html#aaae41663b1d1f4d38b047c50c156defb">SVF::TCT::MaxCxtSize</a></div><div class="ttdeci">u32_t MaxCxtSize</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00400">TCT.h:400</a></div></div>
1555
+ <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00249">249</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
1556
+ <div class="fragment"><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; {</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1TCT.html#aaae41663b1d1f4d38b047c50c156defb">MaxCxtSize</a>;</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; }</div><div class="ttc" id="classSVF_1_1TCT_html_aaae41663b1d1f4d38b047c50c156defb"><div class="ttname"><a href="classSVF_1_1TCT.html#aaae41663b1d1f4d38b047c50c156defb">SVF::TCT::MaxCxtSize</a></div><div class="ttdeci">u32_t MaxCxtSize</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00422">TCT.h:422</a></div></div>
1557
1557
  </div><!-- fragment -->
1558
1558
  </div>
1559
1559
  </div>
@@ -1588,11 +1588,11 @@ Additional Inherited Members</h2></td></tr>
1588
1588
  <p>traverse to successive statements</p>
1589
1589
  <p>if we are sitting at the loop header, then go inside the loop but ignore loop exit </p>
1590
1590
 
1591
- <p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#l00448">448</a> of file <a class="el" href="TCT_8cpp_source.html">TCT.cpp</a>.</p>
1592
- <div class="fragment"><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160;{</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; <span class="keywordflow">if</span> (!curInst-&gt;isTerminator())</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; instList.push_back(curInst-&gt;getNextNode());</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; <span class="keywordflow">else</span></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; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *BB = curInst-&gt;getParent();</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; <span class="comment">// Visit all successors of BB in the CFG</span></div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">succ_const_iterator</a> it = succ_begin(BB), ie = succ_end(BB);</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; it != ie; ++it)</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; {</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1TCT.html#a549a95aa04233c98732777ea210d8525">isLoopHeaderOfJoinLoop</a>(BB) &amp;&amp; !<a class="code" href="classSVF_1_1TCT.html#add9104a3d7a821e9c2f266ae1810d2e3">getLoop</a>(BB)-&gt;contains(*it))</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; {</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; }</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; instList.push_back(&amp;((*it)-&gt;front()));</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; }</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; }</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160;}</div><div class="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>
1591
+ <p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#l00471">471</a> of file <a class="el" href="TCT_8cpp_source.html">TCT.cpp</a>.</p>
1592
+ <div class="fragment"><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160;{</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; <span class="keywordflow">if</span> (!curInst-&gt;isTerminator())</div><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; instList.push_back(curInst-&gt;getNextNode());</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; }</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; {</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *BB = curInst-&gt;getParent();</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; <span class="comment">// Visit all successors of BB in the CFG</span></div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">succ_const_iterator</a> it = succ_begin(BB), ie = succ_end(BB);</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; it != ie; ++it)</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; {</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1TCT.html#a549a95aa04233c98732777ea210d8525">isLoopHeaderOfJoinLoop</a>(BB) &amp;&amp; !<a class="code" href="classSVF_1_1TCT.html#add9104a3d7a821e9c2f266ae1810d2e3">getLoop</a>(BB)-&gt;contains(*it))</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; {</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; }</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; instList.push_back(&amp;((*it)-&gt;front()));</div><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; }</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160;}</div><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>
1593
1593
  <div class="ttc" id="namespaceSVF_html_a3436a988bf80c021cd8022fb445b66d5"><div class="ttname"><a href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">SVF::succ_const_iterator</a></div><div class="ttdeci">llvm::succ_const_iterator succ_const_iterator</div><div class="ttdoc">LLVM Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00117">BasicTypes.h:117</a></div></div>
1594
- <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>
1595
- <div class="ttc" id="classSVF_1_1TCT_html_a549a95aa04233c98732777ea210d8525"><div class="ttname"><a href="classSVF_1_1TCT.html#a549a95aa04233c98732777ea210d8525">SVF::TCT::isLoopHeaderOfJoinLoop</a></div><div class="ttdeci">bool isLoopHeaderOfJoinLoop(const BasicBlock *bb)</div><div class="ttdoc">Whether a given bb is a loop head of a inloop join site. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#l00315">TCT.cpp:315</a></div></div>
1594
+ <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>
1595
+ <div class="ttc" id="classSVF_1_1TCT_html_a549a95aa04233c98732777ea210d8525"><div class="ttname"><a href="classSVF_1_1TCT.html#a549a95aa04233c98732777ea210d8525">SVF::TCT::isLoopHeaderOfJoinLoop</a></div><div class="ttdeci">bool isLoopHeaderOfJoinLoop(const BasicBlock *bb)</div><div class="ttdoc">Whether a given bb is a loop head of a inloop join site. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#l00338">TCT.cpp:338</a></div></div>
1596
1596
  </div><!-- fragment -->
1597
1597
  </div>
1598
1598
  </div>
@@ -1644,12 +1644,12 @@ Additional Inherited Members</h2></td></tr>
1644
1644
 
1645
1645
  <p>Get or create a tct node based on <a class="el" href="classSVF_1_1CxtThread.html">CxtThread</a>. </p>
1646
1646
 
1647
- <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00466">466</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
1648
- <div class="fragment"><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; {</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; CxtThread ct(cxt,fork);</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; CxtThreadToNodeMap::const_iterator it = <a class="code" href="classSVF_1_1TCT.html#a0ccb6e9ffff0f22a0a054a92222893d5">ctpToNodeMap</a>.find(ct);</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; <span class="keywordflow">if</span>(it!=<a class="code" href="classSVF_1_1TCT.html#a0ccb6e9ffff0f22a0a054a92222893d5">ctpToNodeMap</a>.end())</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; {</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><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;</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; <a class="code" href="classSVF_1_1TCT.html#a2978381d69a9fd1fcee6a1258bc3bb5c">addCxtOfCxtThread</a>(oldCxt,ct);</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; <a class="code" href="classSVF_1_1TCT.html#a11d9eeffdb1fc777f573fae75f48532a">addStartRoutineOfCxtThread</a>(routine,ct);</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160;</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; <a class="code" href="classSVF_1_1TCT.html#a11e36f9b58646dee4014e12e55c70508">setMultiForkedAttrs</a>(ct);</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1TCT.html#a4d26418c050876eb365af0ee31d3922c">addTCTNode</a>(ct);</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; }</div><div class="ttc" id="classSVF_1_1TCT_html_a0ccb6e9ffff0f22a0a054a92222893d5"><div class="ttname"><a href="classSVF_1_1TCT.html#a0ccb6e9ffff0f22a0a054a92222893d5">SVF::TCT::ctpToNodeMap</a></div><div class="ttdeci">CxtThreadToNodeMap ctpToNodeMap</div><div class="ttdoc">Record all visited ctps. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00545">TCT.h:545</a></div></div>
1649
- <div class="ttc" id="classSVF_1_1TCT_html_a11e36f9b58646dee4014e12e55c70508"><div class="ttname"><a href="classSVF_1_1TCT.html#a11e36f9b58646dee4014e12e55c70508">SVF::TCT::setMultiForkedAttrs</a></div><div class="ttdeci">void setMultiForkedAttrs(CxtThread &amp;ct)</div><div class="ttdoc">Set multi-forked thread attributes. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00484">TCT.h:484</a></div></div>
1650
- <div class="ttc" id="classSVF_1_1TCT_html_a4d26418c050876eb365af0ee31d3922c"><div class="ttname"><a href="classSVF_1_1TCT.html#a4d26418c050876eb365af0ee31d3922c">SVF::TCT::addTCTNode</a></div><div class="ttdeci">TCTNode * addTCTNode(const CxtThread &amp;ct)</div><div class="ttdoc">Add TCT node. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00403">TCT.h:403</a></div></div>
1651
- <div class="ttc" id="classSVF_1_1TCT_html_a11d9eeffdb1fc777f573fae75f48532a"><div class="ttname"><a href="classSVF_1_1TCT.html#a11d9eeffdb1fc777f573fae75f48532a">SVF::TCT::addStartRoutineOfCxtThread</a></div><div class="ttdeci">void addStartRoutineOfCxtThread(const Function *fun, const CxtThread &amp;ct)</div><div class="ttdoc">Add start routine function of a cxt thread. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00506">TCT.h:506</a></div></div>
1652
- <div class="ttc" id="classSVF_1_1TCT_html_a2978381d69a9fd1fcee6a1258bc3bb5c"><div class="ttname"><a href="classSVF_1_1TCT.html#a2978381d69a9fd1fcee6a1258bc3bb5c">SVF::TCT::addCxtOfCxtThread</a></div><div class="ttdeci">void addCxtOfCxtThread(const CallStrCxt &amp;cxt, const CxtThread &amp;ct)</div><div class="ttdoc">Add context for a thread at its spawning site (fork site) </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00501">TCT.h:501</a></div></div>
1647
+ <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00488">488</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
1648
+ <div class="fragment"><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; {</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; CxtThread ct(cxt,fork);</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; CxtThreadToNodeMap::const_iterator it = <a class="code" href="classSVF_1_1TCT.html#a0ccb6e9ffff0f22a0a054a92222893d5">ctpToNodeMap</a>.find(ct);</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; <span class="keywordflow">if</span>(it!=<a class="code" href="classSVF_1_1TCT.html#a0ccb6e9ffff0f22a0a054a92222893d5">ctpToNodeMap</a>.end())</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; {</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; }</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160;</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; <a class="code" href="classSVF_1_1TCT.html#a2978381d69a9fd1fcee6a1258bc3bb5c">addCxtOfCxtThread</a>(oldCxt,ct);</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; <a class="code" href="classSVF_1_1TCT.html#a11d9eeffdb1fc777f573fae75f48532a">addStartRoutineOfCxtThread</a>(routine,ct);</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160;</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; <a class="code" href="classSVF_1_1TCT.html#a11e36f9b58646dee4014e12e55c70508">setMultiForkedAttrs</a>(ct);</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_1TCT.html#a4d26418c050876eb365af0ee31d3922c">addTCTNode</a>(ct);</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; }</div><div class="ttc" id="classSVF_1_1TCT_html_a0ccb6e9ffff0f22a0a054a92222893d5"><div class="ttname"><a href="classSVF_1_1TCT.html#a0ccb6e9ffff0f22a0a054a92222893d5">SVF::TCT::ctpToNodeMap</a></div><div class="ttdeci">CxtThreadToNodeMap ctpToNodeMap</div><div class="ttdoc">Record all visited ctps. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00567">TCT.h:567</a></div></div>
1649
+ <div class="ttc" id="classSVF_1_1TCT_html_a11e36f9b58646dee4014e12e55c70508"><div class="ttname"><a href="classSVF_1_1TCT.html#a11e36f9b58646dee4014e12e55c70508">SVF::TCT::setMultiForkedAttrs</a></div><div class="ttdeci">void setMultiForkedAttrs(CxtThread &amp;ct)</div><div class="ttdoc">Set multi-forked thread attributes. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00506">TCT.h:506</a></div></div>
1650
+ <div class="ttc" id="classSVF_1_1TCT_html_a4d26418c050876eb365af0ee31d3922c"><div class="ttname"><a href="classSVF_1_1TCT.html#a4d26418c050876eb365af0ee31d3922c">SVF::TCT::addTCTNode</a></div><div class="ttdeci">TCTNode * addTCTNode(const CxtThread &amp;ct)</div><div class="ttdoc">Add TCT node. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00425">TCT.h:425</a></div></div>
1651
+ <div class="ttc" id="classSVF_1_1TCT_html_a11d9eeffdb1fc777f573fae75f48532a"><div class="ttname"><a href="classSVF_1_1TCT.html#a11d9eeffdb1fc777f573fae75f48532a">SVF::TCT::addStartRoutineOfCxtThread</a></div><div class="ttdeci">void addStartRoutineOfCxtThread(const Function *fun, const CxtThread &amp;ct)</div><div class="ttdoc">Add start routine function of a cxt thread. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00528">TCT.h:528</a></div></div>
1652
+ <div class="ttc" id="classSVF_1_1TCT_html_a2978381d69a9fd1fcee6a1258bc3bb5c"><div class="ttname"><a href="classSVF_1_1TCT.html#a2978381d69a9fd1fcee6a1258bc3bb5c">SVF::TCT::addCxtOfCxtThread</a></div><div class="ttdeci">void addCxtOfCxtThread(const CallStrCxt &amp;cxt, const CxtThread &amp;ct)</div><div class="ttdoc">Add context for a thread at its spawning site (fork site) </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00523">TCT.h:523</a></div></div>
1653
1653
  </div><!-- fragment -->
1654
1654
  </div>
1655
1655
  </div>
@@ -1677,8 +1677,8 @@ Additional Inherited Members</h2></td></tr>
1677
1677
  </table>
1678
1678
  </div><div class="memdoc">
1679
1679
 
1680
- <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00195">195</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
1681
- <div class="fragment"><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; {</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="keywordflow">return</span> node-&gt;InEdgeBegin();</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; }</div></div><!-- fragment -->
1680
+ <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00217">217</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
1681
+ <div class="fragment"><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; {</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="keywordflow">return</span> node-&gt;InEdgeBegin();</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; }</div></div><!-- fragment -->
1682
1682
  </div>
1683
1683
  </div>
1684
1684
  <a id="a5d6a06c7daff36a14fa1f371a477784d"></a>
@@ -1705,8 +1705,8 @@ Additional Inherited Members</h2></td></tr>
1705
1705
  </table>
1706
1706
  </div><div class="memdoc">
1707
1707
 
1708
- <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00199">199</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
1709
- <div class="fragment"><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; {</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <span class="keywordflow">return</span> node-&gt;InEdgeEnd();</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; }</div></div><!-- fragment -->
1708
+ <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00221">221</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
1709
+ <div class="fragment"><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; {</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <span class="keywordflow">return</span> node-&gt;InEdgeEnd();</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; }</div></div><!-- fragment -->
1710
1710
  </div>
1711
1711
  </div>
1712
1712
  <a id="a516578af1f8666ff672e6611e61d7152"></a>
@@ -1735,8 +1735,8 @@ Additional Inherited Members</h2></td></tr>
1735
1735
 
1736
1736
  <p>Get parent thread. </p>
1737
1737
 
1738
- <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00281">281</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
1739
- <div class="fragment"><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; {</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <span class="keyword">const</span> TCTNode* node = <a class="code" href="classSVF_1_1TCT.html#a7b4ad0b052e1f8b6869733eef15f4e4d">getTCTNode</a>(tid);</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; assert(node-&gt;getInEdges().size()&lt;=1 &amp;&amp; <span class="stringliteral">&quot;should have at most one parent thread&quot;</span>);</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; assert(node-&gt;getInEdges().size()==1 &amp;&amp; <span class="stringliteral">&quot;does not have a parent thread&quot;</span>);</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <span class="keyword">const</span> TCTEdge* edge = *(node-&gt;getInEdges().begin());</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <span class="keywordflow">return</span> edge-&gt;getSrcID();</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; }</div><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>
1738
+ <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00303">303</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
1739
+ <div class="fragment"><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; {</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <span class="keyword">const</span> TCTNode* node = <a class="code" href="classSVF_1_1TCT.html#a7b4ad0b052e1f8b6869733eef15f4e4d">getTCTNode</a>(tid);</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; assert(node-&gt;getInEdges().size()&lt;=1 &amp;&amp; <span class="stringliteral">&quot;should have at most one parent thread&quot;</span>);</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; assert(node-&gt;getInEdges().size()==1 &amp;&amp; <span class="stringliteral">&quot;does not have a parent thread&quot;</span>);</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <span class="keyword">const</span> TCTEdge* edge = *(node-&gt;getInEdges().begin());</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <span class="keywordflow">return</span> edge-&gt;getSrcID();</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; }</div><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>
1740
1740
  </div><!-- fragment -->
1741
1741
  </div>
1742
1742
  </div>
@@ -1758,9 +1758,9 @@ Additional Inherited Members</h2></td></tr>
1758
1758
 
1759
1759
  <p>Get dominator for a function. </p>
1760
1760
 
1761
- <p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#l00362">362</a> of file <a class="el" href="TCT_8cpp_source.html">TCT.cpp</a>.</p>
1762
- <div class="fragment"><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160;{</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1TCT.html#ae64d6203b41c92d4ca617b8e976b88b2">loopInfoBuilder</a>.<a class="code" href="classSVF_1_1PTACFInfoBuilder.html#a00e3339dab62325354e8ecd8251da0f1">getPostDT</a>(fun);</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160;}</div><div class="ttc" id="classSVF_1_1PTACFInfoBuilder_html_a00e3339dab62325354e8ecd8251da0f1"><div class="ttname"><a href="classSVF_1_1PTACFInfoBuilder.html#a00e3339dab62325354e8ecd8251da0f1">SVF::PTACFInfoBuilder::getPostDT</a></div><div class="ttdeci">PostDominatorTree * getPostDT(const Function *f)</div><div class="ttdoc">Get post dominator tree of a function. </div><div class="ttdef"><b>Definition:</b> <a href="DataFlowUtil_8cpp_source.html#l00092">DataFlowUtil.cpp:92</a></div></div>
1763
- <div class="ttc" id="classSVF_1_1TCT_html_ae64d6203b41c92d4ca617b8e976b88b2"><div class="ttname"><a href="classSVF_1_1TCT.html#ae64d6203b41c92d4ca617b8e976b88b2">SVF::TCT::loopInfoBuilder</a></div><div class="ttdeci">PTACFInfoBuilder loopInfoBuilder</div><div class="ttdoc">Map a CxtThread to its start routine function. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00548">TCT.h:548</a></div></div>
1761
+ <p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#l00385">385</a> of file <a class="el" href="TCT_8cpp_source.html">TCT.cpp</a>.</p>
1762
+ <div class="fragment"><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160;{</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1TCT.html#ae64d6203b41c92d4ca617b8e976b88b2">loopInfoBuilder</a>.<a class="code" href="classSVF_1_1PTACFInfoBuilder.html#a00e3339dab62325354e8ecd8251da0f1">getPostDT</a>(fun);</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160;}</div><div class="ttc" id="classSVF_1_1PTACFInfoBuilder_html_a00e3339dab62325354e8ecd8251da0f1"><div class="ttname"><a href="classSVF_1_1PTACFInfoBuilder.html#a00e3339dab62325354e8ecd8251da0f1">SVF::PTACFInfoBuilder::getPostDT</a></div><div class="ttdeci">PostDominatorTree * getPostDT(const Function *f)</div><div class="ttdoc">Get post dominator tree of a function. </div><div class="ttdef"><b>Definition:</b> <a href="DataFlowUtil_8cpp_source.html#l00092">DataFlowUtil.cpp:92</a></div></div>
1763
+ <div class="ttc" id="classSVF_1_1TCT_html_ae64d6203b41c92d4ca617b8e976b88b2"><div class="ttname"><a href="classSVF_1_1TCT.html#ae64d6203b41c92d4ca617b8e976b88b2">SVF::TCT::loopInfoBuilder</a></div><div class="ttdeci">PTACFInfoBuilder loopInfoBuilder</div><div class="ttdoc">Map a CxtThread to its start routine function. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00570">TCT.h:570</a></div></div>
1764
1764
  </div><!-- fragment -->
1765
1765
  </div>
1766
1766
  </div>
@@ -1789,8 +1789,8 @@ Additional Inherited Members</h2></td></tr>
1789
1789
 
1790
1790
  <p>Get PTA. </p>
1791
1791
 
1792
- <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00171">171</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
1793
- <div class="fragment"><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; {</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1TCT.html#a980de0593e41d18d2716aa5120d35d04">pta</a>;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; }</div><div class="ttc" id="classSVF_1_1TCT_html_a980de0593e41d18d2716aa5120d35d04"><div class="ttname"><a href="classSVF_1_1TCT.html#a980de0593e41d18d2716aa5120d35d04">SVF::TCT::pta</a></div><div class="ttdeci">PointerAnalysis * pta</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00397">TCT.h:397</a></div></div>
1792
+ <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00193">193</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
1793
+ <div class="fragment"><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; {</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1TCT.html#a980de0593e41d18d2716aa5120d35d04">pta</a>;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; }</div><div class="ttc" id="classSVF_1_1TCT_html_a980de0593e41d18d2716aa5120d35d04"><div class="ttname"><a href="classSVF_1_1TCT.html#a980de0593e41d18d2716aa5120d35d04">SVF::TCT::pta</a></div><div class="ttdeci">PointerAnalysis * pta</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00419">TCT.h:419</a></div></div>
1794
1794
  </div><!-- fragment -->
1795
1795
  </div>
1796
1796
  </div>
@@ -1813,8 +1813,8 @@ Additional Inherited Members</h2></td></tr>
1813
1813
  <p>Get SE for function. </p>
1814
1814
  <p>Get SE for function </p>
1815
1815
 
1816
- <p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#l00378">378</a> of file <a class="el" href="TCT_8cpp_source.html">TCT.cpp</a>.</p>
1817
- <div class="fragment"><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160;{</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun = inst-&gt;getParent()-&gt;getParent();</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MTA.html#a7cb2fd230ed5839b59f650cc87de192e">MTA::getSE</a>(fun);</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160;}</div><div class="ttc" id="classSVF_1_1MTA_html_a7cb2fd230ed5839b59f650cc87de192e"><div class="ttname"><a href="classSVF_1_1MTA.html#a7cb2fd230ed5839b59f650cc87de192e">SVF::MTA::getSE</a></div><div class="ttdeci">static ScalarEvolution * getSE(const Function *F)</div><div class="ttdef"><b>Definition:</b> <a href="MTA_8h_source.html#l00073">MTA.h:73</a></div></div>
1816
+ <p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#l00401">401</a> of file <a class="el" href="TCT_8cpp_source.html">TCT.cpp</a>.</p>
1817
+ <div class="fragment"><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160;{</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun = inst-&gt;getParent()-&gt;getParent();</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MTA.html#a7cb2fd230ed5839b59f650cc87de192e">MTA::getSE</a>(fun);</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160;}</div><div class="ttc" id="classSVF_1_1MTA_html_a7cb2fd230ed5839b59f650cc87de192e"><div class="ttname"><a href="classSVF_1_1MTA.html#a7cb2fd230ed5839b59f650cc87de192e">SVF::MTA::getSE</a></div><div class="ttdeci">static ScalarEvolution * getSE(const Function *F)</div><div class="ttdef"><b>Definition:</b> <a href="MTA_8h_source.html#l00099">MTA.h:99</a></div></div>
1818
1818
  <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>
1819
1819
  </div><!-- fragment -->
1820
1820
  </div>
@@ -1845,15 +1845,15 @@ Additional Inherited Members</h2></td></tr>
1845
1845
 
1846
1846
  <p>Get sibling threads. </p>
1847
1847
 
1848
- <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00311">311</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
1849
- <div class="fragment"><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; {</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <a class="code" href="namespaceSVF.html#aa7b6a13e52671de8524b130738aeb564">NodeBS</a> tds;</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1TCT.html#a6855a3a8a98591e58dba07047f7705ce">hasParentThread</a>(tid) == <span class="keyword">false</span>)</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <span class="keywordflow">return</span> tds;</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160;</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <span class="keyword">const</span> TCTNode* node = <a class="code" href="classSVF_1_1TCT.html#a7b4ad0b052e1f8b6869733eef15f4e4d">getTCTNode</a>(<a class="code" href="classSVF_1_1TCT.html#a516578af1f8666ff672e6611e61d7152">getParentThread</a>(tid));</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <span class="keywordflow">for</span>(ThreadCreateEdgeSet::const_iterator it = <a class="code" href="classSVF_1_1TCT.html#a511c2ee4cfdc01a720135b2cd493fe3b">getChildrenBegin</a>(node), eit = <a class="code" href="classSVF_1_1TCT.html#af47837e30a80e8d6684f3ee6001afb7a">getChildrenEnd</a>(node); it!=eit; ++it)</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; {</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="cJSON_8cpp.html#ad00efb41ca386db28bacc7aefe79535c">child</a> = (*it)-&gt;getDstNode()-&gt;getId();</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <span class="keywordflow">if</span>(child!=tid)</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; tds.set(child);</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; }</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160;</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <span class="keywordflow">return</span> tds;</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; }</div><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>
1850
- <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>
1848
+ <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00333">333</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
1849
+ <div class="fragment"><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; {</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <a class="code" href="namespaceSVF.html#aa7b6a13e52671de8524b130738aeb564">NodeBS</a> tds;</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1TCT.html#a6855a3a8a98591e58dba07047f7705ce">hasParentThread</a>(tid) == <span class="keyword">false</span>)</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; <span class="keywordflow">return</span> tds;</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160;</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; <span class="keyword">const</span> TCTNode* node = <a class="code" href="classSVF_1_1TCT.html#a7b4ad0b052e1f8b6869733eef15f4e4d">getTCTNode</a>(<a class="code" href="classSVF_1_1TCT.html#a516578af1f8666ff672e6611e61d7152">getParentThread</a>(tid));</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <span class="keywordflow">for</span>(ThreadCreateEdgeSet::const_iterator it = <a class="code" href="classSVF_1_1TCT.html#a511c2ee4cfdc01a720135b2cd493fe3b">getChildrenBegin</a>(node), eit = <a class="code" href="classSVF_1_1TCT.html#af47837e30a80e8d6684f3ee6001afb7a">getChildrenEnd</a>(node); it!=eit; ++it)</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; {</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="cJSON_8cpp.html#ad00efb41ca386db28bacc7aefe79535c">child</a> = (*it)-&gt;getDstNode()-&gt;getId();</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <span class="keywordflow">if</span>(child!=tid)</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; tds.set(child);</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; }</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160;</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <span class="keywordflow">return</span> tds;</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; }</div><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>
1850
+ <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>
1851
1851
  <div class="ttc" id="cJSON_8cpp_html_ad00efb41ca386db28bacc7aefe79535c"><div class="ttname"><a href="cJSON_8cpp.html#ad00efb41ca386db28bacc7aefe79535c">child</a></div><div class="ttdeci">cJSON * child</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l02723">cJSON.cpp:2723</a></div></div>
1852
- <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>
1853
- <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>
1852
+ <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>
1853
+ <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>
1854
1854
  <div class="ttc" id="namespaceSVF_html_aa7b6a13e52671de8524b130738aeb564"><div class="ttname"><a href="namespaceSVF.html#aa7b6a13e52671de8524b130738aeb564">SVF::NodeBS</a></div><div class="ttdeci">SparseBitVector NodeBS</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00096">SVFBasicTypes.h:96</a></div></div>
1855
- <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>
1856
- <div class="ttc" id="classSVF_1_1TCT_html_a6855a3a8a98591e58dba07047f7705ce"><div class="ttname"><a href="classSVF_1_1TCT.html#a6855a3a8a98591e58dba07047f7705ce">SVF::TCT::hasParentThread</a></div><div class="ttdeci">bool hasParentThread(NodeID tid) const</div><div class="ttdoc">Get parent and sibling threads. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00275">TCT.h:275</a></div></div>
1855
+ <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>
1856
+ <div class="ttc" id="classSVF_1_1TCT_html_a6855a3a8a98591e58dba07047f7705ce"><div class="ttname"><a href="classSVF_1_1TCT.html#a6855a3a8a98591e58dba07047f7705ce">SVF::TCT::hasParentThread</a></div><div class="ttdeci">bool hasParentThread(NodeID tid) const</div><div class="ttdoc">Get parent and sibling threads. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00297">TCT.h:297</a></div></div>
1857
1857
  </div><!-- fragment -->
1858
1858
  </div>
1859
1859
  </div>
@@ -1883,8 +1883,8 @@ Additional Inherited Members</h2></td></tr>
1883
1883
 
1884
1884
  <p>get the start routine function of a thread </p>
1885
1885
 
1886
- <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00338">338</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
1887
- <div class="fragment"><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; {</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; CxtThreadToFun::const_iterator it = <a class="code" href="classSVF_1_1TCT.html#a36c7884869d923c1a9363962c9e013bd">ctToRoutineFunMap</a>.find(ct);</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; assert(it!=<a class="code" href="classSVF_1_1TCT.html#a36c7884869d923c1a9363962c9e013bd">ctToRoutineFunMap</a>.end() &amp;&amp; <span class="stringliteral">&quot;Cxt Thread not found!!&quot;</span>);</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; }</div><div class="ttc" id="classSVF_1_1TCT_html_a36c7884869d923c1a9363962c9e013bd"><div class="ttname"><a href="classSVF_1_1TCT.html#a36c7884869d923c1a9363962c9e013bd">SVF::TCT::ctToRoutineFunMap</a></div><div class="ttdeci">CxtThreadToFun ctToRoutineFunMap</div><div class="ttdoc">Map a CxtThread to the context at its spawning site (fork site). </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00547">TCT.h:547</a></div></div>
1886
+ <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00360">360</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
1887
+ <div class="fragment"><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; {</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; CxtThreadToFun::const_iterator it = <a class="code" href="classSVF_1_1TCT.html#a36c7884869d923c1a9363962c9e013bd">ctToRoutineFunMap</a>.find(ct);</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; assert(it!=<a class="code" href="classSVF_1_1TCT.html#a36c7884869d923c1a9363962c9e013bd">ctToRoutineFunMap</a>.end() &amp;&amp; <span class="stringliteral">&quot;Cxt Thread not found!!&quot;</span>);</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; }</div><div class="ttc" id="classSVF_1_1TCT_html_a36c7884869d923c1a9363962c9e013bd"><div class="ttname"><a href="classSVF_1_1TCT.html#a36c7884869d923c1a9363962c9e013bd">SVF::TCT::ctToRoutineFunMap</a></div><div class="ttdeci">CxtThreadToFun ctToRoutineFunMap</div><div class="ttdoc">Map a CxtThread to the context at its spawning site (fork site). </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00569">TCT.h:569</a></div></div>
1888
1888
  </div><!-- fragment -->
1889
1889
  </div>
1890
1890
  </div>
@@ -1914,8 +1914,8 @@ Additional Inherited Members</h2></td></tr>
1914
1914
 
1915
1915
  <p>Get SVFFuntion given Function. </p>
1916
1916
 
1917
- <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00155">155</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
1918
- <div class="fragment"><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; {</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a547b3bc62de65b9dbfc6dee55c063dd7">getSVFFunction</a>(fun);</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; }</div><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>
1917
+ <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00177">177</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
1918
+ <div class="fragment"><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; {</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a547b3bc62de65b9dbfc6dee55c063dd7">getSVFFunction</a>(fun);</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; }</div><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>
1919
1919
  <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>
1920
1920
  </div><!-- fragment -->
1921
1921
  </div>
@@ -1945,9 +1945,9 @@ Additional Inherited Members</h2></td></tr>
1945
1945
 
1946
1946
  <p>Get SVFFModule. </p>
1947
1947
 
1948
- <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00160">160</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
1949
- <div class="fragment"><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; {</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1TCT.html#a980de0593e41d18d2716aa5120d35d04">pta</a>-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#ad8b71cebf46deaf60e2cd4f6d6bb9433">getModule</a>();</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; }</div><div class="ttc" id="classSVF_1_1PointerAnalysis_html_ad8b71cebf46deaf60e2cd4f6d6bb9433"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#ad8b71cebf46deaf60e2cd4f6d6bb9433">SVF::PointerAnalysis::getModule</a></div><div class="ttdeci">SVFModule * getModule() const</div><div class="ttdoc">Module. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00213">PointerAnalysis.h:213</a></div></div>
1950
- <div class="ttc" id="classSVF_1_1TCT_html_a980de0593e41d18d2716aa5120d35d04"><div class="ttname"><a href="classSVF_1_1TCT.html#a980de0593e41d18d2716aa5120d35d04">SVF::TCT::pta</a></div><div class="ttdeci">PointerAnalysis * pta</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00397">TCT.h:397</a></div></div>
1948
+ <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00182">182</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
1949
+ <div class="fragment"><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; {</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1TCT.html#a980de0593e41d18d2716aa5120d35d04">pta</a>-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#ad8b71cebf46deaf60e2cd4f6d6bb9433">getModule</a>();</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; }</div><div class="ttc" id="classSVF_1_1PointerAnalysis_html_ad8b71cebf46deaf60e2cd4f6d6bb9433"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#ad8b71cebf46deaf60e2cd4f6d6bb9433">SVF::PointerAnalysis::getModule</a></div><div class="ttdeci">SVFModule * getModule() const</div><div class="ttdoc">Module. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00213">PointerAnalysis.h:213</a></div></div>
1950
+ <div class="ttc" id="classSVF_1_1TCT_html_a980de0593e41d18d2716aa5120d35d04"><div class="ttname"><a href="classSVF_1_1TCT.html#a980de0593e41d18d2716aa5120d35d04">SVF::TCT::pta</a></div><div class="ttdeci">PointerAnalysis * pta</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00419">TCT.h:419</a></div></div>
1951
1951
  </div><!-- fragment -->
1952
1952
  </div>
1953
1953
  </div>
@@ -1974,8 +1974,8 @@ Additional Inherited Members</h2></td></tr>
1974
1974
  </table>
1975
1975
  </div><div class="memdoc">
1976
1976
 
1977
- <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00223">223</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
1978
- <div class="fragment"><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; {</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1TCT.html#a862899f2e5fb35920adf8e763e1dba57">TCTEdgeNum</a>;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; }</div><div class="ttc" id="classSVF_1_1TCT_html_a862899f2e5fb35920adf8e763e1dba57"><div class="ttname"><a href="classSVF_1_1TCT.html#a862899f2e5fb35920adf8e763e1dba57">SVF::TCT::TCTEdgeNum</a></div><div class="ttdeci">u32_t TCTEdgeNum</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00399">TCT.h:399</a></div></div>
1977
+ <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00245">245</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
1978
+ <div class="fragment"><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; {</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1TCT.html#a862899f2e5fb35920adf8e763e1dba57">TCTEdgeNum</a>;</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; }</div><div class="ttc" id="classSVF_1_1TCT_html_a862899f2e5fb35920adf8e763e1dba57"><div class="ttname"><a href="classSVF_1_1TCT.html#a862899f2e5fb35920adf8e763e1dba57">SVF::TCT::TCTEdgeNum</a></div><div class="ttdeci">u32_t TCTEdgeNum</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00421">TCT.h:421</a></div></div>
1979
1979
  </div><!-- fragment -->
1980
1980
  </div>
1981
1981
  </div>
@@ -2005,8 +2005,8 @@ Additional Inherited Members</h2></td></tr>
2005
2005
 
2006
2006
  <p>Get <a class="el" href="classSVF_1_1TCT.html">TCT</a> node. </p>
2007
2007
 
2008
- <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00176">176</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
2009
- <div class="fragment"><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; {</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; }</div><div class="ttc" id="classSVF_1_1GenericGraph_html_a43c9c773bfa17abf481c33073e30d01b"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">SVF::GenericGraph::getGNode</a></div><div class="ttdeci">NodeType * getGNode(NodeID id) const</div><div class="ttdoc">Get a node. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00391">GenericGraph.h:391</a></div></div>
2008
+ <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00198">198</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
2009
+ <div class="fragment"><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; {</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; }</div><div class="ttc" id="classSVF_1_1GenericGraph_html_a43c9c773bfa17abf481c33073e30d01b"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">SVF::GenericGraph::getGNode</a></div><div class="ttdeci">NodeType * getGNode(NodeID id) const</div><div class="ttdoc">Get a node. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00391">GenericGraph.h:391</a></div></div>
2010
2010
  </div><!-- fragment -->
2011
2011
  </div>
2012
2012
  </div>
@@ -2034,8 +2034,8 @@ Additional Inherited Members</h2></td></tr>
2034
2034
  </table>
2035
2035
  </div><div class="memdoc">
2036
2036
 
2037
- <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00239">239</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
2038
- <div class="fragment"><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; {</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; CxtThreadToNodeMap::const_iterator it = <a class="code" href="classSVF_1_1TCT.html#a0ccb6e9ffff0f22a0a054a92222893d5">ctpToNodeMap</a>.find(ct);</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; assert(it!=<a class="code" href="classSVF_1_1TCT.html#a0ccb6e9ffff0f22a0a054a92222893d5">ctpToNodeMap</a>.end() &amp;&amp; <span class="stringliteral">&quot;TCT node not found??&quot;</span>);</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; }</div><div class="ttc" id="classSVF_1_1TCT_html_a0ccb6e9ffff0f22a0a054a92222893d5"><div class="ttname"><a href="classSVF_1_1TCT.html#a0ccb6e9ffff0f22a0a054a92222893d5">SVF::TCT::ctpToNodeMap</a></div><div class="ttdeci">CxtThreadToNodeMap ctpToNodeMap</div><div class="ttdoc">Record all visited ctps. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00545">TCT.h:545</a></div></div>
2037
+ <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00261">261</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
2038
+ <div class="fragment"><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; {</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; CxtThreadToNodeMap::const_iterator it = <a class="code" href="classSVF_1_1TCT.html#a0ccb6e9ffff0f22a0a054a92222893d5">ctpToNodeMap</a>.find(ct);</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; assert(it!=<a class="code" href="classSVF_1_1TCT.html#a0ccb6e9ffff0f22a0a054a92222893d5">ctpToNodeMap</a>.end() &amp;&amp; <span class="stringliteral">&quot;TCT node not found??&quot;</span>);</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; }</div><div class="ttc" id="classSVF_1_1TCT_html_a0ccb6e9ffff0f22a0a054a92222893d5"><div class="ttname"><a href="classSVF_1_1TCT.html#a0ccb6e9ffff0f22a0a054a92222893d5">SVF::TCT::ctpToNodeMap</a></div><div class="ttdeci">CxtThreadToNodeMap ctpToNodeMap</div><div class="ttdoc">Record all visited ctps. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00567">TCT.h:567</a></div></div>
2039
2039
  </div><!-- fragment -->
2040
2040
  </div>
2041
2041
  </div>
@@ -2064,8 +2064,8 @@ Additional Inherited Members</h2></td></tr>
2064
2064
 
2065
2065
  <p>Get Statistics. </p>
2066
2066
 
2067
- <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00219">219</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
2068
- <div class="fragment"><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; {</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1TCT.html#a52e3759054281c1ca1ccde07a9af1799">TCTNodeNum</a>;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; }</div><div class="ttc" id="classSVF_1_1TCT_html_a52e3759054281c1ca1ccde07a9af1799"><div class="ttname"><a href="classSVF_1_1TCT.html#a52e3759054281c1ca1ccde07a9af1799">SVF::TCT::TCTNodeNum</a></div><div class="ttdeci">u32_t TCTNodeNum</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00398">TCT.h:398</a></div></div>
2067
+ <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00241">241</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
2068
+ <div class="fragment"><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; {</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1TCT.html#a52e3759054281c1ca1ccde07a9af1799">TCTNodeNum</a>;</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; }</div><div class="ttc" id="classSVF_1_1TCT_html_a52e3759054281c1ca1ccde07a9af1799"><div class="ttname"><a href="classSVF_1_1TCT.html#a52e3759054281c1ca1ccde07a9af1799">SVF::TCT::TCTNodeNum</a></div><div class="ttdeci">u32_t TCTNodeNum</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00420">TCT.h:420</a></div></div>
2069
2069
  </div><!-- fragment -->
2070
2070
  </div>
2071
2071
  </div>
@@ -2094,8 +2094,8 @@ Additional Inherited Members</h2></td></tr>
2094
2094
 
2095
2095
  <p>Get TCG. </p>
2096
2096
 
2097
- <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00166">166</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
2098
- <div class="fragment"><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; {</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">tcg</a>;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; }</div><div class="ttc" id="classSVF_1_1TCT_html_ac9ddd6559e818f37c018ed5435182363"><div class="ttname"><a href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">SVF::TCT::tcg</a></div><div class="ttdeci">ThreadCallGraph * tcg</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00396">TCT.h:396</a></div></div>
2097
+ <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00188">188</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
2098
+ <div class="fragment"><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; {</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">tcg</a>;</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; }</div><div class="ttc" id="classSVF_1_1TCT_html_ac9ddd6559e818f37c018ed5435182363"><div class="ttname"><a href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">SVF::TCT::tcg</a></div><div class="ttdeci">ThreadCallGraph * tcg</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00418">TCT.h:418</a></div></div>
2099
2099
  </div><!-- fragment -->
2100
2100
  </div>
2101
2101
  </div>
@@ -2144,20 +2144,20 @@ Additional Inherited Members</h2></td></tr>
2144
2144
  <p>Create spawnee <a class="el" href="classSVF_1_1TCT.html">TCT</a> node</p>
2145
2145
  <p>Add <a class="el" href="classSVF_1_1TCT.html">TCT</a> nodes and edge </p>
2146
2146
 
2147
- <p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#l00224">224</a> of file <a class="el" href="TCT_8cpp_source.html">TCT.cpp</a>.</p>
2148
- <div class="fragment"><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160;{</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* callee = cgEdge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>()-&gt;getFunction();</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* llvmcallee = callee-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>();</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160;</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a> cxt(ctp.<a class="code" href="classSVF_1_1CxtProc.html#a99b0f68b4cbd733f91eea33aa3e64eb7">getContext</a>());</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a> oldCxt = cxt;</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <a class="code" href="classSVF_1_1TCT.html#afc6d7a91cfc98561bcce13425964a39e">pushCxt</a>(cxt,cs.<a class="code" href="classSVF_1_1CallSite.html#ab36a6a35eea673d4bdca615efc4336b1">getInstruction</a>(),llvmcallee);</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <span class="keywordflow">if</span>(cgEdge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1PTACallGraphEdge.html#a9738544725458bb022b8d5f2dbd281f7aa968b68fb87a0135833105f4e6413c69">PTACallGraphEdge::CallRetEdge</a>)</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; {</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <a class="code" href="classSVF_1_1CxtThreadProc.html">CxtThreadProc</a> newctp(ctp.<a class="code" href="classSVF_1_1CxtThreadProc.html#a61d950c7469f4bb9d2152b0e7d892ebf">getTid</a>(),cxt,callee);</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1TCT.html#a002bac3dc928bc78b94de0ca97b1ec1d">pushToCTPWorkList</a>(newctp))</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; {</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <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;TCT Process CallRet old ctp --&quot;</span>; ctp.<a class="code" href="classSVF_1_1CxtThreadProc.html#aed801cfecdbfcd690db2d78de5f8e0b5">dump</a>());</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</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;TCT Process CallRet new ctp --&quot;</span>; newctp.dump());</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; }</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; }</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160;</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(cgEdge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1PTACallGraphEdge.html#a9738544725458bb022b8d5f2dbd281f7af32caf15ca19d512b5183bcf0d859cd7">PTACallGraphEdge::TDForkEdge</a>)</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; {</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">CallInst</a>* fork = SVFUtil::cast&lt;CallInst&gt;(cs.<a class="code" href="classSVF_1_1CallSite.html#ab36a6a35eea673d4bdca615efc4336b1">getInstruction</a>());</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160;</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <a class="code" href="classSVF_1_1TCTNode.html">TCTNode</a>* spawneeNode = <a class="code" href="classSVF_1_1TCT.html#a787e815e9c7e53566ce56127dd31a3a9">getOrCreateTCTNode</a>(cxt,fork, oldCxt, llvmcallee);</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <a class="code" href="classSVF_1_1CxtThreadProc.html">CxtThreadProc</a> newctp(spawneeNode-&gt;getId(),cxt,callee);</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1TCT.html#a002bac3dc928bc78b94de0ca97b1ec1d">pushToCTPWorkList</a>(newctp))</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; {</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1TCT.html#aa87bfebf48f9e74655ab3db4ec1576b3">addTCTEdge</a>(this-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(ctp.<a class="code" href="classSVF_1_1CxtThreadProc.html#a61d950c7469f4bb9d2152b0e7d892ebf">getTid</a>()), spawneeNode))</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; {</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <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;Add TCT Edge from thread &quot;</span> &lt;&lt; ctp.<a class="code" href="classSVF_1_1CxtThreadProc.html#a61d950c7469f4bb9d2152b0e7d892ebf">getTid</a>() &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; this-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(ctp.<a class="code" href="classSVF_1_1CxtThreadProc.html#a61d950c7469f4bb9d2152b0e7d892ebf">getTid</a>())-&gt;getCxtThread().dump();</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot; to thread &quot;</span> &lt;&lt; spawneeNode-&gt;getId() &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; spawneeNode-&gt;getCxtThread().dump();</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span> );</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; }</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</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;TCT Process Fork old ctp --&quot;</span>; ctp.<a class="code" href="classSVF_1_1CxtThreadProc.html#aed801cfecdbfcd690db2d78de5f8e0b5">dump</a>());</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</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;TCT Process Fork new ctp --&quot;</span>; newctp.dump());</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; }</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; }</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160;}</div><div class="ttc" id="classSVF_1_1GenericEdge_html_abe8525c542def8162b094c169a01993b"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">SVF::GenericEdge::getEdgeKind</a></div><div class="ttdeci">GEdgeKind getEdgeKind() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00081">GenericGraph.h:81</a></div></div>
2149
- <div class="ttc" id="classSVF_1_1TCT_html_a002bac3dc928bc78b94de0ca97b1ec1d"><div class="ttname"><a href="classSVF_1_1TCT.html#a002bac3dc928bc78b94de0ca97b1ec1d">SVF::TCT::pushToCTPWorkList</a></div><div class="ttdeci">bool pushToCTPWorkList(const CxtThreadProc &amp;ctp)</div><div class="ttdoc">WorkList helper functions. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00513">TCT.h:513</a></div></div>
2147
+ <p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#l00247">247</a> of file <a class="el" href="TCT_8cpp_source.html">TCT.cpp</a>.</p>
2148
+ <div class="fragment"><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;{</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* callee = cgEdge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>()-&gt;getFunction();</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* llvmcallee = callee-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>();</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160;</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a> cxt(ctp.<a class="code" href="classSVF_1_1CxtProc.html#a99b0f68b4cbd733f91eea33aa3e64eb7">getContext</a>());</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a> oldCxt = cxt;</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <a class="code" href="classSVF_1_1TCT.html#afc6d7a91cfc98561bcce13425964a39e">pushCxt</a>(cxt,cs.<a class="code" href="classSVF_1_1CallSite.html#ab36a6a35eea673d4bdca615efc4336b1">getInstruction</a>(),llvmcallee);</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="keywordflow">if</span>(cgEdge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1PTACallGraphEdge.html#a9738544725458bb022b8d5f2dbd281f7aa968b68fb87a0135833105f4e6413c69">PTACallGraphEdge::CallRetEdge</a>)</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; {</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <a class="code" href="classSVF_1_1CxtThreadProc.html">CxtThreadProc</a> newctp(ctp.<a class="code" href="classSVF_1_1CxtThreadProc.html#a61d950c7469f4bb9d2152b0e7d892ebf">getTid</a>(),cxt,callee);</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1TCT.html#a002bac3dc928bc78b94de0ca97b1ec1d">pushToCTPWorkList</a>(newctp))</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; {</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <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;TCT Process CallRet old ctp --&quot;</span>; ctp.<a class="code" href="classSVF_1_1CxtThreadProc.html#aed801cfecdbfcd690db2d78de5f8e0b5">dump</a>());</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</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;TCT Process CallRet new ctp --&quot;</span>; newctp.dump());</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; }</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; }</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160;</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(cgEdge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1PTACallGraphEdge.html#a9738544725458bb022b8d5f2dbd281f7af32caf15ca19d512b5183bcf0d859cd7">PTACallGraphEdge::TDForkEdge</a>)</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; {</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">CallInst</a>* fork = SVFUtil::cast&lt;CallInst&gt;(cs.<a class="code" href="classSVF_1_1CallSite.html#ab36a6a35eea673d4bdca615efc4336b1">getInstruction</a>());</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160;</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <a class="code" href="classSVF_1_1TCTNode.html">TCTNode</a>* spawneeNode = <a class="code" href="classSVF_1_1TCT.html#a787e815e9c7e53566ce56127dd31a3a9">getOrCreateTCTNode</a>(cxt,fork, oldCxt, llvmcallee);</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <a class="code" href="classSVF_1_1CxtThreadProc.html">CxtThreadProc</a> newctp(spawneeNode-&gt;getId(),cxt,callee);</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160;</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1TCT.html#a002bac3dc928bc78b94de0ca97b1ec1d">pushToCTPWorkList</a>(newctp))</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; {</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1TCT.html#aa87bfebf48f9e74655ab3db4ec1576b3">addTCTEdge</a>(this-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(ctp.<a class="code" href="classSVF_1_1CxtThreadProc.html#a61d950c7469f4bb9d2152b0e7d892ebf">getTid</a>()), spawneeNode))</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; {</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <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;Add TCT Edge from thread &quot;</span> &lt;&lt; ctp.<a class="code" href="classSVF_1_1CxtThreadProc.html#a61d950c7469f4bb9d2152b0e7d892ebf">getTid</a>() &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; this-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(ctp.<a class="code" href="classSVF_1_1CxtThreadProc.html#a61d950c7469f4bb9d2152b0e7d892ebf">getTid</a>())-&gt;getCxtThread().dump();</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot; to thread &quot;</span> &lt;&lt; spawneeNode-&gt;getId() &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; spawneeNode-&gt;getCxtThread().dump();</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span> );</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; }</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</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;TCT Process Fork old ctp --&quot;</span>; ctp.<a class="code" href="classSVF_1_1CxtThreadProc.html#aed801cfecdbfcd690db2d78de5f8e0b5">dump</a>());</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</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;TCT Process Fork new ctp --&quot;</span>; newctp.dump());</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; }</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; }</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160;}</div><div class="ttc" id="classSVF_1_1GenericEdge_html_abe8525c542def8162b094c169a01993b"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">SVF::GenericEdge::getEdgeKind</a></div><div class="ttdeci">GEdgeKind getEdgeKind() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00081">GenericGraph.h:81</a></div></div>
2149
+ <div class="ttc" id="classSVF_1_1TCT_html_a002bac3dc928bc78b94de0ca97b1ec1d"><div class="ttname"><a href="classSVF_1_1TCT.html#a002bac3dc928bc78b94de0ca97b1ec1d">SVF::TCT::pushToCTPWorkList</a></div><div class="ttdeci">bool pushToCTPWorkList(const CxtThreadProc &amp;ctp)</div><div class="ttdoc">WorkList helper functions. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00535">TCT.h:535</a></div></div>
2150
2150
  <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>
2151
- <div class="ttc" id="classSVF_1_1TCT_html_aa87bfebf48f9e74655ab3db4ec1576b3"><div class="ttname"><a href="classSVF_1_1TCT.html#aa87bfebf48f9e74655ab3db4ec1576b3">SVF::TCT::addTCTEdge</a></div><div class="ttdeci">bool addTCTEdge(TCTNode *src, TCTNode *dst)</div><div class="ttdoc">Add TCT edge. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00414">TCT.h:414</a></div></div>
2151
+ <div class="ttc" id="classSVF_1_1TCT_html_aa87bfebf48f9e74655ab3db4ec1576b3"><div class="ttname"><a href="classSVF_1_1TCT.html#aa87bfebf48f9e74655ab3db4ec1576b3">SVF::TCT::addTCTEdge</a></div><div class="ttdeci">bool addTCTEdge(TCTNode *src, TCTNode *dst)</div><div class="ttdoc">Add TCT edge. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00436">TCT.h:436</a></div></div>
2152
2152
  <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>
2153
2153
  <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>
2154
2154
  <div class="ttc" id="classSVF_1_1CallSite_html_ab36a6a35eea673d4bdca615efc4336b1"><div class="ttname"><a href="classSVF_1_1CallSite.html#ab36a6a35eea673d4bdca615efc4336b1">SVF::CallSite::getInstruction</a></div><div class="ttdeci">CallBase * getInstruction() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00258">BasicTypes.h:258</a></div></div>
2155
- <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>
2155
+ <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>
2156
2156
  <div class="ttc" id="classSVF_1_1CxtThreadProc_html_aed801cfecdbfcd690db2d78de5f8e0b5"><div class="ttname"><a href="classSVF_1_1CxtThreadProc.html#aed801cfecdbfcd690db2d78de5f8e0b5">SVF::CxtThreadProc::dump</a></div><div class="ttdeci">void dump() const</div><div class="ttdoc">Dump CxtThreadProc. </div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00447">CxtStmt.h:447</a></div></div>
2157
2157
  <div class="ttc" id="classSVF_1_1CxtThreadProc_html"><div class="ttname"><a href="classSVF_1_1CxtThreadProc.html">SVF::CxtThreadProc</a></div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00394">CxtStmt.h:394</a></div></div>
2158
2158
  <div class="ttc" id="classSVF_1_1PTACallGraphEdge_html_a9738544725458bb022b8d5f2dbd281f7aa968b68fb87a0135833105f4e6413c69"><div class="ttname"><a href="classSVF_1_1PTACallGraphEdge.html#a9738544725458bb022b8d5f2dbd281f7aa968b68fb87a0135833105f4e6413c69">SVF::PTACallGraphEdge::CallRetEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00058">PTACallGraph.h:58</a></div></div>
2159
2159
  <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>
2160
- <div class="ttc" id="classSVF_1_1TCT_html_a787e815e9c7e53566ce56127dd31a3a9"><div class="ttname"><a href="classSVF_1_1TCT.html#a787e815e9c7e53566ce56127dd31a3a9">SVF::TCT::getOrCreateTCTNode</a></div><div class="ttdeci">TCTNode * getOrCreateTCTNode(const CallStrCxt &amp;cxt, const CallInst *fork, const CallStrCxt &amp;oldCxt, const Function *routine)</div><div class="ttdoc">Get or create a tct node based on CxtThread. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00466">TCT.h:466</a></div></div>
2160
+ <div class="ttc" id="classSVF_1_1TCT_html_a787e815e9c7e53566ce56127dd31a3a9"><div class="ttname"><a href="classSVF_1_1TCT.html#a787e815e9c7e53566ce56127dd31a3a9">SVF::TCT::getOrCreateTCTNode</a></div><div class="ttdeci">TCTNode * getOrCreateTCTNode(const CallStrCxt &amp;cxt, const CallInst *fork, const CallStrCxt &amp;oldCxt, const Function *routine)</div><div class="ttdoc">Get or create a tct node based on CxtThread. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00488">TCT.h:488</a></div></div>
2161
2161
  <div class="ttc" id="classSVF_1_1GenericEdge_html_aeaa31a2c8479e831b36ce2e2582ceb86"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">SVF::GenericEdge::getDstNode</a></div><div class="ttdeci">NodeType * getDstNode() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00093">GenericGraph.h:93</a></div></div>
2162
2162
  <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>
2163
2163
  <div class="ttc" id="classSVF_1_1CxtThreadProc_html_a61d950c7469f4bb9d2152b0e7d892ebf"><div class="ttname"><a href="classSVF_1_1CxtThreadProc.html#a61d950c7469f4bb9d2152b0e7d892ebf">SVF::CxtThreadProc::getTid</a></div><div class="ttdeci">NodeID getTid() const</div><div class="ttdoc">Return current thread id. </div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00410">CxtStmt.h:410</a></div></div>
@@ -2165,7 +2165,7 @@ Additional Inherited Members</h2></td></tr>
2165
2165
  <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>
2166
2166
  <div class="ttc" id="classSVF_1_1PTACallGraphEdge_html_a9738544725458bb022b8d5f2dbd281f7af32caf15ca19d512b5183bcf0d859cd7"><div class="ttname"><a href="classSVF_1_1PTACallGraphEdge.html#a9738544725458bb022b8d5f2dbd281f7af32caf15ca19d512b5183bcf0d859cd7">SVF::PTACallGraphEdge::TDForkEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00058">PTACallGraph.h:58</a></div></div>
2167
2167
  <div class="ttc" id="classSVF_1_1CxtProc_html_a99b0f68b4cbd733f91eea33aa3e64eb7"><div class="ttname"><a href="classSVF_1_1CxtProc.html#a99b0f68b4cbd733f91eea33aa3e64eb7">SVF::CxtProc::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#l00330">CxtStmt.h:330</a></div></div>
2168
- <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>
2168
+ <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>
2169
2169
  <div class="ttc" id="classSVF_1_1GenericGraph_html_a43c9c773bfa17abf481c33073e30d01b"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">SVF::GenericGraph::getGNode</a></div><div class="ttdeci">NodeType * getGNode(NodeID id) const</div><div class="ttdoc">Get a node. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00391">GenericGraph.h:391</a></div></div>
2170
2170
  <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>
2171
2171
  </div><!-- fragment -->
@@ -2206,10 +2206,10 @@ Additional Inherited Members</h2></td></tr>
2206
2206
  <p>Whether we have aleady created this call graph edge. </p>
2207
2207
  <p>Whether we have already created this call graph edge </p>
2208
2208
 
2209
- <p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#l00567">567</a> of file <a class="el" href="TCT_8cpp_source.html">TCT.cpp</a>.</p>
2210
- <div class="fragment"><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160;{</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; <a class="code" href="classSVF_1_1TCTEdge.html">TCTEdge</a> edge(src, dst, kind);</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; <a class="code" href="classSVF_1_1TCTEdge.html">TCTEdge</a>* outEdge = src-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a0931220d7a38e03f206cbdc6465d32ad">hasOutgoingEdge</a>(&amp;edge);</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; <a class="code" href="classSVF_1_1TCTEdge.html">TCTEdge</a>* inEdge = dst-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a06a7373b11143e709784de784fa476fe">hasIncomingEdge</a>(&amp;edge);</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; <span class="keywordflow">if</span> (outEdge &amp;&amp; inEdge)</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; {</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; assert(outEdge == inEdge &amp;&amp; <span class="stringliteral">&quot;edges not match&quot;</span>);</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; <span class="keywordflow">return</span> outEdge;</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; }</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160;}</div><div class="ttc" id="classSVF_1_1GenericNode_html_a06a7373b11143e709784de784fa476fe"><div class="ttname"><a href="classSVF_1_1GenericNode.html#a06a7373b11143e709784de784fa476fe">SVF::GenericNode::hasIncomingEdge</a></div><div class="ttdeci">bool hasIncomingEdge() const</div><div class="ttdoc">Has incoming/outgoing edge set. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00194">GenericGraph.h:194</a></div></div>
2209
+ <p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#l00590">590</a> of file <a class="el" href="TCT_8cpp_source.html">TCT.cpp</a>.</p>
2210
+ <div class="fragment"><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160;{</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; <a class="code" href="classSVF_1_1TCTEdge.html">TCTEdge</a> edge(src, dst, kind);</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; <a class="code" href="classSVF_1_1TCTEdge.html">TCTEdge</a>* outEdge = src-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a0931220d7a38e03f206cbdc6465d32ad">hasOutgoingEdge</a>(&amp;edge);</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; <a class="code" href="classSVF_1_1TCTEdge.html">TCTEdge</a>* inEdge = dst-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a06a7373b11143e709784de784fa476fe">hasIncomingEdge</a>(&amp;edge);</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; <span class="keywordflow">if</span> (outEdge &amp;&amp; inEdge)</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; {</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; assert(outEdge == inEdge &amp;&amp; <span class="stringliteral">&quot;edges not match&quot;</span>);</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; <span class="keywordflow">return</span> outEdge;</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; }</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160;}</div><div class="ttc" id="classSVF_1_1GenericNode_html_a06a7373b11143e709784de784fa476fe"><div class="ttname"><a href="classSVF_1_1GenericNode.html#a06a7373b11143e709784de784fa476fe">SVF::GenericNode::hasIncomingEdge</a></div><div class="ttdeci">bool hasIncomingEdge() const</div><div class="ttdoc">Has incoming/outgoing edge set. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00194">GenericGraph.h:194</a></div></div>
2211
2211
  <div class="ttc" id="classSVF_1_1GenericNode_html_a0931220d7a38e03f206cbdc6465d32ad"><div class="ttname"><a href="classSVF_1_1GenericNode.html#a0931220d7a38e03f206cbdc6465d32ad">SVF::GenericNode::hasOutgoingEdge</a></div><div class="ttdeci">bool hasOutgoingEdge() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00198">GenericGraph.h:198</a></div></div>
2212
- <div class="ttc" id="classSVF_1_1TCTEdge_html"><div class="ttname"><a href="classSVF_1_1TCTEdge.html">SVF::TCTEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00029">TCT.h:29</a></div></div>
2212
+ <div class="ttc" id="classSVF_1_1TCTEdge_html"><div class="ttname"><a href="classSVF_1_1TCTEdge.html">SVF::TCTEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00051">TCT.h:51</a></div></div>
2213
2213
  </div><!-- fragment -->
2214
2214
  </div>
2215
2215
  </div>
@@ -2240,8 +2240,8 @@ Additional Inherited Members</h2></td></tr>
2240
2240
  <p>Get parent and sibling threads. </p>
2241
2241
  <p>Has parent thread </p>
2242
2242
 
2243
- <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00275">275</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
2244
- <div class="fragment"><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; {</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <span class="keyword">const</span> TCTNode* node = <a class="code" href="classSVF_1_1TCT.html#a7b4ad0b052e1f8b6869733eef15f4e4d">getTCTNode</a>(tid);</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <span class="keywordflow">return</span> node-&gt;getInEdges().size()==1;</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; }</div><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>
2243
+ <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00297">297</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
2244
+ <div class="fragment"><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; {</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <span class="keyword">const</span> TCTNode* node = <a class="code" href="classSVF_1_1TCT.html#a7b4ad0b052e1f8b6869733eef15f4e4d">getTCTNode</a>(tid);</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <span class="keywordflow">return</span> node-&gt;getInEdges().size()==1;</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; }</div><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>
2245
2245
  </div><!-- fragment -->
2246
2246
  </div>
2247
2247
  </div>
@@ -2271,8 +2271,8 @@ Additional Inherited Members</h2></td></tr>
2271
2271
 
2272
2272
  <p>Find/Get <a class="el" href="classSVF_1_1TCT.html">TCT</a> node. </p>
2273
2273
 
2274
- <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00235">235</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
2275
- <div class="fragment"><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; {</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1TCT.html#a0ccb6e9ffff0f22a0a054a92222893d5">ctpToNodeMap</a>.find(ct)!=<a class="code" href="classSVF_1_1TCT.html#a0ccb6e9ffff0f22a0a054a92222893d5">ctpToNodeMap</a>.end();</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; }</div><div class="ttc" id="classSVF_1_1TCT_html_a0ccb6e9ffff0f22a0a054a92222893d5"><div class="ttname"><a href="classSVF_1_1TCT.html#a0ccb6e9ffff0f22a0a054a92222893d5">SVF::TCT::ctpToNodeMap</a></div><div class="ttdeci">CxtThreadToNodeMap ctpToNodeMap</div><div class="ttdoc">Record all visited ctps. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00545">TCT.h:545</a></div></div>
2274
+ <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00257">257</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
2275
+ <div class="fragment"><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; {</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1TCT.html#a0ccb6e9ffff0f22a0a054a92222893d5">ctpToNodeMap</a>.find(ct)!=<a class="code" href="classSVF_1_1TCT.html#a0ccb6e9ffff0f22a0a054a92222893d5">ctpToNodeMap</a>.end();</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; }</div><div class="ttc" id="classSVF_1_1TCT_html_a0ccb6e9ffff0f22a0a054a92222893d5"><div class="ttname"><a href="classSVF_1_1TCT.html#a0ccb6e9ffff0f22a0a054a92222893d5">SVF::TCT::ctpToNodeMap</a></div><div class="ttdeci">CxtThreadToNodeMap ctpToNodeMap</div><div class="ttdoc">Record all visited ctps. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00567">TCT.h:567</a></div></div>
2276
2276
  </div><!-- fragment -->
2277
2277
  </div>
2278
2278
  </div>
@@ -2312,9 +2312,9 @@ Additional Inherited Members</h2></td></tr>
2312
2312
 
2313
2313
  <p>Whether two functions in the same callgraph scc. </p>
2314
2314
 
2315
- <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00267">267</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
2316
- <div class="fragment"><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; {</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <span class="keywordflow">return</span> (<a class="code" href="classSVF_1_1TCT.html#a30662928bafc97c1e7b123270ca69980">tcgSCC</a>-&gt;<a class="code" href="classSVF_1_1SCCDetection.html#a3a5fdc9330a657240f77199f5aee602d">repNode</a>(src-&gt;getId()) == <a class="code" href="classSVF_1_1TCT.html#a30662928bafc97c1e7b123270ca69980">tcgSCC</a>-&gt;<a class="code" href="classSVF_1_1SCCDetection.html#a3a5fdc9330a657240f77199f5aee602d">repNode</a>(dst-&gt;getId()));</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; }</div><div class="ttc" id="classSVF_1_1SCCDetection_html_a3a5fdc9330a657240f77199f5aee602d"><div class="ttname"><a href="classSVF_1_1SCCDetection.html#a3a5fdc9330a657240f77199f5aee602d">SVF::SCCDetection::repNode</a></div><div class="ttdeci">NodeID repNode(NodeID n) const</div><div class="ttdoc">get the rep node if not found return itself </div><div class="ttdef"><b>Definition:</b> <a href="SCC_8h_source.html#l00139">SCC.h:139</a></div></div>
2317
- <div class="ttc" id="classSVF_1_1TCT_html_a30662928bafc97c1e7b123270ca69980"><div class="ttname"><a href="classSVF_1_1TCT.html#a30662928bafc97c1e7b123270ca69980">SVF::TCT::tcgSCC</a></div><div class="ttdeci">ThreadCallGraphSCC * tcgSCC</div><div class="ttdoc">Procedures we care about during call graph traversing when creating TCT. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00542">TCT.h:542</a></div></div>
2315
+ <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00289">289</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
2316
+ <div class="fragment"><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; {</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="keywordflow">return</span> (<a class="code" href="classSVF_1_1TCT.html#a30662928bafc97c1e7b123270ca69980">tcgSCC</a>-&gt;<a class="code" href="classSVF_1_1SCCDetection.html#a3a5fdc9330a657240f77199f5aee602d">repNode</a>(src-&gt;getId()) == <a class="code" href="classSVF_1_1TCT.html#a30662928bafc97c1e7b123270ca69980">tcgSCC</a>-&gt;<a class="code" href="classSVF_1_1SCCDetection.html#a3a5fdc9330a657240f77199f5aee602d">repNode</a>(dst-&gt;getId()));</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; }</div><div class="ttc" id="classSVF_1_1SCCDetection_html_a3a5fdc9330a657240f77199f5aee602d"><div class="ttname"><a href="classSVF_1_1SCCDetection.html#a3a5fdc9330a657240f77199f5aee602d">SVF::SCCDetection::repNode</a></div><div class="ttdeci">NodeID repNode(NodeID n) const</div><div class="ttdoc">get the rep node if not found return itself </div><div class="ttdef"><b>Definition:</b> <a href="SCC_8h_source.html#l00139">SCC.h:139</a></div></div>
2317
+ <div class="ttc" id="classSVF_1_1TCT_html_a30662928bafc97c1e7b123270ca69980"><div class="ttname"><a href="classSVF_1_1TCT.html#a30662928bafc97c1e7b123270ca69980">SVF::TCT::tcgSCC</a></div><div class="ttdeci">ThreadCallGraphSCC * tcgSCC</div><div class="ttdoc">Procedures we care about during call graph traversing when creating TCT. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00564">TCT.h:564</a></div></div>
2318
2318
  </div><!-- fragment -->
2319
2319
  </div>
2320
2320
  </div>
@@ -2344,8 +2344,8 @@ Additional Inherited Members</h2></td></tr>
2344
2344
 
2345
2345
  <p>Whether it is a candidate function for indirect call. </p>
2346
2346
 
2347
- <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00248">248</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
2348
- <div class="fragment"><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; {</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <span class="keywordflow">for</span>(PTACallGraph::FunctionSet::const_iterator cit = callees.begin(),</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; ecit = callees.end(); cit!=ecit; cit++)</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; {</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1TCT.html#a720a934088dddda2b134cabcc59ef43d">candidateFuncSet</a>.find((*cit)-&gt;getLLVMFun())!=<a class="code" href="classSVF_1_1TCT.html#a720a934088dddda2b134cabcc59ef43d">candidateFuncSet</a>.end())</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; }</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; }</div><div class="ttc" id="classSVF_1_1TCT_html_a720a934088dddda2b134cabcc59ef43d"><div class="ttname"><a href="classSVF_1_1TCT.html#a720a934088dddda2b134cabcc59ef43d">SVF::TCT::candidateFuncSet</a></div><div class="ttdeci">FunSet candidateFuncSet</div><div class="ttdoc">Procedures that are neither called by other functions nor extern functions. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00541">TCT.h:541</a></div></div>
2347
+ <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00270">270</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
2348
+ <div class="fragment"><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; {</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <span class="keywordflow">for</span>(PTACallGraph::FunctionSet::const_iterator cit = callees.begin(),</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; ecit = callees.end(); cit!=ecit; cit++)</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; {</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1TCT.html#a720a934088dddda2b134cabcc59ef43d">candidateFuncSet</a>.find((*cit)-&gt;getLLVMFun())!=<a class="code" href="classSVF_1_1TCT.html#a720a934088dddda2b134cabcc59ef43d">candidateFuncSet</a>.end())</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; }</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; }</div><div class="ttc" id="classSVF_1_1TCT_html_a720a934088dddda2b134cabcc59ef43d"><div class="ttname"><a href="classSVF_1_1TCT.html#a720a934088dddda2b134cabcc59ef43d">SVF::TCT::candidateFuncSet</a></div><div class="ttdeci">FunSet candidateFuncSet</div><div class="ttdoc">Procedures that are neither called by other functions nor extern functions. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00563">TCT.h:563</a></div></div>
2349
2349
  </div><!-- fragment -->
2350
2350
  </div>
2351
2351
  </div>
@@ -2373,8 +2373,8 @@ Additional Inherited Members</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="TCT_8h_source.html#l00258">258</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
2377
- <div class="fragment"><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; {</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1TCT.html#a720a934088dddda2b134cabcc59ef43d">candidateFuncSet</a>.find(fun)!=<a class="code" href="classSVF_1_1TCT.html#a720a934088dddda2b134cabcc59ef43d">candidateFuncSet</a>.end();</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; }</div><div class="ttc" id="classSVF_1_1TCT_html_a720a934088dddda2b134cabcc59ef43d"><div class="ttname"><a href="classSVF_1_1TCT.html#a720a934088dddda2b134cabcc59ef43d">SVF::TCT::candidateFuncSet</a></div><div class="ttdeci">FunSet candidateFuncSet</div><div class="ttdoc">Procedures that are neither called by other functions nor extern functions. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00541">TCT.h:541</a></div></div>
2376
+ <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00280">280</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
2377
+ <div class="fragment"><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; {</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1TCT.html#a720a934088dddda2b134cabcc59ef43d">candidateFuncSet</a>.find(fun)!=<a class="code" href="classSVF_1_1TCT.html#a720a934088dddda2b134cabcc59ef43d">candidateFuncSet</a>.end();</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; }</div><div class="ttc" id="classSVF_1_1TCT_html_a720a934088dddda2b134cabcc59ef43d"><div class="ttname"><a href="classSVF_1_1TCT.html#a720a934088dddda2b134cabcc59ef43d">SVF::TCT::candidateFuncSet</a></div><div class="ttdeci">FunSet candidateFuncSet</div><div class="ttdoc">Procedures that are neither called by other functions nor extern functions. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00563">TCT.h:563</a></div></div>
2378
2378
  </div><!-- fragment -->
2379
2379
  </div>
2380
2380
  </div>
@@ -2402,8 +2402,8 @@ Additional Inherited Members</h2></td></tr>
2402
2402
  </table>
2403
2403
  </div><div class="memdoc">
2404
2404
 
2405
- <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00262">262</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
2406
- <div class="fragment"><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; {</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1TCT.html#aa69b82c888c8193e97f9e95c62ac99d4">isCandidateFun</a>(fun-&gt;getLLVMFun());</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; }</div><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>
2405
+ <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00284">284</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
2406
+ <div class="fragment"><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; {</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1TCT.html#aa69b82c888c8193e97f9e95c62ac99d4">isCandidateFun</a>(fun-&gt;getLLVMFun());</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; }</div><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>
2407
2407
  </div><!-- fragment -->
2408
2408
  </div>
2409
2409
  </div>
@@ -2435,19 +2435,19 @@ Additional Inherited Members</h2></td></tr>
2435
2435
  <p>Whether an instruction is in a loop</p>
2436
2436
  <p>An instruction i is in loop (1) the instruction i itself (2) all the callsites invoke the function where i resides in </p>
2437
2437
 
2438
- <p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#l00025">25</a> of file <a class="el" href="TCT_8cpp_source.html">TCT.cpp</a>.</p>
2439
- <div class="fragment"><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;{</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; assert(inst &amp;&amp; <span class="stringliteral">&quot;null value instruction!!&quot;</span>);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <a class="code" href="classSVF_1_1TCT.html#a3238d12557309967f8bdfdfc275b6710">InstSet</a> insts;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <a class="code" href="classSVF_1_1FIFOWorkList.html">FIFOWorkList&lt;const Instruction*&gt;</a> worklist;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">push</a>(inst);</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keywordflow">while</span>(!worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#a7056704c224dfb4b57287fe90c004aa8">empty</a>())</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst = worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#a8fa72918fce7e9c0b2dc34b683a797c6">pop</a>();</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; insts.insert(inst);</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a>* cgnode = <a class="code" href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">tcg</a>-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">getCallGraphNode</a>(<a class="code" href="classSVF_1_1TCT.html#a21bcc063a406eb8650df42cf5ced68c9">getSVFFun</a>(inst-&gt;getParent()-&gt;getParent()));</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1PTACallGraphNode.html#adf17f5699c9f40ffc8837e813e3af3ec">PTACallGraphNode::const_iterator</a> nit = cgnode-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ae5b113921530eee6afe58a65d8e5b3a7">InEdgeBegin</a>(), neit = cgnode-&gt;<a class="code" href="classSVF_1_1GenericNode.html#afe6a7b286d9af4992f41b59612fd2900">InEdgeEnd</a>(); nit!=neit; nit++)</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keywordflow">for</span>(PTACallGraphEdge::CallInstSet::const_iterator cit = (*nit)-&gt;directCallsBegin(),</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; ecit = (*nit)-&gt;directCallsEnd(); cit!=ecit; ++cit)</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordflow">if</span>(insts.insert((*cit)-&gt;getCallSite()).second)</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">push</a>((*cit)-&gt;getCallSite());</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; }</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordflow">for</span>(PTACallGraphEdge::CallInstSet::const_iterator cit = (*nit)-&gt;indirectCallsBegin(),</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; ecit = (*nit)-&gt;indirectCallsEnd(); cit!=ecit; ++cit)</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordflow">if</span>(insts.insert((*cit)-&gt;getCallSite()).second)</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">push</a>((*cit)-&gt;getCallSite());</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; }</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; }</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; }</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keywordflow">for</span>(InstSet::const_iterator it = insts.begin(), eit = insts.end(); it!=eit; ++it)</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; {</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* i = *it;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1TCT.html#add9104a3d7a821e9c2f266ae1810d2e3">getLoop</a>(i))</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; }</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</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>
2438
+ <p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#l00048">48</a> of file <a class="el" href="TCT_8cpp_source.html">TCT.cpp</a>.</p>
2439
+ <div class="fragment"><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;{</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; assert(inst &amp;&amp; <span class="stringliteral">&quot;null value instruction!!&quot;</span>);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <a class="code" href="classSVF_1_1TCT.html#a3238d12557309967f8bdfdfc275b6710">InstSet</a> insts;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <a class="code" href="classSVF_1_1FIFOWorkList.html">FIFOWorkList&lt;const Instruction*&gt;</a> worklist;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">push</a>(inst);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">while</span>(!worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#a7056704c224dfb4b57287fe90c004aa8">empty</a>())</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; {</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst = worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#a8fa72918fce7e9c0b2dc34b683a797c6">pop</a>();</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; insts.insert(inst);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a>* cgnode = <a class="code" href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">tcg</a>-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">getCallGraphNode</a>(<a class="code" href="classSVF_1_1TCT.html#a21bcc063a406eb8650df42cf5ced68c9">getSVFFun</a>(inst-&gt;getParent()-&gt;getParent()));</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1PTACallGraphNode.html#adf17f5699c9f40ffc8837e813e3af3ec">PTACallGraphNode::const_iterator</a> nit = cgnode-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ae5b113921530eee6afe58a65d8e5b3a7">InEdgeBegin</a>(), neit = cgnode-&gt;<a class="code" href="classSVF_1_1GenericNode.html#afe6a7b286d9af4992f41b59612fd2900">InEdgeEnd</a>(); nit!=neit; nit++)</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; {</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordflow">for</span>(PTACallGraphEdge::CallInstSet::const_iterator cit = (*nit)-&gt;directCallsBegin(),</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; ecit = (*nit)-&gt;directCallsEnd(); cit!=ecit; ++cit)</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; {</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordflow">if</span>(insts.insert((*cit)-&gt;getCallSite()).second)</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">push</a>((*cit)-&gt;getCallSite());</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; }</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordflow">for</span>(PTACallGraphEdge::CallInstSet::const_iterator cit = (*nit)-&gt;indirectCallsBegin(),</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; ecit = (*nit)-&gt;indirectCallsEnd(); cit!=ecit; ++cit)</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; {</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">if</span>(insts.insert((*cit)-&gt;getCallSite()).second)</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">push</a>((*cit)-&gt;getCallSite());</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; }</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; }</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; }</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">for</span>(InstSet::const_iterator it = insts.begin(), eit = insts.end(); it!=eit; ++it)</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; {</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* i = *it;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1TCT.html#add9104a3d7a821e9c2f266ae1810d2e3">getLoop</a>(i))</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; }</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</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>
2440
2440
  <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>
2441
2441
  <div class="ttc" id="classSVF_1_1GenericNode_html_ae5b113921530eee6afe58a65d8e5b3a7"><div class="ttname"><a href="classSVF_1_1GenericNode.html#ae5b113921530eee6afe58a65d8e5b3a7">SVF::GenericNode::InEdgeBegin</a></div><div class="ttdeci">iterator InEdgeBegin()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00214">GenericGraph.h:214</a></div></div>
2442
- <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>
2443
- <div class="ttc" id="classSVF_1_1TCT_html_ac9ddd6559e818f37c018ed5435182363"><div class="ttname"><a href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">SVF::TCT::tcg</a></div><div class="ttdeci">ThreadCallGraph * tcg</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00396">TCT.h:396</a></div></div>
2444
- <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>
2442
+ <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>
2443
+ <div class="ttc" id="classSVF_1_1TCT_html_ac9ddd6559e818f37c018ed5435182363"><div class="ttname"><a href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">SVF::TCT::tcg</a></div><div class="ttdeci">ThreadCallGraph * tcg</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00418">TCT.h:418</a></div></div>
2444
+ <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>
2445
2445
  <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>
2446
2446
  <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>
2447
2447
  <div class="ttc" id="classSVF_1_1GenericNode_html_afe6a7b286d9af4992f41b59612fd2900"><div class="ttname"><a href="classSVF_1_1GenericNode.html#afe6a7b286d9af4992f41b59612fd2900">SVF::GenericNode::InEdgeEnd</a></div><div class="ttdeci">iterator InEdgeEnd()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00218">GenericGraph.h:218</a></div></div>
2448
2448
  <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>
2449
2449
  <div class="ttc" id="classSVF_1_1FIFOWorkList_html"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html">SVF::FIFOWorkList</a></div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00137">WorkList.h:137</a></div></div>
2450
- <div class="ttc" id="classSVF_1_1TCT_html_a3238d12557309967f8bdfdfc275b6710"><div class="ttname"><a href="classSVF_1_1TCT.html#a3238d12557309967f8bdfdfc275b6710">SVF::TCT::InstSet</a></div><div class="ttdeci">Set&lt; const Instruction * &gt; InstSet</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00123">TCT.h:123</a></div></div>
2450
+ <div class="ttc" id="classSVF_1_1TCT_html_a3238d12557309967f8bdfdfc275b6710"><div class="ttname"><a href="classSVF_1_1TCT.html#a3238d12557309967f8bdfdfc275b6710">SVF::TCT::InstSet</a></div><div class="ttdeci">Set&lt; const Instruction * &gt; InstSet</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00145">TCT.h:145</a></div></div>
2451
2451
  <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>
2452
2452
  <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>
2453
2453
  </div><!-- fragment -->
@@ -2480,19 +2480,19 @@ Additional Inherited Members</h2></td></tr>
2480
2480
  <p>Whether an instruction is in a recursion. </p>
2481
2481
  <p>An instruction i is in a recursion (1) the function f where i resides in is in a recursion (2) any caller function starting from the function f in is in a recursion </p>
2482
2482
 
2483
- <p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#l00071">71</a> of file <a class="el" href="TCT_8cpp_source.html">TCT.cpp</a>.</p>
2484
- <div class="fragment"><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;{</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* f = inst-&gt;getParent()-&gt;getParent();</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <a class="code" href="classSVF_1_1FIFOWorkList.html">FIFOWorkList&lt;const Function*&gt;</a> worklist;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const Function*&gt;</a> visits;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">push</a>(f);</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">while</span>(!worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#a7056704c224dfb4b57287fe90c004aa8">empty</a>())</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; {</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun = worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#a8fa72918fce7e9c0b2dc34b683a797c6">pop</a>();</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; visits.insert(fun);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svffun = <a class="code" href="classSVF_1_1TCT.html#a21bcc063a406eb8650df42cf5ced68c9">getSVFFun</a>(fun);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1TCT.html#a30662928bafc97c1e7b123270ca69980">tcgSCC</a>-&gt;<a class="code" href="classSVF_1_1SCCDetection.html#a5d699af73b1e7ad4e3a5f6d26b8b6d15">isInCycle</a>(<a class="code" href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">tcg</a>-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">getCallGraphNode</a>(svffun)-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>()))</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a>* cgnode = <a class="code" href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">tcg</a>-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">getCallGraphNode</a>(svffun);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1PTACallGraphNode.html#adf17f5699c9f40ffc8837e813e3af3ec">PTACallGraphNode::const_iterator</a> nit = cgnode-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ae5b113921530eee6afe58a65d8e5b3a7">InEdgeBegin</a>(), neit = cgnode-&gt;<a class="code" href="classSVF_1_1GenericNode.html#afe6a7b286d9af4992f41b59612fd2900">InEdgeEnd</a>(); nit!=neit; nit++)</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; {</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="keywordflow">for</span>(PTACallGraphEdge::CallInstSet::const_iterator cit = (*nit)-&gt;directCallsBegin(),</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; ecit = (*nit)-&gt;directCallsEnd(); cit!=ecit; ++cit)</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; {</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* caller = (*cit)-&gt;getCallSite()-&gt;getParent()-&gt;getParent();</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keywordflow">if</span>(visits.find(caller)==visits.end())</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">push</a>(caller);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; }</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordflow">for</span>(PTACallGraphEdge::CallInstSet::const_iterator cit = (*nit)-&gt;indirectCallsBegin(),</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; ecit = (*nit)-&gt;indirectCallsEnd(); cit!=ecit; ++cit)</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; {</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* caller = (*cit)-&gt;getCallSite()-&gt;getParent()-&gt;getParent();</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordflow">if</span>(visits.find(caller)==visits.end())</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">push</a>(caller);</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; }</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; }</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; }</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;}</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>
2483
+ <p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#l00094">94</a> of file <a class="el" href="TCT_8cpp_source.html">TCT.cpp</a>.</p>
2484
+ <div class="fragment"><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;{</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* f = inst-&gt;getParent()-&gt;getParent();</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <a class="code" href="classSVF_1_1FIFOWorkList.html">FIFOWorkList&lt;const Function*&gt;</a> worklist;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const Function*&gt;</a> visits;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">push</a>(f);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</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="l00102"></a><span class="lineno"> 102</span>&#160; {</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun = worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#a8fa72918fce7e9c0b2dc34b683a797c6">pop</a>();</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; visits.insert(fun);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svffun = <a class="code" href="classSVF_1_1TCT.html#a21bcc063a406eb8650df42cf5ced68c9">getSVFFun</a>(fun);</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1TCT.html#a30662928bafc97c1e7b123270ca69980">tcgSCC</a>-&gt;<a class="code" href="classSVF_1_1SCCDetection.html#a5d699af73b1e7ad4e3a5f6d26b8b6d15">isInCycle</a>(<a class="code" href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">tcg</a>-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">getCallGraphNode</a>(svffun)-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>()))</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a>* cgnode = <a class="code" href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">tcg</a>-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">getCallGraphNode</a>(svffun);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1PTACallGraphNode.html#adf17f5699c9f40ffc8837e813e3af3ec">PTACallGraphNode::const_iterator</a> nit = cgnode-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ae5b113921530eee6afe58a65d8e5b3a7">InEdgeBegin</a>(), neit = cgnode-&gt;<a class="code" href="classSVF_1_1GenericNode.html#afe6a7b286d9af4992f41b59612fd2900">InEdgeEnd</a>(); nit!=neit; nit++)</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; {</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keywordflow">for</span>(PTACallGraphEdge::CallInstSet::const_iterator cit = (*nit)-&gt;directCallsBegin(),</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; ecit = (*nit)-&gt;directCallsEnd(); cit!=ecit; ++cit)</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; {</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* caller = (*cit)-&gt;getCallSite()-&gt;getParent()-&gt;getParent();</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordflow">if</span>(visits.find(caller)==visits.end())</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">push</a>(caller);</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; }</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordflow">for</span>(PTACallGraphEdge::CallInstSet::const_iterator cit = (*nit)-&gt;indirectCallsBegin(),</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; ecit = (*nit)-&gt;indirectCallsEnd(); cit!=ecit; ++cit)</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; {</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* caller = (*cit)-&gt;getCallSite()-&gt;getParent()-&gt;getParent();</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keywordflow">if</span>(visits.find(caller)==visits.end())</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">push</a>(caller);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; }</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; }</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; }</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;}</div><div class="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>
2485
2485
  <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>
2486
2486
  <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>
2487
2487
  <div class="ttc" id="classSVF_1_1GenericNode_html_ae5b113921530eee6afe58a65d8e5b3a7"><div class="ttname"><a href="classSVF_1_1GenericNode.html#ae5b113921530eee6afe58a65d8e5b3a7">SVF::GenericNode::InEdgeBegin</a></div><div class="ttdeci">iterator InEdgeBegin()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00214">GenericGraph.h:214</a></div></div>
2488
- <div class="ttc" id="classSVF_1_1TCT_html_ac9ddd6559e818f37c018ed5435182363"><div class="ttname"><a href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">SVF::TCT::tcg</a></div><div class="ttdeci">ThreadCallGraph * tcg</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00396">TCT.h:396</a></div></div>
2489
- <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>
2488
+ <div class="ttc" id="classSVF_1_1TCT_html_ac9ddd6559e818f37c018ed5435182363"><div class="ttname"><a href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">SVF::TCT::tcg</a></div><div class="ttdeci">ThreadCallGraph * tcg</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00418">TCT.h:418</a></div></div>
2489
+ <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>
2490
2490
  <div class="ttc" id="namespaceSVF_html_af739db846e47ba6b2fd15eaad31ab7fb"><div class="ttname"><a href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">SVF::Set</a></div><div class="ttdeci">std::unordered_set&lt; Key, Hash, KeyEqual, Allocator &gt; Set</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00105">SVFBasicTypes.h:105</a></div></div>
2491
2491
  <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>
2492
2492
  <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>
2493
2493
  <div class="ttc" id="classSVF_1_1GenericNode_html_afe6a7b286d9af4992f41b59612fd2900"><div class="ttname"><a href="classSVF_1_1GenericNode.html#afe6a7b286d9af4992f41b59612fd2900">SVF::GenericNode::InEdgeEnd</a></div><div class="ttdeci">iterator InEdgeEnd()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00218">GenericGraph.h:218</a></div></div>
2494
2494
  <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>
2495
- <div class="ttc" id="classSVF_1_1TCT_html_a30662928bafc97c1e7b123270ca69980"><div class="ttname"><a href="classSVF_1_1TCT.html#a30662928bafc97c1e7b123270ca69980">SVF::TCT::tcgSCC</a></div><div class="ttdeci">ThreadCallGraphSCC * tcgSCC</div><div class="ttdoc">Procedures we care about during call graph traversing when creating TCT. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00542">TCT.h:542</a></div></div>
2495
+ <div class="ttc" id="classSVF_1_1TCT_html_a30662928bafc97c1e7b123270ca69980"><div class="ttname"><a href="classSVF_1_1TCT.html#a30662928bafc97c1e7b123270ca69980">SVF::TCT::tcgSCC</a></div><div class="ttdeci">ThreadCallGraphSCC * tcgSCC</div><div class="ttdoc">Procedures we care about during call graph traversing when creating TCT. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00564">TCT.h:564</a></div></div>
2496
2496
  <div class="ttc" id="classSVF_1_1FIFOWorkList_html"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html">SVF::FIFOWorkList</a></div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00137">WorkList.h:137</a></div></div>
2497
2497
  <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>
2498
2498
  <div class="ttc" id="classSVF_1_1SCCDetection_html_a5d699af73b1e7ad4e3a5f6d26b8b6d15"><div class="ttname"><a href="classSVF_1_1SCCDetection.html#a5d699af73b1e7ad4e3a5f6d26b8b6d15">SVF::SCCDetection::isInCycle</a></div><div class="ttdeci">bool isInCycle(NodeID n) const</div><div class="ttdoc">whether the node is in a cycle </div><div class="ttdef"><b>Definition:</b> <a href="SCC_8h_source.html#l00149">SCC.h:149</a></div></div>
@@ -2530,9 +2530,9 @@ Additional Inherited Members</h2></td></tr>
2530
2530
  <p>Return true if a join instruction must be executed inside a loop. </p>
2531
2531
  <p>Return true if a join instruction must be executed inside a loop joinbb should post dominate the successive basic block of a loop header </p>
2532
2532
 
2533
- <p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#l00272">272</a> of file <a class="el" href="TCT_8cpp_source.html">TCT.cpp</a>.</p>
2534
- <div class="fragment"><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160;{</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* loopheadbb = lp-&gt;getHeader();</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* joinbb = join-&gt;getParent();</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; assert(loopheadbb-&gt;getParent()==joinbb-&gt;getParent() &amp;&amp; <span class="stringliteral">&quot;should inside same function&quot;</span>);</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160;</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ab34383ee87cd45eb485fa29db482ffef">PostDominatorTree</a>* pdt = <a class="code" href="classSVF_1_1TCT.html#ae4d26d2a77e45104523cfc481012bccc">getPostDT</a>(loopheadbb-&gt;getParent());</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">succ_const_iterator</a> it = succ_begin(loopheadbb), ie = succ_end(loopheadbb);</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; it != ie; ++it)</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; {</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="keywordflow">if</span>(lp-&gt;contains(*it))</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; {</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <span class="keywordflow">if</span>(pdt-&gt;dominates(joinbb,*it)==<span class="keyword">false</span>)</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; }</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; }</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160;</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160;}</div><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>
2535
- <div class="ttc" id="classSVF_1_1TCT_html_ae4d26d2a77e45104523cfc481012bccc"><div class="ttname"><a href="classSVF_1_1TCT.html#ae4d26d2a77e45104523cfc481012bccc">SVF::TCT::getPostDT</a></div><div class="ttdeci">const PostDominatorTree * getPostDT(const Function *fun)</div><div class="ttdoc">Get dominator for a function. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#l00362">TCT.cpp:362</a></div></div>
2533
+ <p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#l00295">295</a> of file <a class="el" href="TCT_8cpp_source.html">TCT.cpp</a>.</p>
2534
+ <div class="fragment"><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160;{</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* loopheadbb = lp-&gt;getHeader();</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* joinbb = join-&gt;getParent();</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; assert(loopheadbb-&gt;getParent()==joinbb-&gt;getParent() &amp;&amp; <span class="stringliteral">&quot;should inside same function&quot;</span>);</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160;</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ab34383ee87cd45eb485fa29db482ffef">PostDominatorTree</a>* pdt = <a class="code" href="classSVF_1_1TCT.html#ae4d26d2a77e45104523cfc481012bccc">getPostDT</a>(loopheadbb-&gt;getParent());</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">succ_const_iterator</a> it = succ_begin(loopheadbb), ie = succ_end(loopheadbb);</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; it != ie; ++it)</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; {</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <span class="keywordflow">if</span>(lp-&gt;contains(*it))</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; {</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <span class="keywordflow">if</span>(pdt-&gt;dominates(joinbb,*it)==<span class="keyword">false</span>)</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; }</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; }</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160;</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160;}</div><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>
2535
+ <div class="ttc" id="classSVF_1_1TCT_html_ae4d26d2a77e45104523cfc481012bccc"><div class="ttname"><a href="classSVF_1_1TCT.html#ae4d26d2a77e45104523cfc481012bccc">SVF::TCT::getPostDT</a></div><div class="ttdeci">const PostDominatorTree * getPostDT(const Function *fun)</div><div class="ttdoc">Get dominator for a function. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#l00385">TCT.cpp:385</a></div></div>
2536
2536
  <div class="ttc" id="namespaceSVF_html_a3436a988bf80c021cd8022fb445b66d5"><div class="ttname"><a href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">SVF::succ_const_iterator</a></div><div class="ttdeci">llvm::succ_const_iterator succ_const_iterator</div><div class="ttdoc">LLVM Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00117">BasicTypes.h:117</a></div></div>
2537
2537
  <div class="ttc" id="namespaceSVF_html_ab34383ee87cd45eb485fa29db482ffef"><div class="ttname"><a href="namespaceSVF.html#ab34383ee87cd45eb485fa29db482ffef">SVF::PostDominatorTree</a></div><div class="ttdeci">llvm::PostDominatorTree PostDominatorTree</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00109">BasicTypes.h:109</a></div></div>
2538
2538
  </div><!-- fragment -->
@@ -2564,10 +2564,10 @@ Additional Inherited Members</h2></td></tr>
2564
2564
 
2565
2565
  <p>Whether a join site is in recursion. </p>
2566
2566
 
2567
- <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00381">381</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
2568
- <div class="fragment"><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; {</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; assert(<a class="code" href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">tcg</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>(join) &amp;&amp; <span class="stringliteral">&quot;not a join site&quot;</span>);</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_1TCT.html#a1b3872361dc17aaea359db8ce0cc2431">inRecurJoinSites</a>.find(join)!=<a class="code" href="classSVF_1_1TCT.html#a1b3872361dc17aaea359db8ce0cc2431">inRecurJoinSites</a>.end();</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; }</div><div class="ttc" id="classSVF_1_1TCT_html_ac9ddd6559e818f37c018ed5435182363"><div class="ttname"><a href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">SVF::TCT::tcg</a></div><div class="ttdeci">ThreadCallGraph * tcg</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00396">TCT.h:396</a></div></div>
2567
+ <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00403">403</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
2568
+ <div class="fragment"><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; {</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; assert(<a class="code" href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">tcg</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>(join) &amp;&amp; <span class="stringliteral">&quot;not a join site&quot;</span>);</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_1TCT.html#a1b3872361dc17aaea359db8ce0cc2431">inRecurJoinSites</a>.find(join)!=<a class="code" href="classSVF_1_1TCT.html#a1b3872361dc17aaea359db8ce0cc2431">inRecurJoinSites</a>.end();</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; }</div><div class="ttc" id="classSVF_1_1TCT_html_ac9ddd6559e818f37c018ed5435182363"><div class="ttname"><a href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">SVF::TCT::tcg</a></div><div class="ttdeci">ThreadCallGraph * tcg</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00418">TCT.h:418</a></div></div>
2569
2569
  <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>
2570
- <div class="ttc" id="classSVF_1_1TCT_html_a1b3872361dc17aaea359db8ce0cc2431"><div class="ttname"><a href="classSVF_1_1TCT.html#a1b3872361dc17aaea359db8ce0cc2431">SVF::TCT::inRecurJoinSites</a></div><div class="ttdeci">InstSet inRecurJoinSites</div><div class="ttdoc">Fork or Join sites in recursions. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00550">TCT.h:550</a></div></div>
2570
+ <div class="ttc" id="classSVF_1_1TCT_html_a1b3872361dc17aaea359db8ce0cc2431"><div class="ttname"><a href="classSVF_1_1TCT.html#a1b3872361dc17aaea359db8ce0cc2431">SVF::TCT::inRecurJoinSites</a></div><div class="ttdeci">InstSet inRecurJoinSites</div><div class="ttdoc">Fork or Join sites in recursions. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00572">TCT.h:572</a></div></div>
2571
2571
  <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>
2572
2572
  </div><!-- fragment -->
2573
2573
  </div>
@@ -2599,10 +2599,10 @@ Additional Inherited Members</h2></td></tr>
2599
2599
  <p>Whether a given bb is an exit of a inloop join site. </p>
2600
2600
  <p>Whether a given bb is an exit of a inloop join site </p>
2601
2601
 
2602
- <p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#l00329">329</a> of file <a class="el" href="TCT_8cpp_source.html">TCT.cpp</a>.</p>
2603
- <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="keywordflow">for</span>(InstToLoopMap::const_iterator it = <a class="code" href="classSVF_1_1TCT.html#a5b1f44ffa732607a7800728befa5bc57">joinSiteToLoopMap</a>.begin(), eit = <a class="code" href="classSVF_1_1TCT.html#a5b1f44ffa732607a7800728befa5bc57">joinSiteToLoopMap</a>.end(); it!=eit; ++it)</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; {</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; <a class="code" href="namespaceSVF.html#a02be4933b76c2baa7fdbe8b290e12bb3">SmallBBVector</a> exitbbs;</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; it-&gt;second-&gt;getExitBlocks(exitbbs);</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <span class="keywordflow">while</span>(!exitbbs.empty())</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; {</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* eb = exitbbs.pop_back_val();</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; <span class="keywordflow">if</span>(eb == bb)</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; }</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; }</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160;</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160;}</div><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>
2602
+ <p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#l00352">352</a> of file <a class="el" href="TCT_8cpp_source.html">TCT.cpp</a>.</p>
2603
+ <div class="fragment"><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160;{</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; <span class="keywordflow">for</span>(InstToLoopMap::const_iterator it = <a class="code" href="classSVF_1_1TCT.html#a5b1f44ffa732607a7800728befa5bc57">joinSiteToLoopMap</a>.begin(), eit = <a class="code" href="classSVF_1_1TCT.html#a5b1f44ffa732607a7800728befa5bc57">joinSiteToLoopMap</a>.end(); it!=eit; ++it)</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; {</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <a class="code" href="namespaceSVF.html#a02be4933b76c2baa7fdbe8b290e12bb3">SmallBBVector</a> exitbbs;</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; it-&gt;second-&gt;getExitBlocks(exitbbs);</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; <span class="keywordflow">while</span>(!exitbbs.empty())</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; {</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* eb = exitbbs.pop_back_val();</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; <span class="keywordflow">if</span>(eb == bb)</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; }</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; }</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160;</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160;}</div><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>
2604
2604
  <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>
2605
- <div class="ttc" id="classSVF_1_1TCT_html_a5b1f44ffa732607a7800728befa5bc57"><div class="ttname"><a href="classSVF_1_1TCT.html#a5b1f44ffa732607a7800728befa5bc57">SVF::TCT::joinSiteToLoopMap</a></div><div class="ttdeci">InstToLoopMap joinSiteToLoopMap</div><div class="ttdoc">map an inloop join to its loop class </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00549">TCT.h:549</a></div></div>
2605
+ <div class="ttc" id="classSVF_1_1TCT_html_a5b1f44ffa732607a7800728befa5bc57"><div class="ttname"><a href="classSVF_1_1TCT.html#a5b1f44ffa732607a7800728befa5bc57">SVF::TCT::joinSiteToLoopMap</a></div><div class="ttdeci">InstToLoopMap joinSiteToLoopMap</div><div class="ttdoc">map an inloop join to its loop class </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00571">TCT.h:571</a></div></div>
2606
2606
  </div><!-- fragment -->
2607
2607
  </div>
2608
2608
  </div>
@@ -2633,8 +2633,8 @@ Additional Inherited Members</h2></td></tr>
2633
2633
  <p>Whether a given bb is a loop head of a inloop join site. </p>
2634
2634
  <p>Return true if a given bb is a loop head of a inloop join site </p>
2635
2635
 
2636
- <p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#l00315">315</a> of file <a class="el" href="TCT_8cpp_source.html">TCT.cpp</a>.</p>
2637
- <div class="fragment"><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160;{</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <span class="keywordflow">for</span>(InstToLoopMap::const_iterator it = <a class="code" href="classSVF_1_1TCT.html#a5b1f44ffa732607a7800728befa5bc57">joinSiteToLoopMap</a>.begin(), eit = <a class="code" href="classSVF_1_1TCT.html#a5b1f44ffa732607a7800728befa5bc57">joinSiteToLoopMap</a>.end(); it!=eit; ++it)</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; {</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <span class="keywordflow">if</span>(it-&gt;second-&gt;getHeader() == bb)</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; }</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160;</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160;}</div><div class="ttc" id="classSVF_1_1TCT_html_a5b1f44ffa732607a7800728befa5bc57"><div class="ttname"><a href="classSVF_1_1TCT.html#a5b1f44ffa732607a7800728befa5bc57">SVF::TCT::joinSiteToLoopMap</a></div><div class="ttdeci">InstToLoopMap joinSiteToLoopMap</div><div class="ttdoc">map an inloop join to its loop class </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00549">TCT.h:549</a></div></div>
2636
+ <p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#l00338">338</a> of file <a class="el" href="TCT_8cpp_source.html">TCT.cpp</a>.</p>
2637
+ <div class="fragment"><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160;{</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <span class="keywordflow">for</span>(InstToLoopMap::const_iterator it = <a class="code" href="classSVF_1_1TCT.html#a5b1f44ffa732607a7800728befa5bc57">joinSiteToLoopMap</a>.begin(), eit = <a class="code" href="classSVF_1_1TCT.html#a5b1f44ffa732607a7800728befa5bc57">joinSiteToLoopMap</a>.end(); it!=eit; ++it)</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; {</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <span class="keywordflow">if</span>(it-&gt;second-&gt;getHeader() == bb)</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; }</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160;</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160;}</div><div class="ttc" id="classSVF_1_1TCT_html_a5b1f44ffa732607a7800728befa5bc57"><div class="ttname"><a href="classSVF_1_1TCT.html#a5b1f44ffa732607a7800728befa5bc57">SVF::TCT::joinSiteToLoopMap</a></div><div class="ttdeci">InstToLoopMap joinSiteToLoopMap</div><div class="ttdoc">map an inloop join to its loop class </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00571">TCT.h:571</a></div></div>
2638
2638
  </div><!-- fragment -->
2639
2639
  </div>
2640
2640
  </div>
@@ -2662,8 +2662,8 @@ Additional Inherited Members</h2></td></tr>
2662
2662
  </table>
2663
2663
  </div><div class="memdoc">
2664
2664
 
2665
- <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00527">527</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
2666
- <div class="fragment"><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; {</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1TCT.html#a402dd078c46efc1d7348d81b45e347f2">visitedCTPs</a>.find(ctp)!=<a class="code" href="classSVF_1_1TCT.html#a402dd078c46efc1d7348d81b45e347f2">visitedCTPs</a>.end();</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; }</div><div class="ttc" id="classSVF_1_1TCT_html_a402dd078c46efc1d7348d81b45e347f2"><div class="ttname"><a href="classSVF_1_1TCT.html#a402dd078c46efc1d7348d81b45e347f2">SVF::TCT::visitedCTPs</a></div><div class="ttdeci">CxtThreadProcSet visitedCTPs</div><div class="ttdoc">CxtThreadProc List. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00544">TCT.h:544</a></div></div>
2665
+ <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00549">549</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
2666
+ <div class="fragment"><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; {</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1TCT.html#a402dd078c46efc1d7348d81b45e347f2">visitedCTPs</a>.find(ctp)!=<a class="code" href="classSVF_1_1TCT.html#a402dd078c46efc1d7348d81b45e347f2">visitedCTPs</a>.end();</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; }</div><div class="ttc" id="classSVF_1_1TCT_html_a402dd078c46efc1d7348d81b45e347f2"><div class="ttname"><a href="classSVF_1_1TCT.html#a402dd078c46efc1d7348d81b45e347f2">SVF::TCT::visitedCTPs</a></div><div class="ttdeci">CxtThreadProcSet visitedCTPs</div><div class="ttdoc">CxtThreadProc List. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00566">TCT.h:566</a></div></div>
2667
2667
  </div><!-- fragment -->
2668
2668
  </div>
2669
2669
  </div>
@@ -2693,20 +2693,20 @@ Additional Inherited Members</h2></td></tr>
2693
2693
  <p>Mark relevant procedures that are backward reachable from any fork/join site. </p>
2694
2694
  <p>Mark relevant procedures that are backward reachable from any fork/join site </p>
2695
2695
 
2696
- <p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#l00114">114</a> of file <a class="el" href="TCT_8cpp_source.html">TCT.cpp</a>.</p>
2697
- <div class="fragment"><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;{</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keywordflow">for</span> (ThreadCallGraph::CallSiteSet::const_iterator it = <a class="code" href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">tcg</a>-&gt;<a class="code" href="classSVF_1_1ThreadCallGraph.html#a37f2e076713a9aeb0e4313fb05dfb92e">forksitesBegin</a>(), eit = <a class="code" href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">tcg</a>-&gt;<a class="code" href="classSVF_1_1ThreadCallGraph.html#a1ebbd26c17cff1c1a1bee9caa9a8f825">forksitesEnd</a>(); it != eit; ++it)</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; {</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <a class="code" href="classSVF_1_1TCT.html#a8bb7ffa8dd185c52e6c150f9bc995511">markRelProcs</a>((*it)-&gt;getParent()-&gt;getParent());</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordflow">for</span>(ThreadCallGraph::ForkEdgeSet::const_iterator nit = <a class="code" href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">tcg</a>-&gt;<a class="code" href="classSVF_1_1ThreadCallGraph.html#a8721610a39212613ad55bbd46a35c576">getForkEdgeBegin</a>(*it), neit = <a class="code" href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">tcg</a>-&gt;<a class="code" href="classSVF_1_1ThreadCallGraph.html#a8351e7ab445cb7faf0209d1fbc63fce1">getForkEdgeEnd</a>(*it); nit!=neit; nit++)</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; {</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a>* forkeeNode = (*nit)-&gt;getDstNode();</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <a class="code" href="classSVF_1_1TCT.html#a720a934088dddda2b134cabcc59ef43d">candidateFuncSet</a>.insert(forkeeNode-&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="l00124"></a><span class="lineno"> 124</span>&#160; }</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; }</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keywordflow">for</span> (ThreadCallGraph::CallSiteSet::const_iterator it = <a class="code" href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">tcg</a>-&gt;<a class="code" href="classSVF_1_1ThreadCallGraph.html#a98ecfe14be2d38d292b5919716cdd29d">joinsitesBegin</a>(), eit = <a class="code" href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">tcg</a>-&gt;<a class="code" href="classSVF_1_1ThreadCallGraph.html#a50502f398e5eac9c6da3e26ea6052057">joinsitesEnd</a>(); it != eit; ++it)</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; {</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <a class="code" href="classSVF_1_1TCT.html#a8bb7ffa8dd185c52e6c150f9bc995511">markRelProcs</a>((*it)-&gt;getParent()-&gt;getParent());</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; }</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1TCT.html#a720a934088dddda2b134cabcc59ef43d">candidateFuncSet</a>.empty())</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">writeWrnMsg</a>(<span class="stringliteral">&quot;We didn&#39;t recognize any fork site, this is single thread program?&quot;</span>);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;}</div><div class="ttc" id="classSVF_1_1ThreadCallGraph_html_a8721610a39212613ad55bbd46a35c576"><div class="ttname"><a href="classSVF_1_1ThreadCallGraph.html#a8721610a39212613ad55bbd46a35c576">SVF::ThreadCallGraph::getForkEdgeBegin</a></div><div class="ttdeci">ForkEdgeSet::const_iterator getForkEdgeBegin(const CallICFGNode *cs) const</div><div class="ttdef"><b>Definition:</b> <a href="ThreadCallGraph_8h_source.html#l00208">ThreadCallGraph.h:208</a></div></div>
2696
+ <p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#l00137">137</a> of file <a class="el" href="TCT_8cpp_source.html">TCT.cpp</a>.</p>
2697
+ <div class="fragment"><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;{</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keywordflow">for</span> (ThreadCallGraph::CallSiteSet::const_iterator it = <a class="code" href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">tcg</a>-&gt;<a class="code" href="classSVF_1_1ThreadCallGraph.html#a37f2e076713a9aeb0e4313fb05dfb92e">forksitesBegin</a>(), eit = <a class="code" href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">tcg</a>-&gt;<a class="code" href="classSVF_1_1ThreadCallGraph.html#a1ebbd26c17cff1c1a1bee9caa9a8f825">forksitesEnd</a>(); it != eit; ++it)</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; {</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <a class="code" href="classSVF_1_1TCT.html#a8bb7ffa8dd185c52e6c150f9bc995511">markRelProcs</a>((*it)-&gt;getParent()-&gt;getParent());</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="keywordflow">for</span>(ThreadCallGraph::ForkEdgeSet::const_iterator nit = <a class="code" href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">tcg</a>-&gt;<a class="code" href="classSVF_1_1ThreadCallGraph.html#a8721610a39212613ad55bbd46a35c576">getForkEdgeBegin</a>(*it), neit = <a class="code" href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">tcg</a>-&gt;<a class="code" href="classSVF_1_1ThreadCallGraph.html#a8351e7ab445cb7faf0209d1fbc63fce1">getForkEdgeEnd</a>(*it); nit!=neit; nit++)</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; {</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a>* forkeeNode = (*nit)-&gt;getDstNode();</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <a class="code" href="classSVF_1_1TCT.html#a720a934088dddda2b134cabcc59ef43d">candidateFuncSet</a>.insert(forkeeNode-&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="l00147"></a><span class="lineno"> 147</span>&#160; }</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; }</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keywordflow">for</span> (ThreadCallGraph::CallSiteSet::const_iterator it = <a class="code" href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">tcg</a>-&gt;<a class="code" href="classSVF_1_1ThreadCallGraph.html#a98ecfe14be2d38d292b5919716cdd29d">joinsitesBegin</a>(), eit = <a class="code" href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">tcg</a>-&gt;<a class="code" href="classSVF_1_1ThreadCallGraph.html#a50502f398e5eac9c6da3e26ea6052057">joinsitesEnd</a>(); it != eit; ++it)</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; {</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <a class="code" href="classSVF_1_1TCT.html#a8bb7ffa8dd185c52e6c150f9bc995511">markRelProcs</a>((*it)-&gt;getParent()-&gt;getParent());</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; }</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1TCT.html#a720a934088dddda2b134cabcc59ef43d">candidateFuncSet</a>.empty())</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">writeWrnMsg</a>(<span class="stringliteral">&quot;We didn&#39;t recognize any fork site, this is single thread program?&quot;</span>);</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;}</div><div class="ttc" id="classSVF_1_1ThreadCallGraph_html_a8721610a39212613ad55bbd46a35c576"><div class="ttname"><a href="classSVF_1_1ThreadCallGraph.html#a8721610a39212613ad55bbd46a35c576">SVF::ThreadCallGraph::getForkEdgeBegin</a></div><div class="ttdeci">ForkEdgeSet::const_iterator getForkEdgeBegin(const CallICFGNode *cs) const</div><div class="ttdef"><b>Definition:</b> <a href="ThreadCallGraph_8h_source.html#l00208">ThreadCallGraph.h:208</a></div></div>
2698
2698
  <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>
2699
2699
  <div class="ttc" id="classSVF_1_1ThreadCallGraph_html_a8351e7ab445cb7faf0209d1fbc63fce1"><div class="ttname"><a href="classSVF_1_1ThreadCallGraph.html#a8351e7ab445cb7faf0209d1fbc63fce1">SVF::ThreadCallGraph::getForkEdgeEnd</a></div><div class="ttdeci">ForkEdgeSet::const_iterator getForkEdgeEnd(const CallICFGNode *cs) const</div><div class="ttdef"><b>Definition:</b> <a href="ThreadCallGraph_8h_source.html#l00214">ThreadCallGraph.h:214</a></div></div>
2700
2700
  <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>
2701
2701
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a077caa1b10ab84d101d79fc7ea50db2d"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">SVF::SVFUtil::writeWrnMsg</a></div><div class="ttdeci">void writeWrnMsg(std::string msg)</div><div class="ttdoc">Writes a message run through wrnMsg. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00067">SVFUtil.cpp:67</a></div></div>
2702
- <div class="ttc" id="classSVF_1_1TCT_html_ac9ddd6559e818f37c018ed5435182363"><div class="ttname"><a href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">SVF::TCT::tcg</a></div><div class="ttdeci">ThreadCallGraph * tcg</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00396">TCT.h:396</a></div></div>
2703
- <div class="ttc" id="classSVF_1_1TCT_html_a720a934088dddda2b134cabcc59ef43d"><div class="ttname"><a href="classSVF_1_1TCT.html#a720a934088dddda2b134cabcc59ef43d">SVF::TCT::candidateFuncSet</a></div><div class="ttdeci">FunSet candidateFuncSet</div><div class="ttdoc">Procedures that are neither called by other functions nor extern functions. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00541">TCT.h:541</a></div></div>
2702
+ <div class="ttc" id="classSVF_1_1TCT_html_ac9ddd6559e818f37c018ed5435182363"><div class="ttname"><a href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">SVF::TCT::tcg</a></div><div class="ttdeci">ThreadCallGraph * tcg</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00418">TCT.h:418</a></div></div>
2703
+ <div class="ttc" id="classSVF_1_1TCT_html_a720a934088dddda2b134cabcc59ef43d"><div class="ttname"><a href="classSVF_1_1TCT.html#a720a934088dddda2b134cabcc59ef43d">SVF::TCT::candidateFuncSet</a></div><div class="ttdeci">FunSet candidateFuncSet</div><div class="ttdoc">Procedures that are neither called by other functions nor extern functions. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00563">TCT.h:563</a></div></div>
2704
2704
  <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>
2705
2705
  <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>
2706
2706
  <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>
2707
2707
  <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>
2708
2708
  <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>
2709
- <div class="ttc" id="classSVF_1_1TCT_html_a8bb7ffa8dd185c52e6c150f9bc995511"><div class="ttname"><a href="classSVF_1_1TCT.html#a8bb7ffa8dd185c52e6c150f9bc995511">SVF::TCT::markRelProcs</a></div><div class="ttdeci">void markRelProcs()</div><div class="ttdoc">Mark relevant procedures that are backward reachable from any fork/join site. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#l00114">TCT.cpp:114</a></div></div>
2709
+ <div class="ttc" id="classSVF_1_1TCT_html_a8bb7ffa8dd185c52e6c150f9bc995511"><div class="ttname"><a href="classSVF_1_1TCT.html#a8bb7ffa8dd185c52e6c150f9bc995511">SVF::TCT::markRelProcs</a></div><div class="ttdeci">void markRelProcs()</div><div class="ttdoc">Mark relevant procedures that are backward reachable from any fork/join site. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#l00137">TCT.cpp:137</a></div></div>
2710
2710
  </div><!-- fragment -->
2711
2711
  </div>
2712
2712
  </div>
@@ -2734,15 +2734,15 @@ Additional Inherited Members</h2></td></tr>
2734
2734
  </table>
2735
2735
  </div><div class="memdoc">
2736
2736
 
2737
- <p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#l00140">140</a> of file <a class="el" href="TCT_8cpp_source.html">TCT.cpp</a>.</p>
2738
- <div class="fragment"><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;{</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svffun = <a class="code" href="classSVF_1_1TCT.html#a21bcc063a406eb8650df42cf5ced68c9">getSVFFun</a>(fun);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a>* cgnode = <a class="code" href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">tcg</a>-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">getCallGraphNode</a>(svffun);</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <a class="code" href="classSVF_1_1FIFOWorkList.html">FIFOWorkList&lt;const PTACallGraphNode*&gt;</a> worklist;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <a class="code" href="classSVF_1_1TCT.html#afb579a5bdcc0a1c6b075bb9aae36c237">PTACGNodeSet</a> visited;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">push</a>(cgnode);</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; visited.insert(cgnode);</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</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="l00149"></a><span class="lineno"> 149</span>&#160; {</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a>* node = worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#a8fa72918fce7e9c0b2dc34b683a797c6">pop</a>();</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <a class="code" href="classSVF_1_1TCT.html#a720a934088dddda2b134cabcc59ef43d">candidateFuncSet</a>.insert(node-&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="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1PTACallGraphNode.html#adf17f5699c9f40ffc8837e813e3af3ec">PTACallGraphNode::const_iterator</a> nit = node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ae5b113921530eee6afe58a65d8e5b3a7">InEdgeBegin</a>(), neit = node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#afe6a7b286d9af4992f41b59612fd2900">InEdgeEnd</a>(); nit!=neit; nit++)</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; {</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a>* srcNode = (*nit)-&gt;getSrcNode();</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keywordflow">if</span>(visited.find(srcNode)==visited.end())</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; {</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; visited.insert(srcNode);</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">push</a>(srcNode);</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; }</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; }</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; }</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;}</div><div class="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>
2737
+ <p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#l00163">163</a> of file <a class="el" href="TCT_8cpp_source.html">TCT.cpp</a>.</p>
2738
+ <div class="fragment"><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;{</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svffun = <a class="code" href="classSVF_1_1TCT.html#a21bcc063a406eb8650df42cf5ced68c9">getSVFFun</a>(fun);</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a>* cgnode = <a class="code" href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">tcg</a>-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">getCallGraphNode</a>(svffun);</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <a class="code" href="classSVF_1_1FIFOWorkList.html">FIFOWorkList&lt;const PTACallGraphNode*&gt;</a> worklist;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <a class="code" href="classSVF_1_1TCT.html#afb579a5bdcc0a1c6b075bb9aae36c237">PTACGNodeSet</a> visited;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">push</a>(cgnode);</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; visited.insert(cgnode);</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</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="l00172"></a><span class="lineno"> 172</span>&#160; {</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a>* node = worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#a8fa72918fce7e9c0b2dc34b683a797c6">pop</a>();</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <a class="code" href="classSVF_1_1TCT.html#a720a934088dddda2b134cabcc59ef43d">candidateFuncSet</a>.insert(node-&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="l00175"></a><span class="lineno"> 175</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1PTACallGraphNode.html#adf17f5699c9f40ffc8837e813e3af3ec">PTACallGraphNode::const_iterator</a> nit = node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ae5b113921530eee6afe58a65d8e5b3a7">InEdgeBegin</a>(), neit = node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#afe6a7b286d9af4992f41b59612fd2900">InEdgeEnd</a>(); nit!=neit; nit++)</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; {</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a>* srcNode = (*nit)-&gt;getSrcNode();</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="keywordflow">if</span>(visited.find(srcNode)==visited.end())</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; {</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; visited.insert(srcNode);</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">push</a>(srcNode);</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; }</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; }</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; }</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;}</div><div class="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>
2739
2739
  <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>
2740
2740
  <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>
2741
- <div class="ttc" id="classSVF_1_1TCT_html_afb579a5bdcc0a1c6b075bb9aae36c237"><div class="ttname"><a href="classSVF_1_1TCT.html#afb579a5bdcc0a1c6b075bb9aae36c237">SVF::TCT::PTACGNodeSet</a></div><div class="ttdeci">Set&lt; const PTACallGraphNode * &gt; PTACGNodeSet</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00124">TCT.h:124</a></div></div>
2741
+ <div class="ttc" id="classSVF_1_1TCT_html_afb579a5bdcc0a1c6b075bb9aae36c237"><div class="ttname"><a href="classSVF_1_1TCT.html#afb579a5bdcc0a1c6b075bb9aae36c237">SVF::TCT::PTACGNodeSet</a></div><div class="ttdeci">Set&lt; const PTACallGraphNode * &gt; PTACGNodeSet</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00146">TCT.h:146</a></div></div>
2742
2742
  <div class="ttc" id="classSVF_1_1GenericNode_html_ae5b113921530eee6afe58a65d8e5b3a7"><div class="ttname"><a href="classSVF_1_1GenericNode.html#ae5b113921530eee6afe58a65d8e5b3a7">SVF::GenericNode::InEdgeBegin</a></div><div class="ttdeci">iterator InEdgeBegin()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00214">GenericGraph.h:214</a></div></div>
2743
- <div class="ttc" id="classSVF_1_1TCT_html_ac9ddd6559e818f37c018ed5435182363"><div class="ttname"><a href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">SVF::TCT::tcg</a></div><div class="ttdeci">ThreadCallGraph * tcg</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00396">TCT.h:396</a></div></div>
2744
- <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>
2745
- <div class="ttc" id="classSVF_1_1TCT_html_a720a934088dddda2b134cabcc59ef43d"><div class="ttname"><a href="classSVF_1_1TCT.html#a720a934088dddda2b134cabcc59ef43d">SVF::TCT::candidateFuncSet</a></div><div class="ttdeci">FunSet candidateFuncSet</div><div class="ttdoc">Procedures that are neither called by other functions nor extern functions. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00541">TCT.h:541</a></div></div>
2743
+ <div class="ttc" id="classSVF_1_1TCT_html_ac9ddd6559e818f37c018ed5435182363"><div class="ttname"><a href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">SVF::TCT::tcg</a></div><div class="ttdeci">ThreadCallGraph * tcg</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00418">TCT.h:418</a></div></div>
2744
+ <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>
2745
+ <div class="ttc" id="classSVF_1_1TCT_html_a720a934088dddda2b134cabcc59ef43d"><div class="ttname"><a href="classSVF_1_1TCT.html#a720a934088dddda2b134cabcc59ef43d">SVF::TCT::candidateFuncSet</a></div><div class="ttdeci">FunSet candidateFuncSet</div><div class="ttdoc">Procedures that are neither called by other functions nor extern functions. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00563">TCT.h:563</a></div></div>
2746
2746
  <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>
2747
2747
  <div class="ttc" id="classSVF_1_1GenericNode_html_afe6a7b286d9af4992f41b59612fd2900"><div class="ttname"><a href="classSVF_1_1GenericNode.html#afe6a7b286d9af4992f41b59612fd2900">SVF::GenericNode::InEdgeEnd</a></div><div class="ttdeci">iterator InEdgeEnd()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00218">GenericGraph.h:218</a></div></div>
2748
2748
  <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>
@@ -2791,19 +2791,19 @@ Additional Inherited Members</h2></td></tr>
2791
2791
  <p>handle calling context for candidate functions only</p>
2792
2792
  <p>partial match </p>
2793
2793
 
2794
- <p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#l00497">497</a> of file <a class="el" href="TCT_8cpp_source.html">TCT.cpp</a>.</p>
2795
- <div class="fragment"><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160;{</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160;</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* caller = call-&gt;getParent()-&gt;getParent();</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svfcallee = <a class="code" href="classSVF_1_1TCT.html#a21bcc063a406eb8650df42cf5ced68c9">getSVFFun</a>(callee);</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> csId = <a class="code" href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">tcg</a>-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#a711bd8ad385f8454fbfcd20f134efe1b">getCallSiteID</a>(<a class="code" href="classSVF_1_1TCT.html#a238810a60f1010c5177e01683c8c1159">getCallICFGNode</a>(call), svfcallee);</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160;</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1TCT.html#aa69b82c888c8193e97f9e95c62ac99d4">isCandidateFun</a>(caller) == <span class="keyword">false</span>)</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160;</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; <span class="keywordflow">if</span>(cxt.empty())</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160;</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1TCT.html#a95cd490d37f8831edc6910f7ecdf413e">inSameCallGraphSCC</a>(<a class="code" href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">tcg</a>-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">getCallGraphNode</a>(<a class="code" href="classSVF_1_1TCT.html#a21bcc063a406eb8650df42cf5ced68c9">getSVFFun</a>(caller)),<a class="code" href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">tcg</a>-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">getCallGraphNode</a>(svfcallee))==<span class="keyword">false</span>)</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; {</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; <span class="keywordflow">if</span>(cxt.back() == csId)</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; cxt.pop_back();</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</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="classSVF_1_1TCT.html#aa86c4422e17cf00408444f18687d555b">dumpCxt</a>(cxt));</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; }</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160;</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160;}</div><div class="ttc" id="classSVF_1_1PTACallGraph_html_a711bd8ad385f8454fbfcd20f134efe1b"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#a711bd8ad385f8454fbfcd20f134efe1b">SVF::PTACallGraph::getCallSiteID</a></div><div class="ttdeci">CallSiteID getCallSiteID(const CallICFGNode *cs, const SVFFunction *callee) const</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00344">PTACallGraph.h:344</a></div></div>
2794
+ <p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#l00520">520</a> of file <a class="el" href="TCT_8cpp_source.html">TCT.cpp</a>.</p>
2795
+ <div class="fragment"><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160;{</div><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="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* caller = call-&gt;getParent()-&gt;getParent();</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svfcallee = <a class="code" href="classSVF_1_1TCT.html#a21bcc063a406eb8650df42cf5ced68c9">getSVFFun</a>(callee);</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> csId = <a class="code" href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">tcg</a>-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#a711bd8ad385f8454fbfcd20f134efe1b">getCallSiteID</a>(<a class="code" href="classSVF_1_1TCT.html#a238810a60f1010c5177e01683c8c1159">getCallICFGNode</a>(call), svfcallee);</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160;</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1TCT.html#aa69b82c888c8193e97f9e95c62ac99d4">isCandidateFun</a>(caller) == <span class="keyword">false</span>)</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160;</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; <span class="keywordflow">if</span>(cxt.empty())</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160;</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1TCT.html#a95cd490d37f8831edc6910f7ecdf413e">inSameCallGraphSCC</a>(<a class="code" href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">tcg</a>-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">getCallGraphNode</a>(<a class="code" href="classSVF_1_1TCT.html#a21bcc063a406eb8650df42cf5ced68c9">getSVFFun</a>(caller)),<a class="code" href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">tcg</a>-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">getCallGraphNode</a>(svfcallee))==<span class="keyword">false</span>)</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; {</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; <span class="keywordflow">if</span>(cxt.back() == csId)</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; cxt.pop_back();</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</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="classSVF_1_1TCT.html#aa86c4422e17cf00408444f18687d555b">dumpCxt</a>(cxt));</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; }</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160;</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160;}</div><div class="ttc" id="classSVF_1_1PTACallGraph_html_a711bd8ad385f8454fbfcd20f134efe1b"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#a711bd8ad385f8454fbfcd20f134efe1b">SVF::PTACallGraph::getCallSiteID</a></div><div class="ttdeci">CallSiteID getCallSiteID(const CallICFGNode *cs, const SVFFunction *callee) const</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00344">PTACallGraph.h:344</a></div></div>
2796
2796
  <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>
2797
2797
  <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>
2798
2798
  <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>
2799
- <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>
2800
- <div class="ttc" id="classSVF_1_1TCT_html_ac9ddd6559e818f37c018ed5435182363"><div class="ttname"><a href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">SVF::TCT::tcg</a></div><div class="ttdeci">ThreadCallGraph * tcg</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00396">TCT.h:396</a></div></div>
2801
- <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>
2799
+ <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>
2800
+ <div class="ttc" id="classSVF_1_1TCT_html_ac9ddd6559e818f37c018ed5435182363"><div class="ttname"><a href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">SVF::TCT::tcg</a></div><div class="ttdeci">ThreadCallGraph * tcg</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00418">TCT.h:418</a></div></div>
2801
+ <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>
2802
2802
  <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>
2803
- <div class="ttc" id="classSVF_1_1TCT_html_a95cd490d37f8831edc6910f7ecdf413e"><div class="ttname"><a href="classSVF_1_1TCT.html#a95cd490d37f8831edc6910f7ecdf413e">SVF::TCT::inSameCallGraphSCC</a></div><div class="ttdeci">bool inSameCallGraphSCC(const PTACallGraphNode *src, const PTACallGraphNode *dst)</div><div class="ttdoc">Whether two functions in the same callgraph scc. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00267">TCT.h:267</a></div></div>
2803
+ <div class="ttc" id="classSVF_1_1TCT_html_a95cd490d37f8831edc6910f7ecdf413e"><div class="ttname"><a href="classSVF_1_1TCT.html#a95cd490d37f8831edc6910f7ecdf413e">SVF::TCT::inSameCallGraphSCC</a></div><div class="ttdeci">bool inSameCallGraphSCC(const PTACallGraphNode *src, const PTACallGraphNode *dst)</div><div class="ttdoc">Whether two functions in the same callgraph scc. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00289">TCT.h:289</a></div></div>
2804
2804
  <div class="ttc" id="namespaceSVF_html_a03d88a0302bcd253387690f13f693f64"><div class="ttname"><a href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">SVF::CallSiteID</a></div><div class="ttdeci">unsigned CallSiteID</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00093">SVFBasicTypes.h:93</a></div></div>
2805
- <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>
2806
- <div class="ttc" id="classSVF_1_1TCT_html_aa86c4422e17cf00408444f18687d555b"><div class="ttname"><a href="classSVF_1_1TCT.html#aa86c4422e17cf00408444f18687d555b">SVF::TCT::dumpCxt</a></div><div class="ttdeci">void dumpCxt(CallStrCxt &amp;cxt)</div><div class="ttdoc">Dump calling context. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#l00528">TCT.cpp:528</a></div></div>
2805
+ <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>
2806
+ <div class="ttc" id="classSVF_1_1TCT_html_aa86c4422e17cf00408444f18687d555b"><div class="ttname"><a href="classSVF_1_1TCT.html#aa86c4422e17cf00408444f18687d555b">SVF::TCT::dumpCxt</a></div><div class="ttdeci">void dumpCxt(CallStrCxt &amp;cxt)</div><div class="ttdoc">Dump calling context. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#l00551">TCT.cpp:551</a></div></div>
2807
2807
  <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>
2808
2808
  </div><!-- fragment -->
2809
2809
  </div>
@@ -2831,8 +2831,8 @@ Additional Inherited Members</h2></td></tr>
2831
2831
  </table>
2832
2832
  </div><div class="memdoc">
2833
2833
 
2834
- <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00522">522</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
2835
- <div class="fragment"><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; {</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; CxtThreadProc ctp = <a class="code" href="classSVF_1_1TCT.html#a80dad1dfdf64cb7a5805eb8bedf79226">ctpList</a>.<a class="code" href="classSVF_1_1FIFOWorkList.html#a8fa72918fce7e9c0b2dc34b683a797c6">pop</a>();</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; <span class="keywordflow">return</span> ctp;</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; }</div><div class="ttc" id="classSVF_1_1TCT_html_a80dad1dfdf64cb7a5805eb8bedf79226"><div class="ttname"><a href="classSVF_1_1TCT.html#a80dad1dfdf64cb7a5805eb8bedf79226">SVF::TCT::ctpList</a></div><div class="ttdeci">CxtThreadProcVec ctpList</div><div class="ttdoc">Thread call graph SCC. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00543">TCT.h:543</a></div></div>
2834
+ <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00544">544</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
2835
+ <div class="fragment"><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; {</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; CxtThreadProc ctp = <a class="code" href="classSVF_1_1TCT.html#a80dad1dfdf64cb7a5805eb8bedf79226">ctpList</a>.<a class="code" href="classSVF_1_1FIFOWorkList.html#a8fa72918fce7e9c0b2dc34b683a797c6">pop</a>();</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; <span class="keywordflow">return</span> ctp;</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; }</div><div class="ttc" id="classSVF_1_1TCT_html_a80dad1dfdf64cb7a5805eb8bedf79226"><div class="ttname"><a href="classSVF_1_1TCT.html#a80dad1dfdf64cb7a5805eb8bedf79226">SVF::TCT::ctpList</a></div><div class="ttdeci">CxtThreadProcVec ctpList</div><div class="ttdoc">Thread call graph SCC. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00565">TCT.h:565</a></div></div>
2836
2836
  <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>
2837
2837
  </div><!-- fragment -->
2838
2838
  </div>
@@ -2855,8 +2855,8 @@ Additional Inherited Members</h2></td></tr>
2855
2855
  <p>Print <a class="el" href="classSVF_1_1TCT.html">TCT</a> information. </p>
2856
2856
  <p>Print <a class="el" href="classSVF_1_1TCT.html">TCT</a> information </p>
2857
2857
 
2858
- <p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#l00555">555</a> of file <a class="el" href="TCT_8cpp_source.html">TCT.cpp</a>.</p>
2859
- <div class="fragment"><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160;{</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1GenericGraph.html#a5dfa3f178d4abf37177d0d74ff4c6a97">TCT::const_iterator</a> it = this-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(), eit = this-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); it!=eit; ++it)</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; {</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;TID &quot;</span> &lt;&lt; it-&gt;first &lt;&lt; <span class="stringliteral">&quot;\t&quot;</span>;</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; it-&gt;second-&gt;getCxtThread().dump();</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; }</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</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>
2858
+ <p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#l00578">578</a> of file <a class="el" href="TCT_8cpp_source.html">TCT.cpp</a>.</p>
2859
+ <div class="fragment"><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160;{</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1GenericGraph.html#a5dfa3f178d4abf37177d0d74ff4c6a97">TCT::const_iterator</a> it = this-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(), eit = this-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); it!=eit; ++it)</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; {</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;TID &quot;</span> &lt;&lt; it-&gt;first &lt;&lt; <span class="stringliteral">&quot;\t&quot;</span>;</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; it-&gt;second-&gt;getCxtThread().dump();</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; }</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</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>
2860
2860
  <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>
2861
2861
  <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>
2862
2862
  <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>
@@ -2899,20 +2899,20 @@ Additional Inherited Members</h2></td></tr>
2899
2899
  <p>Push calling context </p>
2900
2900
  <p>handle calling context for candidate functions only </p>
2901
2901
 
2902
- <p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#l00475">475</a> of file <a class="el" href="TCT_8cpp_source.html">TCT.cpp</a>.</p>
2903
- <div class="fragment"><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160;{</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160;</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* caller = call-&gt;getParent()-&gt;getParent();</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svfcallee = <a class="code" href="classSVF_1_1TCT.html#a21bcc063a406eb8650df42cf5ced68c9">getSVFFun</a>(callee);</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> csId = <a class="code" href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">tcg</a>-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#a711bd8ad385f8454fbfcd20f134efe1b">getCallSiteID</a>(<a class="code" href="classSVF_1_1TCT.html#a238810a60f1010c5177e01683c8c1159">getCallICFGNode</a>(call), svfcallee);</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160;</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1TCT.html#aa69b82c888c8193e97f9e95c62ac99d4">isCandidateFun</a>(caller) == <span class="keyword">false</span>)</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; <span class="keywordflow">return</span>;</div><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">if</span>(<a class="code" href="classSVF_1_1TCT.html#a95cd490d37f8831edc6910f7ecdf413e">inSameCallGraphSCC</a>(<a class="code" href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">tcg</a>-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">getCallGraphNode</a>(<a class="code" href="classSVF_1_1TCT.html#a21bcc063a406eb8650df42cf5ced68c9">getSVFFun</a>(caller)),<a class="code" href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">tcg</a>-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">getCallGraphNode</a>(<a class="code" href="classSVF_1_1TCT.html#a21bcc063a406eb8650df42cf5ced68c9">getSVFFun</a>(callee)))==<span class="keyword">false</span>)</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; {</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; <a class="code" href="classSVF_1_1TCT.html#afc6d7a91cfc98561bcce13425964a39e">pushCxt</a>(cxt,csId);</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</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="classSVF_1_1TCT.html#aa86c4422e17cf00408444f18687d555b">dumpCxt</a>(cxt));</div><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;}</div><div class="ttc" id="classSVF_1_1PTACallGraph_html_a711bd8ad385f8454fbfcd20f134efe1b"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#a711bd8ad385f8454fbfcd20f134efe1b">SVF::PTACallGraph::getCallSiteID</a></div><div class="ttdeci">CallSiteID getCallSiteID(const CallICFGNode *cs, const SVFFunction *callee) const</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00344">PTACallGraph.h:344</a></div></div>
2902
+ <p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#l00498">498</a> of file <a class="el" href="TCT_8cpp_source.html">TCT.cpp</a>.</p>
2903
+ <div class="fragment"><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160;{</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160;</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* caller = call-&gt;getParent()-&gt;getParent();</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svfcallee = <a class="code" href="classSVF_1_1TCT.html#a21bcc063a406eb8650df42cf5ced68c9">getSVFFun</a>(callee);</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> csId = <a class="code" href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">tcg</a>-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#a711bd8ad385f8454fbfcd20f134efe1b">getCallSiteID</a>(<a class="code" href="classSVF_1_1TCT.html#a238810a60f1010c5177e01683c8c1159">getCallICFGNode</a>(call), svfcallee);</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160;</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1TCT.html#aa69b82c888c8193e97f9e95c62ac99d4">isCandidateFun</a>(caller) == <span class="keyword">false</span>)</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160;</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1TCT.html#a95cd490d37f8831edc6910f7ecdf413e">inSameCallGraphSCC</a>(<a class="code" href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">tcg</a>-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">getCallGraphNode</a>(<a class="code" href="classSVF_1_1TCT.html#a21bcc063a406eb8650df42cf5ced68c9">getSVFFun</a>(caller)),<a class="code" href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">tcg</a>-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">getCallGraphNode</a>(<a class="code" href="classSVF_1_1TCT.html#a21bcc063a406eb8650df42cf5ced68c9">getSVFFun</a>(callee)))==<span class="keyword">false</span>)</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; {</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; <a class="code" href="classSVF_1_1TCT.html#afc6d7a91cfc98561bcce13425964a39e">pushCxt</a>(cxt,csId);</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</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="classSVF_1_1TCT.html#aa86c4422e17cf00408444f18687d555b">dumpCxt</a>(cxt));</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; }</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160;}</div><div class="ttc" id="classSVF_1_1PTACallGraph_html_a711bd8ad385f8454fbfcd20f134efe1b"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#a711bd8ad385f8454fbfcd20f134efe1b">SVF::PTACallGraph::getCallSiteID</a></div><div class="ttdeci">CallSiteID getCallSiteID(const CallICFGNode *cs, const SVFFunction *callee) const</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00344">PTACallGraph.h:344</a></div></div>
2904
2904
  <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>
2905
2905
  <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>
2906
2906
  <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>
2907
- <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>
2908
- <div class="ttc" id="classSVF_1_1TCT_html_ac9ddd6559e818f37c018ed5435182363"><div class="ttname"><a href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">SVF::TCT::tcg</a></div><div class="ttdeci">ThreadCallGraph * tcg</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00396">TCT.h:396</a></div></div>
2909
- <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>
2907
+ <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>
2908
+ <div class="ttc" id="classSVF_1_1TCT_html_ac9ddd6559e818f37c018ed5435182363"><div class="ttname"><a href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">SVF::TCT::tcg</a></div><div class="ttdeci">ThreadCallGraph * tcg</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00418">TCT.h:418</a></div></div>
2909
+ <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>
2910
2910
  <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>
2911
- <div class="ttc" id="classSVF_1_1TCT_html_a95cd490d37f8831edc6910f7ecdf413e"><div class="ttname"><a href="classSVF_1_1TCT.html#a95cd490d37f8831edc6910f7ecdf413e">SVF::TCT::inSameCallGraphSCC</a></div><div class="ttdeci">bool inSameCallGraphSCC(const PTACallGraphNode *src, const PTACallGraphNode *dst)</div><div class="ttdoc">Whether two functions in the same callgraph scc. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00267">TCT.h:267</a></div></div>
2911
+ <div class="ttc" id="classSVF_1_1TCT_html_a95cd490d37f8831edc6910f7ecdf413e"><div class="ttname"><a href="classSVF_1_1TCT.html#a95cd490d37f8831edc6910f7ecdf413e">SVF::TCT::inSameCallGraphSCC</a></div><div class="ttdeci">bool inSameCallGraphSCC(const PTACallGraphNode *src, const PTACallGraphNode *dst)</div><div class="ttdoc">Whether two functions in the same callgraph scc. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00289">TCT.h:289</a></div></div>
2912
2912
  <div class="ttc" id="namespaceSVF_html_a03d88a0302bcd253387690f13f693f64"><div class="ttname"><a href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">SVF::CallSiteID</a></div><div class="ttdeci">unsigned CallSiteID</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00093">SVFBasicTypes.h:93</a></div></div>
2913
- <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>
2914
- <div class="ttc" id="classSVF_1_1TCT_html_aa86c4422e17cf00408444f18687d555b"><div class="ttname"><a href="classSVF_1_1TCT.html#aa86c4422e17cf00408444f18687d555b">SVF::TCT::dumpCxt</a></div><div class="ttdeci">void dumpCxt(CallStrCxt &amp;cxt)</div><div class="ttdoc">Dump calling context. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#l00528">TCT.cpp:528</a></div></div>
2915
- <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>
2913
+ <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>
2914
+ <div class="ttc" id="classSVF_1_1TCT_html_aa86c4422e17cf00408444f18687d555b"><div class="ttname"><a href="classSVF_1_1TCT.html#aa86c4422e17cf00408444f18687d555b">SVF::TCT::dumpCxt</a></div><div class="ttdeci">void dumpCxt(CallStrCxt &amp;cxt)</div><div class="ttdoc">Dump calling context. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#l00551">TCT.cpp:551</a></div></div>
2915
+ <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>
2916
2916
  <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>
2917
2917
  </div><!-- fragment -->
2918
2918
  </div>
@@ -2951,8 +2951,8 @@ Additional Inherited Members</h2></td></tr>
2951
2951
  </table>
2952
2952
  </div><div class="memdoc">
2953
2953
 
2954
- <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00374">374</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
2955
- <div class="fragment"><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; {</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; cxt.push_back(csId);</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; <span class="keywordflow">if</span> (cxt.size() &gt; <a class="code" href="classSVF_1_1TCT.html#aaae41663b1d1f4d38b047c50c156defb">MaxCxtSize</a>)</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; <a class="code" href="classSVF_1_1TCT.html#aaae41663b1d1f4d38b047c50c156defb">MaxCxtSize</a> = cxt.size();</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; }</div><div class="ttc" id="classSVF_1_1TCT_html_aaae41663b1d1f4d38b047c50c156defb"><div class="ttname"><a href="classSVF_1_1TCT.html#aaae41663b1d1f4d38b047c50c156defb">SVF::TCT::MaxCxtSize</a></div><div class="ttdeci">u32_t MaxCxtSize</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00400">TCT.h:400</a></div></div>
2954
+ <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00396">396</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
2955
+ <div class="fragment"><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; {</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; cxt.push_back(csId);</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; <span class="keywordflow">if</span> (cxt.size() &gt; <a class="code" href="classSVF_1_1TCT.html#aaae41663b1d1f4d38b047c50c156defb">MaxCxtSize</a>)</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; <a class="code" href="classSVF_1_1TCT.html#aaae41663b1d1f4d38b047c50c156defb">MaxCxtSize</a> = cxt.size();</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; }</div><div class="ttc" id="classSVF_1_1TCT_html_aaae41663b1d1f4d38b047c50c156defb"><div class="ttname"><a href="classSVF_1_1TCT.html#aaae41663b1d1f4d38b047c50c156defb">SVF::TCT::MaxCxtSize</a></div><div class="ttdeci">u32_t MaxCxtSize</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00422">TCT.h:422</a></div></div>
2956
2956
  </div><!-- fragment -->
2957
2957
  </div>
2958
2958
  </div>
@@ -2982,11 +2982,11 @@ Additional Inherited Members</h2></td></tr>
2982
2982
 
2983
2983
  <p>WorkList helper functions. </p>
2984
2984
 
2985
- <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00513">513</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
2986
- <div class="fragment"><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; {</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1TCT.html#a68d2b1107f9cc2edcc01265298b7307c">isVisitedCTPs</a>(ctp)==<span class="keyword">false</span>)</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; {</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; <a class="code" href="classSVF_1_1TCT.html#a402dd078c46efc1d7348d81b45e347f2">visitedCTPs</a>.insert(ctp);</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1TCT.html#a80dad1dfdf64cb7a5805eb8bedf79226">ctpList</a>.<a class="code" href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">push</a>(ctp);</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; }</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; }</div><div class="ttc" id="classSVF_1_1TCT_html_a80dad1dfdf64cb7a5805eb8bedf79226"><div class="ttname"><a href="classSVF_1_1TCT.html#a80dad1dfdf64cb7a5805eb8bedf79226">SVF::TCT::ctpList</a></div><div class="ttdeci">CxtThreadProcVec ctpList</div><div class="ttdoc">Thread call graph SCC. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00543">TCT.h:543</a></div></div>
2987
- <div class="ttc" id="classSVF_1_1TCT_html_a68d2b1107f9cc2edcc01265298b7307c"><div class="ttname"><a href="classSVF_1_1TCT.html#a68d2b1107f9cc2edcc01265298b7307c">SVF::TCT::isVisitedCTPs</a></div><div class="ttdeci">bool isVisitedCTPs(const CxtThreadProc &amp;ctp) const</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00527">TCT.h:527</a></div></div>
2985
+ <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00535">535</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
2986
+ <div class="fragment"><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; {</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1TCT.html#a68d2b1107f9cc2edcc01265298b7307c">isVisitedCTPs</a>(ctp)==<span class="keyword">false</span>)</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; {</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; <a class="code" href="classSVF_1_1TCT.html#a402dd078c46efc1d7348d81b45e347f2">visitedCTPs</a>.insert(ctp);</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1TCT.html#a80dad1dfdf64cb7a5805eb8bedf79226">ctpList</a>.<a class="code" href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">push</a>(ctp);</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; }</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; }</div><div class="ttc" id="classSVF_1_1TCT_html_a80dad1dfdf64cb7a5805eb8bedf79226"><div class="ttname"><a href="classSVF_1_1TCT.html#a80dad1dfdf64cb7a5805eb8bedf79226">SVF::TCT::ctpList</a></div><div class="ttdeci">CxtThreadProcVec ctpList</div><div class="ttdoc">Thread call graph SCC. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00565">TCT.h:565</a></div></div>
2987
+ <div class="ttc" id="classSVF_1_1TCT_html_a68d2b1107f9cc2edcc01265298b7307c"><div class="ttname"><a href="classSVF_1_1TCT.html#a68d2b1107f9cc2edcc01265298b7307c">SVF::TCT::isVisitedCTPs</a></div><div class="ttdeci">bool isVisitedCTPs(const CxtThreadProc &amp;ctp) const</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00549">TCT.h:549</a></div></div>
2988
2988
  <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>
2989
- <div class="ttc" id="classSVF_1_1TCT_html_a402dd078c46efc1d7348d81b45e347f2"><div class="ttname"><a href="classSVF_1_1TCT.html#a402dd078c46efc1d7348d81b45e347f2">SVF::TCT::visitedCTPs</a></div><div class="ttdeci">CxtThreadProcSet visitedCTPs</div><div class="ttdoc">CxtThreadProc List. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00544">TCT.h:544</a></div></div>
2989
+ <div class="ttc" id="classSVF_1_1TCT_html_a402dd078c46efc1d7348d81b45e347f2"><div class="ttname"><a href="classSVF_1_1TCT.html#a402dd078c46efc1d7348d81b45e347f2">SVF::TCT::visitedCTPs</a></div><div class="ttdeci">CxtThreadProcSet visitedCTPs</div><div class="ttdoc">CxtThreadProc List. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00566">TCT.h:566</a></div></div>
2990
2990
  </div><!-- fragment -->
2991
2991
  </div>
2992
2992
  </div>
@@ -3018,9 +3018,9 @@ Additional Inherited Members</h2></td></tr>
3018
3018
  <p>non-main thread</p>
3019
3019
  <p>main thread </p>
3020
3020
 
3021
- <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00484">484</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
3022
- <div class="fragment"><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; {</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; <span class="keywordflow">if</span>(ct.getThread() != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; {</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; ct.setInloop(<a class="code" href="classSVF_1_1TCT.html#a6bcf4c3c095830626423bf522653b306">isInLoopInstruction</a>(ct.getThread()));</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; ct.setIncycle(<a class="code" href="classSVF_1_1TCT.html#af7cd9f1862836818593685bc5105da52">isInRecursion</a>(ct.getThread()));</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; }</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <span class="keywordflow">else</span></div><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; ct.setInloop(<span class="keyword">false</span>);</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; ct.setIncycle(<span class="keyword">false</span>);</div><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; }</div><div class="ttc" id="classSVF_1_1TCT_html_af7cd9f1862836818593685bc5105da52"><div class="ttname"><a href="classSVF_1_1TCT.html#af7cd9f1862836818593685bc5105da52">SVF::TCT::isInRecursion</a></div><div class="ttdeci">bool isInRecursion(const Instruction *inst) const</div><div class="ttdoc">Whether an instruction is in a recursion. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#l00071">TCT.cpp:71</a></div></div>
3023
- <div class="ttc" id="classSVF_1_1TCT_html_a6bcf4c3c095830626423bf522653b306"><div class="ttname"><a href="classSVF_1_1TCT.html#a6bcf4c3c095830626423bf522653b306">SVF::TCT::isInLoopInstruction</a></div><div class="ttdeci">bool isInLoopInstruction(const Instruction *inst)</div><div class="ttdoc">Multi-forked threads. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#l00025">TCT.cpp:25</a></div></div>
3021
+ <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00506">506</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
3022
+ <div class="fragment"><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; {</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; <span class="keywordflow">if</span>(ct.getThread() != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; {</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; ct.setInloop(<a class="code" href="classSVF_1_1TCT.html#a6bcf4c3c095830626423bf522653b306">isInLoopInstruction</a>(ct.getThread()));</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; ct.setIncycle(<a class="code" href="classSVF_1_1TCT.html#af7cd9f1862836818593685bc5105da52">isInRecursion</a>(ct.getThread()));</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; }</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; {</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; ct.setInloop(<span class="keyword">false</span>);</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; ct.setIncycle(<span class="keyword">false</span>);</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; }</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; }</div><div class="ttc" id="classSVF_1_1TCT_html_af7cd9f1862836818593685bc5105da52"><div class="ttname"><a href="classSVF_1_1TCT.html#af7cd9f1862836818593685bc5105da52">SVF::TCT::isInRecursion</a></div><div class="ttdeci">bool isInRecursion(const Instruction *inst) const</div><div class="ttdoc">Whether an instruction is in a recursion. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#l00094">TCT.cpp:94</a></div></div>
3023
+ <div class="ttc" id="classSVF_1_1TCT_html_a6bcf4c3c095830626423bf522653b306"><div class="ttname"><a href="classSVF_1_1TCT.html#a6bcf4c3c095830626423bf522653b306">SVF::TCT::isInLoopInstruction</a></div><div class="ttdeci">bool isInLoopInstruction(const Instruction *inst)</div><div class="ttdoc">Multi-forked threads. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#l00048">TCT.cpp:48</a></div></div>
3024
3024
  </div><!-- fragment -->
3025
3025
  </div>
3026
3026
  </div>
@@ -3047,7 +3047,7 @@ Additional Inherited Members</h2></td></tr>
3047
3047
 
3048
3048
  <p>Procedures that are neither called by other functions nor extern functions. </p>
3049
3049
 
3050
- <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00541">541</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
3050
+ <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00563">563</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
3051
3051
 
3052
3052
  </div>
3053
3053
  </div>
@@ -3073,7 +3073,7 @@ Additional Inherited Members</h2></td></tr>
3073
3073
 
3074
3074
  <p>Thread call graph SCC. </p>
3075
3075
 
3076
- <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00543">543</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
3076
+ <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00565">565</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
3077
3077
 
3078
3078
  </div>
3079
3079
  </div>
@@ -3099,7 +3099,7 @@ Additional Inherited Members</h2></td></tr>
3099
3099
 
3100
3100
  <p>Record all visited ctps. </p>
3101
3101
 
3102
- <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00545">545</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
3102
+ <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00567">567</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
3103
3103
 
3104
3104
  </div>
3105
3105
  </div>
@@ -3125,7 +3125,7 @@ Additional Inherited Members</h2></td></tr>
3125
3125
 
3126
3126
  <p>Map a ctp to its graph node. </p>
3127
3127
 
3128
- <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00546">546</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
3128
+ <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00568">568</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
3129
3129
 
3130
3130
  </div>
3131
3131
  </div>
@@ -3151,7 +3151,7 @@ Additional Inherited Members</h2></td></tr>
3151
3151
 
3152
3152
  <p>Map a <a class="el" href="classSVF_1_1CxtThread.html">CxtThread</a> to the context at its spawning site (fork site). </p>
3153
3153
 
3154
- <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00547">547</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
3154
+ <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00569">569</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
3155
3155
 
3156
3156
  </div>
3157
3157
  </div>
@@ -3175,7 +3175,7 @@ Additional Inherited Members</h2></td></tr>
3175
3175
  </table>
3176
3176
  </div><div class="memdoc">
3177
3177
 
3178
- <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00540">540</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
3178
+ <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00562">562</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
3179
3179
 
3180
3180
  </div>
3181
3181
  </div>
@@ -3201,7 +3201,7 @@ Additional Inherited Members</h2></td></tr>
3201
3201
 
3202
3202
  <p>Fork or Join sites in recursions. </p>
3203
3203
 
3204
- <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00550">550</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
3204
+ <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00572">572</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
3205
3205
 
3206
3206
  </div>
3207
3207
  </div>
@@ -3227,7 +3227,7 @@ Additional Inherited Members</h2></td></tr>
3227
3227
 
3228
3228
  <p>map an inloop join to its loop class </p>
3229
3229
 
3230
- <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00549">549</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
3230
+ <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00571">571</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
3231
3231
 
3232
3232
  </div>
3233
3233
  </div>
@@ -3254,7 +3254,7 @@ Additional Inherited Members</h2></td></tr>
3254
3254
  <p>Map a <a class="el" href="classSVF_1_1CxtThread.html">CxtThread</a> to its start routine function. </p>
3255
3255
  <p>LoopInfo </p>
3256
3256
 
3257
- <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00548">548</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
3257
+ <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00570">570</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
3258
3258
 
3259
3259
  </div>
3260
3260
  </div>
@@ -3278,7 +3278,7 @@ Additional Inherited Members</h2></td></tr>
3278
3278
  </table>
3279
3279
  </div><div class="memdoc">
3280
3280
 
3281
- <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00400">400</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
3281
+ <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00422">422</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
3282
3282
 
3283
3283
  </div>
3284
3284
  </div>
@@ -3302,7 +3302,7 @@ Additional Inherited Members</h2></td></tr>
3302
3302
  </table>
3303
3303
  </div><div class="memdoc">
3304
3304
 
3305
- <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00397">397</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
3305
+ <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00419">419</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
3306
3306
 
3307
3307
  </div>
3308
3308
  </div>
@@ -3326,7 +3326,7 @@ Additional Inherited Members</h2></td></tr>
3326
3326
  </table>
3327
3327
  </div><div class="memdoc">
3328
3328
 
3329
- <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00396">396</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
3329
+ <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00418">418</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
3330
3330
 
3331
3331
  </div>
3332
3332
  </div>
@@ -3352,7 +3352,7 @@ Additional Inherited Members</h2></td></tr>
3352
3352
 
3353
3353
  <p>Procedures we care about during call graph traversing when creating <a class="el" href="classSVF_1_1TCT.html">TCT</a>. </p>
3354
3354
 
3355
- <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00542">542</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
3355
+ <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00564">564</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
3356
3356
 
3357
3357
  </div>
3358
3358
  </div>
@@ -3376,7 +3376,7 @@ Additional Inherited Members</h2></td></tr>
3376
3376
  </table>
3377
3377
  </div><div class="memdoc">
3378
3378
 
3379
- <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00399">399</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
3379
+ <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00421">421</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
3380
3380
 
3381
3381
  </div>
3382
3382
  </div>
@@ -3400,7 +3400,7 @@ Additional Inherited Members</h2></td></tr>
3400
3400
  </table>
3401
3401
  </div><div class="memdoc">
3402
3402
 
3403
- <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00398">398</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
3403
+ <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00420">420</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
3404
3404
 
3405
3405
  </div>
3406
3406
  </div>
@@ -3426,7 +3426,7 @@ Additional Inherited Members</h2></td></tr>
3426
3426
 
3427
3427
  <p><a class="el" href="classSVF_1_1CxtThreadProc.html">CxtThreadProc</a> <a class="el" href="classSVF_1_1List.html">List</a>. </p>
3428
3428
 
3429
- <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00544">544</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
3429
+ <p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00566">566</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
3430
3430
 
3431
3431
  </div>
3432
3432
  </div>