svf-tools 1.0.425 → 1.0.428

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 (584) hide show
  1. package/SVF-doxygen/html/html/AbstractPointsToDS_8h_source.html +1 -1
  2. package/SVF-doxygen/html/html/AndersenLCD_8cpp_source.html +2 -2
  3. package/SVF-doxygen/html/html/AndersenSCD_8cpp_source.html +4 -4
  4. package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +7 -7
  5. package/SVF-doxygen/html/html/AndersenSFR_8h_source.html +5 -5
  6. package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +7 -7
  7. package/SVF-doxygen/html/html/AndersenWaveDiff_8cpp_source.html +1 -1
  8. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +11 -11
  9. package/SVF-doxygen/html/html/Andersen_8h_source.html +9 -9
  10. package/SVF-doxygen/html/html/Annotator_8h_source.html +3 -3
  11. package/SVF-doxygen/html/html/BreakConstantExpr_8cpp.html +10 -9
  12. package/SVF-doxygen/html/html/BreakConstantExpr_8cpp_source.html +9 -8
  13. package/SVF-doxygen/html/html/BreakConstantExpr_8h_source.html +6 -6
  14. package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +21 -21
  15. package/SVF-doxygen/html/html/CHGBuilder_8h_source.html +5 -5
  16. package/SVF-doxygen/html/html/CHG_8cpp.html +3 -3
  17. package/SVF-doxygen/html/html/CHG_8cpp_source.html +11 -11
  18. package/SVF-doxygen/html/html/CHG_8h_source.html +6 -6
  19. package/SVF-doxygen/html/html/CPPUtil_8cpp.html +2 -2
  20. package/SVF-doxygen/html/html/CPPUtil_8cpp_source.html +25 -25
  21. package/SVF-doxygen/html/html/CPPUtil_8h_source.html +4 -4
  22. package/SVF-doxygen/html/html/CSC_8cpp_source.html +3 -3
  23. package/SVF-doxygen/html/html/CSC_8h_source.html +4 -4
  24. package/SVF-doxygen/html/html/CallGraphBuilder_8cpp_source.html +5 -5
  25. package/SVF-doxygen/html/html/ConditionalPT_8h_source.html +6 -6
  26. package/SVF-doxygen/html/html/Conditions_8cpp_source.html +4 -4
  27. package/SVF-doxygen/html/html/Conditions_8h_source.html +5 -5
  28. package/SVF-doxygen/html/html/ConsGEdge_8h_source.html +2 -2
  29. package/SVF-doxygen/html/html/ConsGNode_8h_source.html +2 -2
  30. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +3 -3
  31. package/SVF-doxygen/html/html/ConsG_8h_source.html +7 -7
  32. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +19 -19
  33. package/SVF-doxygen/html/html/ContextDDA_8h_source.html +13 -13
  34. package/SVF-doxygen/html/html/CoreBitVector_8cpp_source.html +1 -1
  35. package/SVF-doxygen/html/html/CoreBitVector_8h_source.html +2 -2
  36. package/SVF-doxygen/html/html/CxtStmt_8h_source.html +6 -6
  37. package/SVF-doxygen/html/html/DCHG_8cpp_source.html +29 -29
  38. package/SVF-doxygen/html/html/DCHG_8h_source.html +14 -14
  39. package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +6 -6
  40. package/SVF-doxygen/html/html/DDAClient_8h_source.html +3 -3
  41. package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +9 -9
  42. package/SVF-doxygen/html/html/DDAPass_8h_source.html +10 -11
  43. package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +5 -5
  44. package/SVF-doxygen/html/html/DDAStat_8h_source.html +3 -3
  45. package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +13 -13
  46. package/SVF-doxygen/html/html/DPItem_8h_source.html +6 -6
  47. package/SVF-doxygen/html/html/DataFlowUtil_8cpp_source.html +7 -7
  48. package/SVF-doxygen/html/html/DataFlowUtil_8h_source.html +11 -11
  49. package/SVF-doxygen/html/html/ExtAPI_8h_source.html +4 -4
  50. package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +7 -7
  51. package/SVF-doxygen/html/html/FSMPTA_8h_source.html +4 -4
  52. package/SVF-doxygen/html/html/FileChecker_8h_source.html +1 -1
  53. package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +5 -5
  54. package/SVF-doxygen/html/html/FlowDDA_8h_source.html +6 -6
  55. package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +8 -8
  56. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp.html +3 -3
  57. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +20 -20
  58. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8h_source.html +8 -8
  59. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +19 -19
  60. package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +9 -9
  61. package/SVF-doxygen/html/html/GEPTypeBridgeIterator_8h_source.html +3 -3
  62. package/SVF-doxygen/html/html/GenericGraph_8h_source.html +5 -5
  63. package/SVF-doxygen/html/html/Graph2Json_8cpp_source.html +3 -3
  64. package/SVF-doxygen/html/html/GraphPrinter_8h_source.html +2 -2
  65. package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +10 -10
  66. package/SVF-doxygen/html/html/ICFGBuilder_8h_source.html +3 -3
  67. package/SVF-doxygen/html/html/ICFGEdge_8h_source.html +5 -5
  68. package/SVF-doxygen/html/html/ICFGNode_8h_source.html +5 -5
  69. package/SVF-doxygen/html/html/ICFGStat_8h_source.html +1 -1
  70. package/SVF-doxygen/html/html/ICFG_8cpp_source.html +7 -7
  71. package/SVF-doxygen/html/html/ICFG_8h_source.html +5 -5
  72. package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +11 -11
  73. package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +3 -3
  74. package/SVF-doxygen/html/html/IRGraph_8h_source.html +22 -22
  75. package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +14 -14
  76. package/SVF-doxygen/html/html/LLVMModule_8h_source.html +9 -9
  77. package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +27 -27
  78. package/SVF-doxygen/html/html/LLVMUtil_8h.html +11 -9
  79. package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +21 -18
  80. package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +1 -1
  81. package/SVF-doxygen/html/html/LeakChecker_8h_source.html +3 -3
  82. package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +12 -12
  83. package/SVF-doxygen/html/html/LocationSet_8h_source.html +6 -6
  84. package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +12 -12
  85. package/SVF-doxygen/html/html/LockAnalysis_8h_source.html +11 -11
  86. package/SVF-doxygen/html/html/LockResultValidator_8cpp.html +1 -0
  87. package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +22 -21
  88. package/SVF-doxygen/html/html/LockResultValidator_8h_source.html +10 -10
  89. package/SVF-doxygen/html/html/MHP_8cpp.html +8 -7
  90. package/SVF-doxygen/html/html/MHP_8cpp_source.html +63 -62
  91. package/SVF-doxygen/html/html/MHP_8h_source.html +37 -37
  92. package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +4 -4
  93. package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +9 -9
  94. package/SVF-doxygen/html/html/MTAAnnotator_8h_source.html +7 -7
  95. package/SVF-doxygen/html/html/MTAResultValidator_8cpp.html +1 -0
  96. package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +41 -40
  97. package/SVF-doxygen/html/html/MTAResultValidator_8h_source.html +29 -29
  98. package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +8 -8
  99. package/SVF-doxygen/html/html/MTAStat_8h_source.html +1 -1
  100. package/SVF-doxygen/html/html/MTA_8cpp_source.html +8 -8
  101. package/SVF-doxygen/html/html/MTA_8h_source.html +8 -8
  102. package/SVF-doxygen/html/html/MemPartition_8cpp_source.html +2 -2
  103. package/SVF-doxygen/html/html/MemPartition_8h_source.html +4 -4
  104. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +16 -16
  105. package/SVF-doxygen/html/html/MemRegion_8h_source.html +8 -8
  106. package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +11 -11
  107. package/SVF-doxygen/html/html/MemSSA_8h_source.html +8 -8
  108. package/SVF-doxygen/html/html/MutablePointsToDS_8h_source.html +3 -3
  109. package/SVF-doxygen/html/html/NodeIDAllocator_8cpp_source.html +4 -4
  110. package/SVF-doxygen/html/html/NodeIDAllocator_8h_source.html +3 -3
  111. package/SVF-doxygen/html/html/OfflineConsG_8cpp_source.html +2 -2
  112. package/SVF-doxygen/html/html/OfflineConsG_8h_source.html +2 -2
  113. package/SVF-doxygen/html/html/PAGBuilderFromFile_8cpp_source.html +3 -3
  114. package/SVF-doxygen/html/html/PAGBuilderFromFile_8h_source.html +1 -1
  115. package/SVF-doxygen/html/html/PCG_8cpp_source.html +10 -10
  116. package/SVF-doxygen/html/html/PCG_8h_source.html +4 -4
  117. package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +4 -4
  118. package/SVF-doxygen/html/html/PTACallGraph_8h_source.html +7 -7
  119. package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +25 -28
  120. package/SVF-doxygen/html/html/PTAStat_8h_source.html +2 -2
  121. package/SVF-doxygen/html/html/PathCondAllocator_8cpp_source.html +52 -46
  122. package/SVF-doxygen/html/html/PathCondAllocator_8h.html +1 -0
  123. package/SVF-doxygen/html/html/PathCondAllocator_8h_source.html +74 -69
  124. package/SVF-doxygen/html/html/PathDPItem_8h_source.html +2 -2
  125. package/SVF-doxygen/html/html/PersistentPointsToCache_8h_source.html +3 -3
  126. package/SVF-doxygen/html/html/PersistentPointsToDS_8h_source.html +2 -2
  127. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +11 -12
  128. package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +56 -58
  129. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +31 -31
  130. package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +44 -45
  131. package/SVF-doxygen/html/html/PointsTo_8cpp_source.html +3 -3
  132. package/SVF-doxygen/html/html/PointsTo_8h_source.html +3 -3
  133. package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +10 -9
  134. package/SVF-doxygen/html/html/ProgSlice_8h_source.html +18 -18
  135. package/SVF-doxygen/html/html/SCC_8h_source.html +3 -3
  136. package/SVF-doxygen/html/html/SVF-FE_2BasicTypes_8h.html +554 -11
  137. package/SVF-doxygen/html/html/SVF-FE_2BasicTypes_8h_source.html +37 -7
  138. package/SVF-doxygen/html/html/SVFBasicTypes_8h.html +7 -13
  139. package/SVF-doxygen/html/html/SVFBasicTypes_8h_source.html +38 -41
  140. package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +4 -4
  141. package/SVF-doxygen/html/html/SVFGBuilder_8h_source.html +2 -2
  142. package/SVF-doxygen/html/html/SVFGEdge_8h_source.html +3 -3
  143. package/SVF-doxygen/html/html/SVFGNode_8h_source.html +4 -4
  144. package/SVF-doxygen/html/html/SVFGOPT_8cpp_source.html +11 -11
  145. package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +15 -15
  146. package/SVF-doxygen/html/html/SVFGStat_8cpp_source.html +3 -3
  147. package/SVF-doxygen/html/html/SVFGStat_8h_source.html +4 -4
  148. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +15 -15
  149. package/SVF-doxygen/html/html/SVFG_8h_source.html +16 -16
  150. package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +63 -62
  151. package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +48 -48
  152. package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +10 -10
  153. package/SVF-doxygen/html/html/SVFIR_8h_source.html +19 -19
  154. package/SVF-doxygen/html/html/SVFModule_8cpp_source.html +1 -1
  155. package/SVF-doxygen/html/html/SVFModule_8h_source.html +5 -5
  156. package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +5 -5
  157. package/SVF-doxygen/html/html/SVFStatements_8h_source.html +9 -9
  158. package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +15 -15
  159. package/SVF-doxygen/html/html/SVFUtil_8h_source.html +16 -16
  160. package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +3 -3
  161. package/SVF-doxygen/html/html/SVFVariables_8h_source.html +15 -15
  162. package/SVF-doxygen/html/html/SaberAnnotator_8cpp_source.html +13 -11
  163. package/SVF-doxygen/html/html/SaberAnnotator_8h.html +1 -1
  164. package/SVF-doxygen/html/html/SaberAnnotator_8h_source.html +7 -8
  165. package/SVF-doxygen/html/html/SaberCheckerAPI_8h_source.html +2 -2
  166. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +8 -8
  167. package/SVF-doxygen/html/html/SaberSVFGBuilder_8h_source.html +2 -2
  168. package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +2 -2
  169. package/SVF-doxygen/html/html/SrcSnkDDA_8h_source.html +5 -5
  170. package/SVF-doxygen/html/html/Steensgaard_8cpp_source.html +1 -1
  171. package/SVF-doxygen/html/html/Steensgaard_8h_source.html +2 -2
  172. package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +58 -58
  173. package/SVF-doxygen/html/html/SymbolTableBuilder_8h_source.html +7 -7
  174. package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +103 -104
  175. package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +135 -139
  176. package/SVF-doxygen/html/html/TCT_8cpp_source.html +19 -19
  177. package/SVF-doxygen/html/html/TCT_8h_source.html +18 -18
  178. package/SVF-doxygen/html/html/ThreadAPI_8cpp_source.html +5 -5
  179. package/SVF-doxygen/html/html/ThreadAPI_8h_source.html +6 -6
  180. package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +11 -11
  181. package/SVF-doxygen/html/html/ThreadCallGraph_8h_source.html +6 -6
  182. package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +4 -4
  183. package/SVF-doxygen/html/html/TypeAnalysis_8h_source.html +1 -1
  184. package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +25 -25
  185. package/SVF-doxygen/html/html/TypeBasedHeapCloning_8h_source.html +6 -6
  186. package/SVF-doxygen/html/html/Util_2BasicTypes_8h.html +0 -69
  187. package/SVF-doxygen/html/html/Util_2BasicTypes_8h_source.html +119 -153
  188. package/SVF-doxygen/html/html/VFGEdge_8h_source.html +2 -2
  189. package/SVF-doxygen/html/html/VFGNode_8h_source.html +165 -170
  190. package/SVF-doxygen/html/html/VFG_8cpp_source.html +19 -19
  191. package/SVF-doxygen/html/html/VFG_8h_source.html +22 -22
  192. package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +6 -6
  193. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +7 -7
  194. package/SVF-doxygen/html/html/VersionedFlowSensitive_8h_source.html +4 -4
  195. package/SVF-doxygen/html/html/WPAFSSolver_8h_source.html +2 -2
  196. package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +11 -11
  197. package/SVF-doxygen/html/html/WPAPass_8h_source.html +12 -12
  198. package/SVF-doxygen/html/html/WPASolver_8h_source.html +3 -3
  199. package/SVF-doxygen/html/html/WPAStat_8h_source.html +1 -1
  200. package/SVF-doxygen/html/html/WorkList_8h_source.html +1 -1
  201. package/SVF-doxygen/html/html/annotated.html +2 -3
  202. package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode.html +1 -1
  203. package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode.html +1 -1
  204. package/SVF-doxygen/html/html/classSVF_1_1ActualParmVFGNode.html +23 -23
  205. package/SVF-doxygen/html/html/classSVF_1_1ActualRetVFGNode.html +25 -25
  206. package/SVF-doxygen/html/html/classSVF_1_1AddrStmt.html +1 -1
  207. package/SVF-doxygen/html/html/classSVF_1_1AddrVFGNode.html +13 -13
  208. package/SVF-doxygen/html/html/classSVF_1_1AliasDDAClient.html +2 -2
  209. package/SVF-doxygen/html/html/classSVF_1_1Andersen-members.html +266 -267
  210. package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +20 -23
  211. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase-members.html +226 -227
  212. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +1 -4
  213. package/SVF-doxygen/html/html/classSVF_1_1AndersenHCD-members.html +279 -280
  214. package/SVF-doxygen/html/html/classSVF_1_1AndersenHCD.html +0 -3
  215. package/SVF-doxygen/html/html/classSVF_1_1AndersenHLCD-members.html +288 -289
  216. package/SVF-doxygen/html/html/classSVF_1_1AndersenHLCD.html +0 -3
  217. package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD-members.html +276 -277
  218. package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD.html +1 -4
  219. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD-members.html +275 -276
  220. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +5 -8
  221. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR-members.html +287 -288
  222. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +7 -10
  223. package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +9 -9
  224. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff-members.html +274 -275
  225. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +1 -4
  226. package/SVF-doxygen/html/html/classSVF_1_1Annotator.html +1 -1
  227. package/SVF-doxygen/html/html/classSVF_1_1ArgumentVFGNode.html +17 -17
  228. package/SVF-doxygen/html/html/classSVF_1_1BDDManager.html +3 -3
  229. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl-members.html +173 -174
  230. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +24 -71
  231. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt.html +1 -1
  232. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +33 -36
  233. package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +6 -6
  234. package/SVF-doxygen/html/html/classSVF_1_1BranchVFGNode.html +24 -26
  235. package/SVF-doxygen/html/html/classSVF_1_1BreakConstantGEPs.html +7 -7
  236. package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +41 -41
  237. package/SVF-doxygen/html/html/classSVF_1_1CHGraph.html +7 -7
  238. package/SVF-doxygen/html/html/classSVF_1_1CSC.html +4 -4
  239. package/SVF-doxygen/html/html/classSVF_1_1CallCFGEdge.html +1 -1
  240. package/SVF-doxygen/html/html/classSVF_1_1CallDirSVFGEdge.html +1 -1
  241. package/SVF-doxygen/html/html/classSVF_1_1CallGraphBuilder.html +4 -4
  242. package/SVF-doxygen/html/html/classSVF_1_1CallICFGNode.html +1 -1
  243. package/SVF-doxygen/html/html/classSVF_1_1CallIndSVFGEdge.html +1 -1
  244. package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +1 -1
  245. package/SVF-doxygen/html/html/classSVF_1_1CallSite.html +41 -41
  246. package/SVF-doxygen/html/html/classSVF_1_1CloneDummyObjVar.html +1 -1
  247. package/SVF-doxygen/html/html/classSVF_1_1CloneFIObjVar.html +1 -1
  248. package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar.html +1 -1
  249. package/SVF-doxygen/html/html/classSVF_1_1CmpStmt.html +1 -1
  250. package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +25 -28
  251. package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl-members.html +166 -167
  252. package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +120 -168
  253. package/SVF-doxygen/html/html/classSVF_1_1CondStdSet.html +2 -2
  254. package/SVF-doxygen/html/html/classSVF_1_1CondVar.html +1 -1
  255. package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +4 -4
  256. package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode.html +8 -8
  257. package/SVF-doxygen/html/html/classSVF_1_1ContextCond.html +7 -7
  258. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA-members.html +266 -267
  259. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +31 -34
  260. package/SVF-doxygen/html/html/classSVF_1_1CopyStmt.html +1 -1
  261. package/SVF-doxygen/html/html/classSVF_1_1CopyVFGNode.html +2 -2
  262. package/SVF-doxygen/html/html/classSVF_1_1CoreBitVector.html +4 -4
  263. package/SVF-doxygen/html/html/classSVF_1_1CxtProc.html +7 -7
  264. package/SVF-doxygen/html/html/classSVF_1_1CxtStmt.html +7 -7
  265. package/SVF-doxygen/html/html/classSVF_1_1CxtThread.html +7 -7
  266. package/SVF-doxygen/html/html/classSVF_1_1CxtThreadProc.html +5 -5
  267. package/SVF-doxygen/html/html/classSVF_1_1CxtThreadStmt.html +5 -5
  268. package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +64 -64
  269. package/SVF-doxygen/html/html/classSVF_1_1DDAClient.html +1 -1
  270. package/SVF-doxygen/html/html/classSVF_1_1DDAPass-members.html +19 -20
  271. package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +28 -72
  272. package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +5 -5
  273. package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +3 -3
  274. package/SVF-doxygen/html/html/classSVF_1_1DirectSVFGEdge.html +1 -1
  275. package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG.html +4 -4
  276. package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar.html +1 -1
  277. package/SVF-doxygen/html/html/classSVF_1_1DummyValVar.html +1 -1
  278. package/SVF-doxygen/html/html/classSVF_1_1DummyVersionPropSVFGNode.html +1 -1
  279. package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.html +1 -1
  280. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA-members.html +293 -294
  281. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +0 -3
  282. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA-members.html +259 -260
  283. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +10 -13
  284. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive-members.html +284 -285
  285. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +43 -46
  286. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +12 -12
  287. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC-members.html +324 -325
  288. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +25 -28
  289. package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +65 -65
  290. package/SVF-doxygen/html/html/classSVF_1_1FormalINSVFGNode.html +1 -1
  291. package/SVF-doxygen/html/html/classSVF_1_1FormalOUTSVFGNode.html +1 -1
  292. package/SVF-doxygen/html/html/classSVF_1_1FormalParmVFGNode.html +29 -29
  293. package/SVF-doxygen/html/html/classSVF_1_1FormalRetVFGNode.html +28 -28
  294. package/SVF-doxygen/html/html/classSVF_1_1FunEntryICFGNode.html +2 -2
  295. package/SVF-doxygen/html/html/classSVF_1_1FunExitICFGNode.html +2 -2
  296. package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient.html +3 -3
  297. package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +6 -6
  298. package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +1 -1
  299. package/SVF-doxygen/html/html/classSVF_1_1GepVFGNode.html +13 -13
  300. package/SVF-doxygen/html/html/classSVF_1_1GepValVar.html +2 -2
  301. package/SVF-doxygen/html/html/classSVF_1_1GlobalICFGNode.html +1 -1
  302. package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +3 -3
  303. package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +15 -15
  304. package/SVF-doxygen/html/html/classSVF_1_1ICFGEdge.html +1 -1
  305. package/SVF-doxygen/html/html/classSVF_1_1ICFGNode.html +1 -1
  306. package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter.html +3 -3
  307. package/SVF-doxygen/html/html/classSVF_1_1IRAnnotator.html +9 -9
  308. package/SVF-doxygen/html/html/classSVF_1_1IRGraph.html +17 -17
  309. package/SVF-doxygen/html/html/classSVF_1_1IndirectSVFGEdge.html +1 -1
  310. package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG.html +2 -2
  311. package/SVF-doxygen/html/html/classSVF_1_1InterMSSAPHISVFGNode.html +1 -1
  312. package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode.html +37 -37
  313. package/SVF-doxygen/html/html/classSVF_1_1IntraCFGEdge.html +1 -1
  314. package/SVF-doxygen/html/html/classSVF_1_1IntraDirSVFGEdge.html +1 -1
  315. package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG.html +4 -4
  316. package/SVF-doxygen/html/html/classSVF_1_1IntraICFGNode.html +1 -1
  317. package/SVF-doxygen/html/html/classSVF_1_1IntraIndSVFGEdge.html +1 -1
  318. package/SVF-doxygen/html/html/classSVF_1_1IntraMSSAPHISVFGNode.html +1 -1
  319. package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode.html +23 -23
  320. package/SVF-doxygen/html/html/classSVF_1_1IteratedDominanceFrontier.html +3 -3
  321. package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +26 -26
  322. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +3 -3
  323. package/SVF-doxygen/html/html/classSVF_1_1LoadStmt.html +1 -1
  324. package/SVF-doxygen/html/html/classSVF_1_1LoadVFGNode.html +2 -2
  325. package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +15 -15
  326. package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +53 -53
  327. package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +37 -37
  328. package/SVF-doxygen/html/html/classSVF_1_1MHP.html +119 -119
  329. package/SVF-doxygen/html/html/classSVF_1_1MHPValidator.html +7 -7
  330. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +31 -31
  331. package/SVF-doxygen/html/html/classSVF_1_1MRSVFGNode.html +1 -1
  332. package/SVF-doxygen/html/html/classSVF_1_1MSSAPHISVFGNode.html +1 -1
  333. package/SVF-doxygen/html/html/classSVF_1_1MTA.html +8 -8
  334. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +13 -13
  335. package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +104 -104
  336. package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +25 -25
  337. package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +9 -9
  338. package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +88 -88
  339. package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +25 -25
  340. package/SVF-doxygen/html/html/classSVF_1_1MemSSADF.html +1 -1
  341. package/SVF-doxygen/html/html/classSVF_1_1MemSSAStat.html +1 -1
  342. package/SVF-doxygen/html/html/classSVF_1_1MergeFunctionRets.html +3 -3
  343. package/SVF-doxygen/html/html/classSVF_1_1MutableDFPTData.html +1 -1
  344. package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator_1_1Clusterer.html +2 -2
  345. package/SVF-doxygen/html/html/classSVF_1_1NullPtrVFGNode.html +22 -22
  346. package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo.html +99 -99
  347. package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +2 -2
  348. package/SVF-doxygen/html/html/classSVF_1_1OfflineConsG.html +1 -1
  349. package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +3 -3
  350. package/SVF-doxygen/html/html/classSVF_1_1PCG.html +21 -21
  351. package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +33 -33
  352. package/SVF-doxygen/html/html/classSVF_1_1PTACFInfoBuilder.html +7 -7
  353. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraph.html +5 -5
  354. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphEdge.html +1 -1
  355. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphNode.html +2 -2
  356. package/SVF-doxygen/html/html/classSVF_1_1PTAStat-members.html +1 -1
  357. package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +34 -49
  358. package/SVF-doxygen/html/html/classSVF_1_1PathCondAllocator-members.html +26 -25
  359. package/SVF-doxygen/html/html/classSVF_1_1PathCondAllocator.html +256 -217
  360. package/SVF-doxygen/html/html/classSVF_1_1PersistentDFPTData.html +3 -3
  361. package/SVF-doxygen/html/html/classSVF_1_1PersistentDiffPTData.html +3 -3
  362. package/SVF-doxygen/html/html/classSVF_1_1PersistentPTData.html +6 -6
  363. package/SVF-doxygen/html/html/classSVF_1_1PersistentPointsToCache.html +6 -6
  364. package/SVF-doxygen/html/html/classSVF_1_1PhiStmt.html +2 -2
  365. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis-members.html +129 -130
  366. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +107 -150
  367. package/SVF-doxygen/html/html/classSVF_1_1PointsTo.html +6 -6
  368. package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +35 -32
  369. package/SVF-doxygen/html/html/classSVF_1_1RaceResultValidator.html +9 -9
  370. package/SVF-doxygen/html/html/classSVF_1_1RetCFGEdge.html +1 -1
  371. package/SVF-doxygen/html/html/classSVF_1_1RetDirSVFGEdge.html +1 -1
  372. package/SVF-doxygen/html/html/classSVF_1_1RetICFGNode.html +1 -1
  373. package/SVF-doxygen/html/html/classSVF_1_1RetIndSVFGEdge.html +1 -1
  374. package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +1 -1
  375. package/SVF-doxygen/html/html/classSVF_1_1RetPN.html +1 -1
  376. package/SVF-doxygen/html/html/classSVF_1_1SVFBasicBlock.html +3 -3
  377. package/SVF-doxygen/html/html/classSVF_1_1SVFFunction.html +29 -29
  378. package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +11 -11
  379. package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +4 -4
  380. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +15 -15
  381. package/SVF-doxygen/html/html/classSVF_1_1SVFGStat.html +5 -5
  382. package/SVF-doxygen/html/html/classSVF_1_1SVFGlobal.html +3 -3
  383. package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +21 -21
  384. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +180 -180
  385. package/SVF-doxygen/html/html/classSVF_1_1SVFModule.html +1 -1
  386. package/SVF-doxygen/html/html/classSVF_1_1SVFStmt.html +5 -5
  387. package/SVF-doxygen/html/html/classSVF_1_1SVFVar.html +5 -5
  388. package/SVF-doxygen/html/html/classSVF_1_1SaberAnnotator-members.html +3 -3
  389. package/SVF-doxygen/html/html/classSVF_1_1SaberAnnotator.html +35 -31
  390. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +8 -8
  391. package/SVF-doxygen/html/html/classSVF_1_1SelectStmt.html +1 -1
  392. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +4 -4
  393. package/SVF-doxygen/html/html/classSVF_1_1StInfo.html +39 -39
  394. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard-members.html +240 -241
  395. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard.html +1 -4
  396. package/SVF-doxygen/html/html/classSVF_1_1StmtVFGNode.html +1 -1
  397. package/SVF-doxygen/html/html/classSVF_1_1StoreStmt.html +1 -1
  398. package/SVF-doxygen/html/html/classSVF_1_1StoreVFGNode.html +2 -2
  399. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +104 -104
  400. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo-members.html +5 -7
  401. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +215 -281
  402. package/SVF-doxygen/html/html/classSVF_1_1TCT.html +57 -57
  403. package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +1 -1
  404. package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +1 -1
  405. package/SVF-doxygen/html/html/classSVF_1_1ThreadAPI.html +5 -5
  406. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +21 -21
  407. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraphBuilder.html +3 -3
  408. package/SVF-doxygen/html/html/classSVF_1_1ThreadForkEdge.html +1 -1
  409. package/SVF-doxygen/html/html/classSVF_1_1ThreadJoinEdge.html +1 -1
  410. package/SVF-doxygen/html/html/classSVF_1_1ThreadMHPIndSVFGEdge.html +1 -1
  411. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis-members.html +232 -233
  412. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +6 -9
  413. package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +33 -33
  414. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt.html +1 -1
  415. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode.html +35 -37
  416. package/SVF-doxygen/html/html/classSVF_1_1VFG.html +28 -28
  417. package/SVF-doxygen/html/html/classSVF_1_1VFGEdge.html +1 -1
  418. package/SVF-doxygen/html/html/classSVF_1_1VFGNode.html +2 -2
  419. package/SVF-doxygen/html/html/classSVF_1_1VFPathCond.html +5 -5
  420. package/SVF-doxygen/html/html/classSVF_1_1ValVar.html +1 -1
  421. package/SVF-doxygen/html/html/classSVF_1_1VarArgPN.html +1 -1
  422. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive-members.html +337 -338
  423. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +12 -15
  424. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +8 -8
  425. package/SVF-doxygen/html/html/classSVF_1_1WPAFSSolver.html +2 -2
  426. package/SVF-doxygen/html/html/classSVF_1_1WPAMinimumSolver.html +2 -2
  427. package/SVF-doxygen/html/html/classSVF_1_1WPAPass-members.html +19 -20
  428. package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +24 -68
  429. package/SVF-doxygen/html/html/classSVF_1_1WPASCCSolver.html +2 -2
  430. package/SVF-doxygen/html/html/classSVF_1_1WPASolver.html +1 -1
  431. package/SVF-doxygen/html/html/classSVF_1_1Z3Manager.html +4 -4
  432. package/SVF-doxygen/html/html/classes.html +96 -97
  433. package/SVF-doxygen/html/html/classllvm_1_1GraphPrinter.html +1 -1
  434. package/SVF-doxygen/html/html/classllvm_1_1generic__bridge__gep__type__iterator.html +3 -3
  435. package/SVF-doxygen/html/html/functions_a.html +7 -7
  436. package/SVF-doxygen/html/html/functions_b.html +1 -1
  437. package/SVF-doxygen/html/html/functions_d.html +0 -3
  438. package/SVF-doxygen/html/html/functions_e.html +2 -2
  439. package/SVF-doxygen/html/html/functions_f.html +3 -3
  440. package/SVF-doxygen/html/html/functions_func.html +10 -10
  441. package/SVF-doxygen/html/html/functions_func_b.html +1 -1
  442. package/SVF-doxygen/html/html/functions_func_e.html +2 -2
  443. package/SVF-doxygen/html/html/functions_func_g.html +6 -8
  444. package/SVF-doxygen/html/html/functions_func_o.html +1 -2
  445. package/SVF-doxygen/html/html/functions_g.html +5 -7
  446. package/SVF-doxygen/html/html/functions_l.html +6 -6
  447. package/SVF-doxygen/html/html/functions_n.html +3 -3
  448. package/SVF-doxygen/html/html/functions_o.html +11 -10
  449. package/SVF-doxygen/html/html/functions_p.html +4 -4
  450. package/SVF-doxygen/html/html/functions_r.html +3 -3
  451. package/SVF-doxygen/html/html/functions_s.html +6 -4
  452. package/SVF-doxygen/html/html/functions_t.html +3 -3
  453. package/SVF-doxygen/html/html/functions_v.html +6 -6
  454. package/SVF-doxygen/html/html/functions_vars_d.html +0 -3
  455. package/SVF-doxygen/html/html/functions_w.html +5 -9
  456. package/SVF-doxygen/html/html/globals.html +6 -0
  457. package/SVF-doxygen/html/html/globals_b.html +6 -0
  458. package/SVF-doxygen/html/html/globals_c.html +118 -100
  459. package/SVF-doxygen/html/html/globals_f.html +9 -3
  460. package/SVF-doxygen/html/html/globals_g.html +3 -0
  461. package/SVF-doxygen/html/html/globals_i.html +14 -2
  462. package/SVF-doxygen/html/html/globals_l.html +3 -0
  463. package/SVF-doxygen/html/html/globals_m.html +17 -14
  464. package/SVF-doxygen/html/html/globals_p.html +3 -0
  465. package/SVF-doxygen/html/html/globals_r.html +3 -0
  466. package/SVF-doxygen/html/html/globals_s.html +27 -22
  467. package/SVF-doxygen/html/html/globals_type.html +114 -0
  468. package/SVF-doxygen/html/html/globals_u.html +8 -2
  469. package/SVF-doxygen/html/html/globals_v.html +12 -0
  470. package/SVF-doxygen/html/html/hierarchy.html +149 -150
  471. package/SVF-doxygen/html/html/menudata.js +25 -19
  472. package/SVF-doxygen/html/html/namespaceSVF.html +128 -779
  473. package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +128 -95
  474. package/SVF-doxygen/html/html/namespaceSVF_1_1cppUtil.html +46 -46
  475. package/SVF-doxygen/html/html/namespacemembers.html +0 -6
  476. package/SVF-doxygen/html/html/namespacemembers_b.html +2 -8
  477. package/SVF-doxygen/html/html/namespacemembers_c.html +2 -26
  478. package/SVF-doxygen/html/html/namespacemembers_f.html +0 -6
  479. package/SVF-doxygen/html/html/namespacemembers_func.html +6 -3
  480. package/SVF-doxygen/html/html/namespacemembers_g.html +3 -3
  481. package/SVF-doxygen/html/html/namespacemembers_i.html +10 -22
  482. package/SVF-doxygen/html/html/namespacemembers_l.html +0 -3
  483. package/SVF-doxygen/html/html/namespacemembers_m.html +0 -3
  484. package/SVF-doxygen/html/html/namespacemembers_p.html +0 -6
  485. package/SVF-doxygen/html/html/namespacemembers_r.html +1 -4
  486. package/SVF-doxygen/html/html/namespacemembers_s.html +1 -19
  487. package/SVF-doxygen/html/html/namespacemembers_type.html +560 -4
  488. package/SVF-doxygen/html/html/namespacemembers_u.html +0 -6
  489. package/SVF-doxygen/html/html/namespacemembers_v.html +0 -12
  490. package/SVF-doxygen/html/html/search/all_1.js +6 -6
  491. package/SVF-doxygen/html/html/search/all_10.js +8 -9
  492. package/SVF-doxygen/html/html/search/all_12.js +3 -3
  493. package/SVF-doxygen/html/html/search/all_13.js +10 -13
  494. package/SVF-doxygen/html/html/search/all_14.js +3 -3
  495. package/SVF-doxygen/html/html/search/all_15.js +2 -2
  496. package/SVF-doxygen/html/html/search/all_16.js +6 -6
  497. package/SVF-doxygen/html/html/search/all_17.js +1 -1
  498. package/SVF-doxygen/html/html/search/all_2.js +3 -3
  499. package/SVF-doxygen/html/html/search/all_3.js +7 -9
  500. package/SVF-doxygen/html/html/search/all_4.js +0 -1
  501. package/SVF-doxygen/html/html/search/all_5.js +2 -2
  502. package/SVF-doxygen/html/html/search/all_6.js +3 -3
  503. package/SVF-doxygen/html/html/search/all_7.js +3 -3
  504. package/SVF-doxygen/html/html/search/all_8.js +0 -1
  505. package/SVF-doxygen/html/html/search/all_9.js +4 -4
  506. package/SVF-doxygen/html/html/search/all_c.js +3 -3
  507. package/SVF-doxygen/html/html/search/all_d.js +2 -2
  508. package/SVF-doxygen/html/html/search/all_e.js +3 -3
  509. package/SVF-doxygen/html/html/search/all_f.js +2 -2
  510. package/SVF-doxygen/html/html/search/classes_7.js +0 -1
  511. package/SVF-doxygen/html/html/search/functions_0.js +4 -4
  512. package/SVF-doxygen/html/html/search/functions_1.js +1 -1
  513. package/SVF-doxygen/html/html/search/functions_10.js +1 -1
  514. package/SVF-doxygen/html/html/search/functions_4.js +2 -2
  515. package/SVF-doxygen/html/html/search/functions_6.js +2 -2
  516. package/SVF-doxygen/html/html/search/functions_d.js +1 -1
  517. package/SVF-doxygen/html/html/search/typedefs_0.js +2 -2
  518. package/SVF-doxygen/html/html/search/typedefs_1.js +2 -2
  519. package/SVF-doxygen/html/html/search/typedefs_10.js +1 -1
  520. package/SVF-doxygen/html/html/search/typedefs_11.js +4 -7
  521. package/SVF-doxygen/html/html/search/typedefs_13.js +2 -2
  522. package/SVF-doxygen/html/html/search/typedefs_14.js +4 -4
  523. package/SVF-doxygen/html/html/search/typedefs_2.js +7 -9
  524. package/SVF-doxygen/html/html/search/typedefs_5.js +2 -2
  525. package/SVF-doxygen/html/html/search/typedefs_6.js +1 -1
  526. package/SVF-doxygen/html/html/search/typedefs_8.js +4 -4
  527. package/SVF-doxygen/html/html/search/typedefs_b.js +1 -1
  528. package/SVF-doxygen/html/html/search/typedefs_c.js +1 -1
  529. package/SVF-doxygen/html/html/search/typedefs_f.js +1 -2
  530. package/SVF-doxygen/html/html/search/variables_14.js +1 -1
  531. package/SVF-doxygen/html/html/search/variables_4.js +0 -1
  532. package/SVF-doxygen/html/html/search/variables_e.js +2 -2
  533. package/SVF-doxygen/html/html/structSVF_1_1Hash.html +3 -3
  534. package/SVF-doxygen/html/html/structSVF_1_1Hash_3_01std_1_1pair_3_01S_00_01T_01_4_01_4.html +5 -5
  535. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +1 -1
  536. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html +2 -2
  537. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +2 -2
  538. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01OfflineConsG_01_5_01_4.html +1 -1
  539. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01PTACallGraph_01_5_01_4.html +2 -2
  540. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01SVFG_01_5_01_4.html +19 -19
  541. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html +19 -19
  542. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CallSite_01_4.html +3 -3
  543. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CondStdSet_3_01Element_01_4_01_4.html +1 -1
  544. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CxtDPItem_01_4.html +1 -1
  545. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CxtProc_01_4.html +1 -1
  546. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CxtStmtDPItem_3_01LocCond_01_4_01_4.html +1 -1
  547. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CxtStmt_01_4.html +1 -1
  548. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1LocationSet_01_4.html +1 -1
  549. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1StmtDPItem_3_01LocCond_01_4_01_4.html +1 -1
  550. package/SVF-doxygen/html/html/structstd_1_1hash_3_01llvm_1_1SparseBitVector_3_01N_01_4_01_4.html +3 -3
  551. package/SVF-doxygen/html/html/structstd_1_1hash_3_01std_1_1vector_3_01T_01_4_01_4.html +3 -3
  552. package/SVF-doxygen/html/html/svf-ex_8cpp.html +4 -4
  553. package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +6 -6
  554. package/clean.sh +2 -2
  555. package/include/DDA/DDAPass.h +0 -6
  556. package/include/Graphs/VFGNode.h +4 -18
  557. package/include/MemoryModel/PointerAnalysis.h +0 -4
  558. package/include/MemoryModel/PointerAnalysisImpl.h +0 -10
  559. package/include/MemoryModel/SVFVariables.h +4 -4
  560. package/include/MemoryModel/SymbolTableInfo.h +0 -11
  561. package/include/SABER/PathCondAllocator.h +9 -2
  562. package/include/SABER/SaberAnnotator.h +4 -4
  563. package/include/SVF-FE/BasicTypes.h +41 -2
  564. package/include/SVF-FE/LLVMUtil.h +7 -0
  565. package/include/Util/BasicTypes.h +0 -35
  566. package/include/Util/SVFBasicTypes.h +6 -27
  567. package/include/Util/SVFUtil.h +1 -1
  568. package/include/WPA/WPAPass.h +0 -6
  569. package/lib/DDA/DDAPass.cpp +1 -1
  570. package/lib/MTA/LockResultValidator.cpp +1 -0
  571. package/lib/MTA/MHP.cpp +1 -0
  572. package/lib/MTA/MTAResultValidator.cpp +1 -0
  573. package/lib/MTA/PCG.cpp +1 -1
  574. package/lib/MemoryModel/PointerAnalysisImpl.cpp +0 -9
  575. package/lib/MemoryModel/SVFVariables.cpp +2 -2
  576. package/lib/MemoryModel/SymbolTableInfo.cpp +0 -5
  577. package/lib/SABER/PathCondAllocator.cpp +32 -27
  578. package/lib/SABER/ProgSlice.cpp +7 -4
  579. package/lib/SABER/SaberAnnotator.cpp +8 -8
  580. package/lib/SVF-FE/BreakConstantExpr.cpp +1 -0
  581. package/lib/SVF-FE/LLVMUtil.cpp +3 -2
  582. package/lib/SVF-FE/SVFIRBuilder.cpp +1 -1
  583. package/lib/Util/PTAStat.cpp +3 -1
  584. package/package.json +1 -1
@@ -163,10 +163,10 @@ Private Member Functions</h2></td></tr>
163
163
  <tr class="memitem:a799e14292e16b9fb322cab07f3ff5593"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1ForkJoinAnalysis.html#a799e14292e16b9fb322cab07f3ff5593">getNextInsts</a> (const <a class="el" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *inst, <a class="el" href="classSVF_1_1ForkJoinAnalysis.html#a613d763731058899e6819acdb2d7315f">InstVec</a> &amp;instSet)</td></tr>
164
164
  <tr class="memdesc:a799e14292e16b9fb322cab07f3ff5593"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the next instructions following control flow. <a href="#a799e14292e16b9fb322cab07f3ff5593">More...</a><br /></td></tr>
165
165
  <tr class="separator:a799e14292e16b9fb322cab07f3ff5593"><td class="memSeparator" colspan="2">&#160;</td></tr>
166
- <tr class="memitem:aaf70954762aa86f835d799994726790e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1ForkJoinAnalysis.html#aaf70954762aa86f835d799994726790e">pushCxt</a> (<a class="el" href="namespaceSVF.html#a542c6d5483bfc74fa58b45ad06b65960">CallStrCxt</a> &amp;cxt, const <a class="el" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *call, const <a class="el" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *callee)</td></tr>
166
+ <tr class="memitem:aaf70954762aa86f835d799994726790e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1ForkJoinAnalysis.html#aaf70954762aa86f835d799994726790e">pushCxt</a> (<a class="el" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a> &amp;cxt, const <a class="el" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *call, const <a class="el" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *callee)</td></tr>
167
167
  <tr class="memdesc:aaf70954762aa86f835d799994726790e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Push calling context. <a href="#aaf70954762aa86f835d799994726790e">More...</a><br /></td></tr>
168
168
  <tr class="separator:aaf70954762aa86f835d799994726790e"><td class="memSeparator" colspan="2">&#160;</td></tr>
169
- <tr class="memitem:aea9ef584ce6c7129bcd1d5ecda2f1f74"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1ForkJoinAnalysis.html#aea9ef584ce6c7129bcd1d5ecda2f1f74">matchCxt</a> (<a class="el" href="namespaceSVF.html#a542c6d5483bfc74fa58b45ad06b65960">CallStrCxt</a> &amp;cxt, const <a class="el" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *call, const <a class="el" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *callee)</td></tr>
169
+ <tr class="memitem:aea9ef584ce6c7129bcd1d5ecda2f1f74"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1ForkJoinAnalysis.html#aea9ef584ce6c7129bcd1d5ecda2f1f74">matchCxt</a> (<a class="el" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a> &amp;cxt, const <a class="el" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *call, const <a class="el" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *callee)</td></tr>
170
170
  <tr class="memdesc:aea9ef584ce6c7129bcd1d5ecda2f1f74"><td class="mdescLeft">&#160;</td><td class="mdescRight">Match context. <a href="#aea9ef584ce6c7129bcd1d5ecda2f1f74">More...</a><br /></td></tr>
171
171
  <tr class="separator:aea9ef584ce6c7129bcd1d5ecda2f1f74"><td class="memSeparator" colspan="2">&#160;</td></tr>
172
172
  <tr class="memitem:aff32f240a03421937c2fc606359dca9b"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1ForkJoinAnalysis.html#aff32f240a03421937c2fc606359dca9b">isTDFork</a> (const <a class="el" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *call)</td></tr>
@@ -430,7 +430,7 @@ Private Attributes</h2></td></tr>
430
430
 
431
431
  <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00288">288</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
432
432
  <div class="fragment"><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; : <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>(t)</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; {</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a731ece7e21bfa2b08ae16780b55f9f5f">collectSCEVInfo</a>();</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; }</div><div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a2c6ce7aa04c399746d89230be0e0f1ce"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">SVF::ForkJoinAnalysis::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00534">MHP.h:534</a></div></div>
433
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a731ece7e21bfa2b08ae16780b55f9f5f"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a731ece7e21bfa2b08ae16780b55f9f5f">SVF::ForkJoinAnalysis::collectSCEVInfo</a></div><div class="ttdeci">void collectSCEVInfo()</div><div class="ttdoc">functions </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l00673">MHP.cpp:673</a></div></div>
433
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a731ece7e21bfa2b08ae16780b55f9f5f"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a731ece7e21bfa2b08ae16780b55f9f5f">SVF::ForkJoinAnalysis::collectSCEVInfo</a></div><div class="ttdeci">void collectSCEVInfo()</div><div class="ttdoc">functions </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l00674">MHP.cpp:674</a></div></div>
434
434
  </div><!-- fragment -->
435
435
  </div>
436
436
  </div>
@@ -693,9 +693,9 @@ Private Attributes</h2></td></tr>
693
693
  <p>context-sensitive forward traversal from each fork site. Generate following results (1) fork join pair, maps a context-sensitive join site to its corresponding thread ids (2) never happen-in-parallel thread pairs</p>
694
694
  <p>Context-sensitive forward traversal from each fork site </p>
695
695
 
696
- <p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#l00727">727</a> of file <a class="el" href="MHP_8cpp_source.html">MHP.cpp</a>.</p>
697
- <div class="fragment"><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160;{</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1GenericGraph.html#a5dfa3f178d4abf37177d0d74ff4c6a97">TCT::const_iterator</a> it = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(), eit = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); it!=eit; ++it)</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; {</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtThread.html">CxtThread</a>&amp; ct = it-&gt;second-&gt;getCxtThread();</div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> rootTid = it-&gt;first;</div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a7965a276a3a12d532c9967de13d4cc8a">clearFlagMap</a>();</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">CallInst</a>* forkInst = ct.<a class="code" href="classSVF_1_1CxtThread.html#a066ba29a83edc1042139641ca088b038">getThread</a>())</div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; {</div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160; <a class="code" href="namespaceSVF.html#a542c6d5483bfc74fa58b45ad06b65960">CallStrCxt</a> forkSiteCxt = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#ab4bc72ca330b315df06f2d4d2c1a7b4f">getCxtOfCxtThread</a>(ct);</div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* exitInst = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#acc178bd423dbb21bd46a9fae9ed0351c">getExitInstOfParentRoutineFun</a>(rootTid);</div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160;</div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a613d763731058899e6819acdb2d7315f">InstVec</a> nextInsts;</div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a799e14292e16b9fb322cab07f3ff5593">getNextInsts</a>(forkInst,nextInsts);</div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; <span class="keywordflow">for</span>(InstVec::const_iterator nit = nextInsts.begin(), enit = nextInsts.end(); nit!=enit; ++nit)</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; {</div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a> cs(forkSiteCxt,*nit);</div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ac483d3b0e9084c2033e177eda9ac9215">markCxtStmtFlag</a>(cs,<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631a2abecc56b7d5c644f7e14c98d33d0a0a">TDAlive</a>);</div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160; }</div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160;</div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160; <span class="keywordflow">while</span>(!<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#acccf53d174cac3275da0d79c89a73916">cxtStmtList</a>.<a class="code" href="classSVF_1_1FIFOWorkList.html#a7056704c224dfb4b57287fe90c004aa8">empty</a>())</div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160; {</div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a> cts = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a4d893583db922444c6a29923bf3d05d3">popFromCTSWorkList</a>();</div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* curInst = cts.<a class="code" href="classSVF_1_1CxtStmt.html#a5e8c4b10eb5c3240d2e21a020ed834a6">getStmt</a>();</div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>,<a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;-----\nForkJoinAnalysis root thread: &quot;</span> &lt;&lt; it-&gt;first &lt;&lt; <span class="stringliteral">&quot; &quot;</span>);</div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>,cts.<a class="code" href="classSVF_1_1CxtStmt.html#a56e2767c327a383db09dca96edb19614">dump</a>());</div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>,<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="l00754"></a><span class="lineno"> 754</span>&#160; <a class="code" href="classSVF_1_1PTACallGraph.html#a5f5a5ec7e707a21994d301cc07d32a5a">PTACallGraph::FunctionSet</a> callees;</div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#aff32f240a03421937c2fc606359dca9b">isTDFork</a>(curInst))</div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160; {</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#adddbc09b7b99170cd0941f22ccc7e561">handleFork</a>(cts,rootTid);</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160; }</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#aac722a42dc6e03e771a7a80de5f8ec94">isTDJoin</a>(curInst))</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; {</div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ae4d0ee03b30220793d24f814e75a440e">handleJoin</a>(cts,rootTid);</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160; }</div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;CallInst&gt;(curInst) &amp;&amp; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#aa69b82c888c8193e97f9e95c62ac99d4">isCandidateFun</a>(<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#afcf119c89e93a24923dd0d97ddec7ee1">getCallee</a>(curInst, callees)))</div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160; {</div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160; </div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ab636777379aca0b53a06e4888d4b4c6b">handleCall</a>(cts,rootTid);</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; }</div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;ReturnInst&gt;(curInst))</div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160; {</div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a30e5ef1322216857513047d23b525829">handleRet</a>(cts);</div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160; }</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160; {</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#add09218cce8d8bd8dd9e73b2d26a5797">handleIntra</a>(cts);</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160; }</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160;</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; <span class="keywordflow">if</span>(curInst==exitInst)</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; {</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a149114898b13e1430c8fbb60978ca4f5">getMarkedFlag</a>(cts)!=<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631a2abecc56b7d5c644f7e14c98d33d0a0a">TDAlive</a>)</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a02dad7e9ae45a1751c4548dd9991a8b4">addToFullJoin</a>(<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#a516578af1f8666ff672e6611e61d7152">getParentThread</a>(rootTid),rootTid);</div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a6ead92486459ec7f94a8375c7f96faca">addToPartial</a>(<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#a516578af1f8666ff672e6611e61d7152">getParentThread</a>(rootTid),rootTid);</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; }</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160; }</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160;</div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160; }</div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160; }</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160;}</div><div class="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#l00361">GenericGraph.h:361</a></div></div>
698
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_ab636777379aca0b53a06e4888d4b4c6b"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#ab636777379aca0b53a06e4888d4b4c6b">SVF::ForkJoinAnalysis::handleCall</a></div><div class="ttdeci">void handleCall(const CxtStmt &amp;cts, NodeID rootTid)</div><div class="ttdoc">Handle call. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l00877">MHP.cpp:877</a></div></div>
696
+ <p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#l00728">728</a> of file <a class="el" href="MHP_8cpp_source.html">MHP.cpp</a>.</p>
697
+ <div class="fragment"><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160;{</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1GenericGraph.html#a5dfa3f178d4abf37177d0d74ff4c6a97">TCT::const_iterator</a> it = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(), eit = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); it!=eit; ++it)</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; {</div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtThread.html">CxtThread</a>&amp; ct = it-&gt;second-&gt;getCxtThread();</div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> rootTid = it-&gt;first;</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a7965a276a3a12d532c9967de13d4cc8a">clearFlagMap</a>();</div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">CallInst</a>* forkInst = ct.<a class="code" href="classSVF_1_1CxtThread.html#a066ba29a83edc1042139641ca088b038">getThread</a>())</div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160; {</div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a> forkSiteCxt = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#ab4bc72ca330b315df06f2d4d2c1a7b4f">getCxtOfCxtThread</a>(ct);</div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* exitInst = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#acc178bd423dbb21bd46a9fae9ed0351c">getExitInstOfParentRoutineFun</a>(rootTid);</div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160;</div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a613d763731058899e6819acdb2d7315f">InstVec</a> nextInsts;</div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a799e14292e16b9fb322cab07f3ff5593">getNextInsts</a>(forkInst,nextInsts);</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; <span class="keywordflow">for</span>(InstVec::const_iterator nit = nextInsts.begin(), enit = nextInsts.end(); nit!=enit; ++nit)</div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; {</div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a> cs(forkSiteCxt,*nit);</div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ac483d3b0e9084c2033e177eda9ac9215">markCxtStmtFlag</a>(cs,<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631a2abecc56b7d5c644f7e14c98d33d0a0a">TDAlive</a>);</div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160; }</div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160;</div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160; <span class="keywordflow">while</span>(!<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#acccf53d174cac3275da0d79c89a73916">cxtStmtList</a>.<a class="code" href="classSVF_1_1FIFOWorkList.html#a7056704c224dfb4b57287fe90c004aa8">empty</a>())</div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; {</div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160; <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a> cts = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a4d893583db922444c6a29923bf3d05d3">popFromCTSWorkList</a>();</div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* curInst = cts.<a class="code" href="classSVF_1_1CxtStmt.html#a5e8c4b10eb5c3240d2e21a020ed834a6">getStmt</a>();</div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>,<a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;-----\nForkJoinAnalysis root thread: &quot;</span> &lt;&lt; it-&gt;first &lt;&lt; <span class="stringliteral">&quot; &quot;</span>);</div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>,cts.<a class="code" href="classSVF_1_1CxtStmt.html#a56e2767c327a383db09dca96edb19614">dump</a>());</div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>,<a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;-----\n&quot;</span>);</div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160; <a class="code" href="classSVF_1_1PTACallGraph.html#a5f5a5ec7e707a21994d301cc07d32a5a">PTACallGraph::FunctionSet</a> callees;</div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#aff32f240a03421937c2fc606359dca9b">isTDFork</a>(curInst))</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160; {</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#adddbc09b7b99170cd0941f22ccc7e561">handleFork</a>(cts,rootTid);</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; }</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#aac722a42dc6e03e771a7a80de5f8ec94">isTDJoin</a>(curInst))</div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160; {</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ae4d0ee03b30220793d24f814e75a440e">handleJoin</a>(cts,rootTid);</div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160; }</div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;CallInst&gt;(curInst) &amp;&amp; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#aa69b82c888c8193e97f9e95c62ac99d4">isCandidateFun</a>(<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#afcf119c89e93a24923dd0d97ddec7ee1">getCallee</a>(curInst, callees)))</div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160; {</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; </div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ab636777379aca0b53a06e4888d4b4c6b">handleCall</a>(cts,rootTid);</div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; }</div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;ReturnInst&gt;(curInst))</div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160; {</div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a30e5ef1322216857513047d23b525829">handleRet</a>(cts);</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160; }</div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; {</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#add09218cce8d8bd8dd9e73b2d26a5797">handleIntra</a>(cts);</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160; }</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160;</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; <span class="keywordflow">if</span>(curInst==exitInst)</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; {</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a149114898b13e1430c8fbb60978ca4f5">getMarkedFlag</a>(cts)!=<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631a2abecc56b7d5c644f7e14c98d33d0a0a">TDAlive</a>)</div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a02dad7e9ae45a1751c4548dd9991a8b4">addToFullJoin</a>(<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#a516578af1f8666ff672e6611e61d7152">getParentThread</a>(rootTid),rootTid);</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a6ead92486459ec7f94a8375c7f96faca">addToPartial</a>(<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#a516578af1f8666ff672e6611e61d7152">getParentThread</a>(rootTid),rootTid);</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160; }</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160; }</div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160;</div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160; }</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160; }</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160;}</div><div class="ttc" id="classSVF_1_1GenericGraph_html_a0d9744b1b0e7a09a6f7af29188e243b7"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">SVF::GenericGraph::begin</a></div><div class="ttdeci">iterator begin()</div><div class="ttdoc">Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00361">GenericGraph.h:361</a></div></div>
698
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_ab636777379aca0b53a06e4888d4b4c6b"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#ab636777379aca0b53a06e4888d4b4c6b">SVF::ForkJoinAnalysis::handleCall</a></div><div class="ttdeci">void handleCall(const CxtStmt &amp;cts, NodeID rootTid)</div><div class="ttdoc">Handle call. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l00878">MHP.cpp:878</a></div></div>
699
699
  <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a149114898b13e1430c8fbb60978ca4f5"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a149114898b13e1430c8fbb60978ca4f5">SVF::ForkJoinAnalysis::getMarkedFlag</a></div><div class="ttdeci">ValDomain getMarkedFlag(const CxtStmt &amp;cs)</div><div class="ttdoc">Mark thread flags for cxtStmt. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00389">MHP.h:389</a></div></div>
700
700
  <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a02dad7e9ae45a1751c4548dd9991a8b4"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a02dad7e9ae45a1751c4548dd9991a8b4">SVF::ForkJoinAnalysis::addToFullJoin</a></div><div class="ttdeci">void addToFullJoin(NodeID tid1, NodeID tid2)</div><div class="ttdoc">full join and partial join </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00519">MHP.h:519</a></div></div>
701
701
  <div class="ttc" id="SVFBasicTypes_8h_html_a217a1ccdaec1abb103cf6b0373631234"><div class="ttname"><a href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a></div><div class="ttdeci">#define DMTA</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00171">SVFBasicTypes.h:171</a></div></div>
@@ -707,16 +707,16 @@ Private Attributes</h2></td></tr>
707
707
  <div class="ttc" id="classSVF_1_1CxtThread_html"><div class="ttname"><a href="classSVF_1_1CxtThread.html">SVF::CxtThread</a></div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00188">CxtStmt.h:188</a></div></div>
708
708
  <div class="ttc" id="classSVF_1_1CxtThread_html_a066ba29a83edc1042139641ca088b038"><div class="ttname"><a href="classSVF_1_1CxtThread.html#a066ba29a83edc1042139641ca088b038">SVF::CxtThread::getThread</a></div><div class="ttdeci">const CallInst * getThread() const</div><div class="ttdoc">Return forksite. </div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00210">CxtStmt.h:210</a></div></div>
709
709
  <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a613d763731058899e6819acdb2d7315f"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a613d763731058899e6819acdb2d7315f">SVF::ForkJoinAnalysis::InstVec</a></div><div class="ttdeci">TCT::InstVec InstVec</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00281">MHP.h:281</a></div></div>
710
- <div class="ttc" id="namespaceSVF_html_adc8b60ca7d60cf6c81feae20e4a04c63"><div class="ttname"><a href="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">SVF::CallInst</a></div><div class="ttdeci">llvm::CallInst CallInst</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00136">BasicTypes.h:136</a></div></div>
710
+ <div class="ttc" id="namespaceSVF_html_adc8b60ca7d60cf6c81feae20e4a04c63"><div class="ttname"><a href="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">SVF::CallInst</a></div><div class="ttdeci">llvm::CallInst CallInst</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00127">BasicTypes.h:127</a></div></div>
711
711
  <div class="ttc" id="classSVF_1_1GenericGraph_html_a5dfa3f178d4abf37177d0d74ff4c6a97"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a5dfa3f178d4abf37177d0d74ff4c6a97">SVF::GenericGraph::const_iterator</a></div><div class="ttdeci">IDToNodeMapTy::const_iterator const_iterator</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00339">GenericGraph.h:339</a></div></div>
712
712
  <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a799e14292e16b9fb322cab07f3ff5593"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a799e14292e16b9fb322cab07f3ff5593">SVF::ForkJoinAnalysis::getNextInsts</a></div><div class="ttdeci">void getNextInsts(const Instruction *inst, InstVec &amp;instSet)</div><div class="ttdoc">Get the next instructions following control flow. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00453">MHP.h:453</a></div></div>
713
713
  <div class="ttc" id="classSVF_1_1GenericGraph_html_a4bef15157423cef48dc7333a803cd27d"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">SVF::GenericGraph::end</a></div><div class="ttdeci">iterator end()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00365">GenericGraph.h:365</a></div></div>
714
714
  <div class="ttc" id="classSVF_1_1CxtStmt_html_a5e8c4b10eb5c3240d2e21a020ed834a6"><div class="ttname"><a href="classSVF_1_1CxtStmt.html#a5e8c4b10eb5c3240d2e21a020ed834a6">SVF::CxtStmt::getStmt</a></div><div class="ttdeci">const Instruction * getStmt() const</div><div class="ttdoc">Return current statement. </div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00062">CxtStmt.h:62</a></div></div>
715
715
  <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a6ead92486459ec7f94a8375c7f96faca"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a6ead92486459ec7f94a8375c7f96faca">SVF::ForkJoinAnalysis::addToPartial</a></div><div class="ttdeci">void addToPartial(NodeID tid1, NodeID tid2)</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00523">MHP.h:523</a></div></div>
716
+ <div class="ttc" id="namespaceSVF_html_ab700523619b089b952498f39a7f5b6b1"><div class="ttname"><a href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">SVF::CallStrCxt</a></div><div class="ttdeci">std::vector&lt; u32_t &gt; CallStrCxt</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00127">SVFBasicTypes.h:127</a></div></div>
716
717
  <div class="ttc" id="classSVF_1_1TCT_html_ab4bc72ca330b315df06f2d4d2c1a7b4f"><div class="ttname"><a href="classSVF_1_1TCT.html#ab4bc72ca330b315df06f2d4d2c1a7b4f">SVF::TCT::getCxtOfCxtThread</a></div><div class="ttdeci">const CallStrCxt &amp; getCxtOfCxtThread(const CxtThread &amp;ct) const</div><div class="ttdoc">get the context of a thread at its spawning site (fork site) </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00326">TCT.h:326</a></div></div>
717
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_ae4d0ee03b30220793d24f814e75a440e"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#ae4d0ee03b30220793d24f814e75a440e">SVF::ForkJoinAnalysis::handleJoin</a></div><div class="ttdeci">void handleJoin(const CxtStmt &amp;cts, NodeID rootTid)</div><div class="ttdoc">Handle join. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l00817">MHP.cpp:817</a></div></div>
718
- <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#l00077">BasicTypes.h:77</a></div></div>
719
- <div class="ttc" id="namespaceSVF_html_a542c6d5483bfc74fa58b45ad06b65960"><div class="ttname"><a href="namespaceSVF.html#a542c6d5483bfc74fa58b45ad06b65960">SVF::CallStrCxt</a></div><div class="ttdeci">SmallVector16 CallStrCxt</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00127">SVFBasicTypes.h:127</a></div></div>
718
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_ae4d0ee03b30220793d24f814e75a440e"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#ae4d0ee03b30220793d24f814e75a440e">SVF::ForkJoinAnalysis::handleJoin</a></div><div class="ttdeci">void handleJoin(const CxtStmt &amp;cts, NodeID rootTid)</div><div class="ttdoc">Handle join. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l00818">MHP.cpp:818</a></div></div>
719
+ <div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00076">BasicTypes.h:76</a></div></div>
720
720
  <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_ac483d3b0e9084c2033e177eda9ac9215"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#ac483d3b0e9084c2033e177eda9ac9215">SVF::ForkJoinAnalysis::markCxtStmtFlag</a></div><div class="ttdeci">void markCxtStmtFlag(const CxtStmt &amp;tgr, ValDomain flag)</div><div class="ttdoc">Initialize TDAlive and TDDead flags. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00401">MHP.h:401</a></div></div>
721
721
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aed0b0b9f035057552a6a82154fd88e61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVF::SVFUtil::outs</a></div><div class="ttdeci">std::ostream &amp; outs()</div><div class="ttdoc">Overwrite llvm::outs() </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00049">SVFUtil.h:49</a></div></div>
722
722
  <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_acccf53d174cac3275da0d79c89a73916"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#acccf53d174cac3275da0d79c89a73916">SVF::ForkJoinAnalysis::cxtStmtList</a></div><div class="ttdeci">CxtStmtWorkList cxtStmtList</div><div class="ttdoc">context-sensitive statement worklist </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00536">MHP.h:536</a></div></div>
@@ -724,16 +724,16 @@ Private Attributes</h2></td></tr>
724
724
  <div class="ttc" id="classSVF_1_1TCT_html_aa69b82c888c8193e97f9e95c62ac99d4"><div class="ttname"><a href="classSVF_1_1TCT.html#aa69b82c888c8193e97f9e95c62ac99d4">SVF::TCT::isCandidateFun</a></div><div class="ttdeci">bool isCandidateFun(const PTACallGraph::FunctionSet &amp;callees) const</div><div class="ttdoc">Whether it is a candidate function for indirect call. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00246">TCT.h:246</a></div></div>
725
725
  <div class="ttc" id="classSVF_1_1TCT_html_a516578af1f8666ff672e6611e61d7152"><div class="ttname"><a href="classSVF_1_1TCT.html#a516578af1f8666ff672e6611e61d7152">SVF::TCT::getParentThread</a></div><div class="ttdeci">NodeID getParentThread(NodeID tid) const</div><div class="ttdoc">Get parent thread. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00277">TCT.h:277</a></div></div>
726
726
  <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a4d893583db922444c6a29923bf3d05d3"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a4d893583db922444c6a29923bf3d05d3">SVF::ForkJoinAnalysis::popFromCTSWorkList</a></div><div class="ttdeci">CxtStmt popFromCTSWorkList()</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00445">MHP.h:445</a></div></div>
727
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a30e5ef1322216857513047d23b525829"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a30e5ef1322216857513047d23b525829">SVF::ForkJoinAnalysis::handleRet</a></div><div class="ttdeci">void handleRet(const CxtStmt &amp;cts)</div><div class="ttdoc">Handle return. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l00901">MHP.cpp:901</a></div></div>
727
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a30e5ef1322216857513047d23b525829"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a30e5ef1322216857513047d23b525829">SVF::ForkJoinAnalysis::handleRet</a></div><div class="ttdeci">void handleRet(const CxtStmt &amp;cts)</div><div class="ttdoc">Handle return. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l00902">MHP.cpp:902</a></div></div>
728
728
  <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_aac722a42dc6e03e771a7a80de5f8ec94"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#aac722a42dc6e03e771a7a80de5f8ec94">SVF::ForkJoinAnalysis::isTDJoin</a></div><div class="ttdeci">bool isTDJoin(const Instruction *call)</div><div class="ttdoc">Whether it is a join site. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00474">MHP.h:474</a></div></div>
729
729
  <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_aff32f240a03421937c2fc606359dca9b"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#aff32f240a03421937c2fc606359dca9b">SVF::ForkJoinAnalysis::isTDFork</a></div><div class="ttdeci">bool isTDFork(const Instruction *call)</div><div class="ttdoc">Whether it is a fork site. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00469">MHP.h:469</a></div></div>
730
730
  <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_acc178bd423dbb21bd46a9fae9ed0351c"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#acc178bd423dbb21bd46a9fae9ed0351c">SVF::ForkJoinAnalysis::getExitInstOfParentRoutineFun</a></div><div class="ttdeci">const Instruction * getExitInstOfParentRoutineFun(NodeID tid) const</div><div class="ttdoc">Get exit instruction of the start routine function of tid&amp;#39;s parent thread. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00336">MHP.h:336</a></div></div>
731
731
  <div class="ttc" id="classSVF_1_1CxtStmt_html_a56e2767c327a383db09dca96edb19614"><div class="ttname"><a href="classSVF_1_1CxtStmt.html#a56e2767c327a383db09dca96edb19614">SVF::CxtStmt::dump</a></div><div class="ttdeci">void dump() const</div><div class="ttdoc">Dump CxtStmt. </div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00109">CxtStmt.h:109</a></div></div>
732
732
  <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a8d40e687caf8999369621ed385dfc631a2abecc56b7d5c644f7e14c98d33d0a0a"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631a2abecc56b7d5c644f7e14c98d33d0a0a">SVF::ForkJoinAnalysis::TDAlive</a></div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00277">MHP.h:277</a></div></div>
733
733
  <div class="ttc" id="SVFBasicTypes_8h_html_a173ce1b9b505fdadf5613b663749d3b0"><div class="ttname"><a href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a></div><div class="ttdeci">#define DBOUT(TYPE, X)</div><div class="ttdoc">LLVM debug macros, define type of your DEBUG model of each pass. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00151">SVFBasicTypes.h:151</a></div></div>
734
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_adddbc09b7b99170cd0941f22ccc7e561"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#adddbc09b7b99170cd0941f22ccc7e561">SVF::ForkJoinAnalysis::handleFork</a></div><div class="ttdeci">void handleFork(const CxtStmt &amp;cts, NodeID rootTid)</div><div class="ttdoc">Handle fork. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l00791">MHP.cpp:791</a></div></div>
734
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_adddbc09b7b99170cd0941f22ccc7e561"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#adddbc09b7b99170cd0941f22ccc7e561">SVF::ForkJoinAnalysis::handleFork</a></div><div class="ttdeci">void handleFork(const CxtStmt &amp;cts, NodeID rootTid)</div><div class="ttdoc">Handle fork. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l00792">MHP.cpp:792</a></div></div>
735
735
  <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a7965a276a3a12d532c9967de13d4cc8a"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a7965a276a3a12d532c9967de13d4cc8a">SVF::ForkJoinAnalysis::clearFlagMap</a></div><div class="ttdeci">void clearFlagMap()</div><div class="ttdoc">Clear flags. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00432">MHP.h:432</a></div></div>
736
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_add09218cce8d8bd8dd9e73b2d26a5797"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#add09218cce8d8bd8dd9e73b2d26a5797">SVF::ForkJoinAnalysis::handleIntra</a></div><div class="ttdeci">void handleIntra(const CxtStmt &amp;cts)</div><div class="ttdoc">Handle intra. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l00947">MHP.cpp:947</a></div></div>
736
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_add09218cce8d8bd8dd9e73b2d26a5797"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#add09218cce8d8bd8dd9e73b2d26a5797">SVF::ForkJoinAnalysis::handleIntra</a></div><div class="ttdeci">void handleIntra(const CxtStmt &amp;cts)</div><div class="ttdoc">Handle intra. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l00948">MHP.cpp:948</a></div></div>
737
737
  </div><!-- fragment -->
738
738
  </div>
739
739
  </div>
@@ -787,23 +787,23 @@ Private Attributes</h2></td></tr>
787
787
  <p>functions </p>
788
788
  <p>Collect SCEV pass information for pointers at fork/join sites Because ScalarEvolution is a function pass, previous knowledge of a function may be overwritten when analyzing a new function. We use a internal wrapper class <a class="el" href="classSVF_1_1PTASCEV.html">PTASCEV</a> to record all the necessary information for determining symmetric fork/join inside loops </p>
789
789
 
790
- <p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#l00673">673</a> of file <a class="el" href="MHP_8cpp_source.html">MHP.cpp</a>.</p>
791
- <div class="fragment"><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160;{</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const Instruction*&gt;</a> CallInstSet;</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const Function*, CallInstSet &gt;</a> FunToFJSites;</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; FunToFJSites funToFJSites;</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160;</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160; <span class="keywordflow">for</span>(ThreadCallGraph::CallSiteSet::const_iterator it = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#a1602d02773578bca73dcbd29b95c67d0">getThreadCallGraph</a>()-&gt;<a class="code" href="classSVF_1_1ThreadCallGraph.html#a37f2e076713a9aeb0e4313fb05dfb92e">forksitesBegin</a>(),</div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; eit = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#a1602d02773578bca73dcbd29b95c67d0">getThreadCallGraph</a>()-&gt;<a class="code" href="classSVF_1_1ThreadCallGraph.html#a1ebbd26c17cff1c1a1bee9caa9a8f825">forksitesEnd</a>(); it!=eit; ++it)</div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; {</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* fork = (*it)-&gt;getCallSite();</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun = fork-&gt;getParent()-&gt;getParent();</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; funToFJSites[fun].insert(fork);</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; }</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160;</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; <span class="keywordflow">for</span>(ThreadCallGraph::CallSiteSet::const_iterator it = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#a1602d02773578bca73dcbd29b95c67d0">getThreadCallGraph</a>()-&gt;<a class="code" href="classSVF_1_1ThreadCallGraph.html#a98ecfe14be2d38d292b5919716cdd29d">joinsitesBegin</a>(),</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; eit = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#a1602d02773578bca73dcbd29b95c67d0">getThreadCallGraph</a>()-&gt;<a class="code" href="classSVF_1_1ThreadCallGraph.html#a50502f398e5eac9c6da3e26ea6052057">joinsitesEnd</a>(); it!=eit; ++it)</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; {</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</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="l00691"></a><span class="lineno"> 691</span>&#160; funToFJSites[join-&gt;getParent()-&gt;getParent()].insert(join);</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; }</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160;</div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; <span class="keywordflow">for</span>(FunToFJSites::const_iterator it = funToFJSites.begin(), eit = funToFJSites.end(); it!=eit; ++it)</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; {</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; <span class="comment">// ScalarEvolution* SE = MTA::getSE(it-&gt;first);</span></div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; <span class="keywordflow">for</span>(CallInstSet::const_iterator sit = it-&gt;second.begin(), esit = it-&gt;second.end(); sit!=esit; ++sit)</div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; {</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* callInst = *sit;</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#a1602d02773578bca73dcbd29b95c67d0">getThreadCallGraph</a>()-&gt;<a class="code" href="classSVF_1_1ThreadCallGraph.html#a07d3db6ffe8d75effd6fbc3856c484fe">isForksite</a>(<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a94d65f9e22a13772042b2af652cf5538">getCBN</a>(callInst)))</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; {</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *forkSiteTidPtr = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#acd4308b99446c277ccb3407103fe21d0">getForkedThread</a>(callInst);</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; <span class="comment">// const SCEV *forkSiteTidPtrSCEV = SE-&gt;getSCEV(const_cast&lt;Value*&gt;(forkSiteTidPtr));</span></div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; <span class="comment">// const SCEV *baseForkTidPtrSCEV = SE-&gt;getSCEV(const_cast&lt;Value*&gt;(getBasePtr(forkSiteTidPtr)));</span></div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; <span class="comment">// forkSiteTidPtrSCEV = getSCEVMinusExpr(forkSiteTidPtrSCEV, baseForkTidPtrSCEV, SE);</span></div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; <a class="code" href="classSVF_1_1PTASCEV.html">PTASCEV</a> scev(forkSiteTidPtr,<span class="keyword">nullptr</span>,<span class="keyword">nullptr</span>);</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a4207948054a0f98560922f3f07ada10f">fkjnToPTASCEVMap</a>.insert(std::make_pair(callInst,scev));</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; }</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; {</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *joinSiteTidPtr = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ada1e56dfe2d64ea6310142a346c86ed4">getJoinedThread</a>(callInst);</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; <span class="comment">//const SCEV *joinSiteTidPtrSCEV = SE-&gt;getSCEV(const_cast&lt;Value*&gt;(joinSiteTidPtr));</span></div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; <span class="comment">//const SCEV *baseJoinTidPtrSCEV = SE-&gt;getSCEV(const_cast&lt;Value*&gt;(getBasePtr(joinSiteTidPtr)));</span></div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; <span class="comment">//joinSiteTidPtrSCEV = getSCEVMinusExpr(joinSiteTidPtrSCEV, baseJoinTidPtrSCEV, SE);</span></div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; </div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; <a class="code" href="classSVF_1_1PTASCEV.html">PTASCEV</a> scev(joinSiteTidPtr,<span class="keyword">nullptr</span>,<span class="keyword">nullptr</span>);</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a4207948054a0f98560922f3f07ada10f">fkjnToPTASCEVMap</a>.insert(std::make_pair(callInst,scev));</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; }</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; }</div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160;</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160; }</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160;}</div><div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a4207948054a0f98560922f3f07ada10f"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a4207948054a0f98560922f3f07ada10f">SVF::ForkJoinAnalysis::fkjnToPTASCEVMap</a></div><div class="ttdeci">forkjoinToPTASCEVMap fkjnToPTASCEVMap</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00545">MHP.h:545</a></div></div>
790
+ <p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#l00674">674</a> of file <a class="el" href="MHP_8cpp_source.html">MHP.cpp</a>.</p>
791
+ <div class="fragment"><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160;{</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const Instruction*&gt;</a> CallInstSet;</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const Function*, CallInstSet &gt;</a> FunToFJSites;</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160; FunToFJSites funToFJSites;</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160;</div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; <span class="keywordflow">for</span>(ThreadCallGraph::CallSiteSet::const_iterator it = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#a1602d02773578bca73dcbd29b95c67d0">getThreadCallGraph</a>()-&gt;<a class="code" href="classSVF_1_1ThreadCallGraph.html#a37f2e076713a9aeb0e4313fb05dfb92e">forksitesBegin</a>(),</div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; eit = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#a1602d02773578bca73dcbd29b95c67d0">getThreadCallGraph</a>()-&gt;<a class="code" href="classSVF_1_1ThreadCallGraph.html#a1ebbd26c17cff1c1a1bee9caa9a8f825">forksitesEnd</a>(); it!=eit; ++it)</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; {</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* fork = (*it)-&gt;getCallSite();</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun = fork-&gt;getParent()-&gt;getParent();</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; funToFJSites[fun].insert(fork);</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; }</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160;</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; <span class="keywordflow">for</span>(ThreadCallGraph::CallSiteSet::const_iterator it = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#a1602d02773578bca73dcbd29b95c67d0">getThreadCallGraph</a>()-&gt;<a class="code" href="classSVF_1_1ThreadCallGraph.html#a98ecfe14be2d38d292b5919716cdd29d">joinsitesBegin</a>(),</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; eit = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#a1602d02773578bca73dcbd29b95c67d0">getThreadCallGraph</a>()-&gt;<a class="code" href="classSVF_1_1ThreadCallGraph.html#a50502f398e5eac9c6da3e26ea6052057">joinsitesEnd</a>(); it!=eit; ++it)</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; {</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* join = (*it)-&gt;getCallSite();</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; funToFJSites[join-&gt;getParent()-&gt;getParent()].insert(join);</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; }</div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160;</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; <span class="keywordflow">for</span>(FunToFJSites::const_iterator it = funToFJSites.begin(), eit = funToFJSites.end(); it!=eit; ++it)</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; {</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; <span class="comment">// ScalarEvolution* SE = MTA::getSE(it-&gt;first);</span></div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; <span class="keywordflow">for</span>(CallInstSet::const_iterator sit = it-&gt;second.begin(), esit = it-&gt;second.end(); sit!=esit; ++sit)</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; {</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* callInst = *sit;</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#a1602d02773578bca73dcbd29b95c67d0">getThreadCallGraph</a>()-&gt;<a class="code" href="classSVF_1_1ThreadCallGraph.html#a07d3db6ffe8d75effd6fbc3856c484fe">isForksite</a>(<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a94d65f9e22a13772042b2af652cf5538">getCBN</a>(callInst)))</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; {</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *forkSiteTidPtr = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#acd4308b99446c277ccb3407103fe21d0">getForkedThread</a>(callInst);</div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; <span class="comment">// const SCEV *forkSiteTidPtrSCEV = SE-&gt;getSCEV(const_cast&lt;Value*&gt;(forkSiteTidPtr));</span></div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; <span class="comment">// const SCEV *baseForkTidPtrSCEV = SE-&gt;getSCEV(const_cast&lt;Value*&gt;(getBasePtr(forkSiteTidPtr)));</span></div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; <span class="comment">// forkSiteTidPtrSCEV = getSCEVMinusExpr(forkSiteTidPtrSCEV, baseForkTidPtrSCEV, SE);</span></div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; <a class="code" href="classSVF_1_1PTASCEV.html">PTASCEV</a> scev(forkSiteTidPtr,<span class="keyword">nullptr</span>,<span class="keyword">nullptr</span>);</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a4207948054a0f98560922f3f07ada10f">fkjnToPTASCEVMap</a>.insert(std::make_pair(callInst,scev));</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; }</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; {</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *joinSiteTidPtr = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ada1e56dfe2d64ea6310142a346c86ed4">getJoinedThread</a>(callInst);</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; <span class="comment">//const SCEV *joinSiteTidPtrSCEV = SE-&gt;getSCEV(const_cast&lt;Value*&gt;(joinSiteTidPtr));</span></div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; <span class="comment">//const SCEV *baseJoinTidPtrSCEV = SE-&gt;getSCEV(const_cast&lt;Value*&gt;(getBasePtr(joinSiteTidPtr)));</span></div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; <span class="comment">//joinSiteTidPtrSCEV = getSCEVMinusExpr(joinSiteTidPtrSCEV, baseJoinTidPtrSCEV, SE);</span></div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; </div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; <a class="code" href="classSVF_1_1PTASCEV.html">PTASCEV</a> scev(joinSiteTidPtr,<span class="keyword">nullptr</span>,<span class="keyword">nullptr</span>);</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a4207948054a0f98560922f3f07ada10f">fkjnToPTASCEVMap</a>.insert(std::make_pair(callInst,scev));</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; }</div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; }</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160;</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; }</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160;}</div><div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a4207948054a0f98560922f3f07ada10f"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a4207948054a0f98560922f3f07ada10f">SVF::ForkJoinAnalysis::fkjnToPTASCEVMap</a></div><div class="ttdeci">forkjoinToPTASCEVMap fkjnToPTASCEVMap</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00545">MHP.h:545</a></div></div>
792
792
  <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_ada1e56dfe2d64ea6310142a346c86ed4"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#ada1e56dfe2d64ea6310142a346c86ed4">SVF::ForkJoinAnalysis::getJoinedThread</a></div><div class="ttdeci">const Value * getJoinedThread(const Instruction *call)</div><div class="ttdoc">Get joined thread. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00484">MHP.h:484</a></div></div>
793
793
  <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a2c6ce7aa04c399746d89230be0e0f1ce"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">SVF::ForkJoinAnalysis::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00534">MHP.h:534</a></div></div>
794
794
  <div class="ttc" id="classSVF_1_1ThreadCallGraph_html_a1ebbd26c17cff1c1a1bee9caa9a8f825"><div class="ttname"><a href="classSVF_1_1ThreadCallGraph.html#a1ebbd26c17cff1c1a1bee9caa9a8f825">SVF::ThreadCallGraph::forksitesEnd</a></div><div class="ttdeci">CallSiteSet::const_iterator forksitesEnd() const</div><div class="ttdef"><b>Definition:</b> <a href="ThreadCallGraph_8h_source.html#l00275">ThreadCallGraph.h:275</a></div></div>
795
- <div class="ttc" id="namespaceSVF_html_a8234d4b959abc9123993bcff4eee34c1"><div class="ttname"><a href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">SVF::Map</a></div><div class="ttdeci">std::unordered_map&lt; Key, Value, Hash, KeyEqual, Allocator &gt; Map</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00102">SVFBasicTypes.h:102</a></div></div>
795
+ <div class="ttc" id="namespaceSVF_html_a8234d4b959abc9123993bcff4eee34c1"><div class="ttname"><a href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">SVF::Map</a></div><div class="ttdeci">std::unordered_map&lt; Key, Value, Hash, KeyEqual, Allocator &gt; Map</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00106">SVFBasicTypes.h:106</a></div></div>
796
796
  <div class="ttc" id="classSVF_1_1ThreadCallGraph_html_a37f2e076713a9aeb0e4313fb05dfb92e"><div class="ttname"><a href="classSVF_1_1ThreadCallGraph.html#a37f2e076713a9aeb0e4313fb05dfb92e">SVF::ThreadCallGraph::forksitesBegin</a></div><div class="ttdeci">CallSiteSet::const_iterator forksitesBegin() const</div><div class="ttdoc">Fork sites iterators. </div><div class="ttdef"><b>Definition:</b> <a href="ThreadCallGraph_8h_source.html#l00271">ThreadCallGraph.h:271</a></div></div>
797
- <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#l00097">SVFBasicTypes.h:97</a></div></div>
798
- <div class="ttc" id="namespaceSVF_html_a5faee14fa1dd41447bc73ac365fe33c1"><div class="ttname"><a href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a></div><div class="ttdeci">llvm::Function Function</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00074">BasicTypes.h:74</a></div></div>
799
- <div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00077">BasicTypes.h:77</a></div></div>
797
+ <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#l00101">SVFBasicTypes.h:101</a></div></div>
798
+ <div class="ttc" id="namespaceSVF_html_a5faee14fa1dd41447bc73ac365fe33c1"><div class="ttname"><a href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a></div><div class="ttdeci">llvm::Function Function</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00073">BasicTypes.h:73</a></div></div>
799
+ <div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00076">BasicTypes.h:76</a></div></div>
800
800
  <div class="ttc" id="classSVF_1_1ThreadCallGraph_html_a98ecfe14be2d38d292b5919716cdd29d"><div class="ttname"><a href="classSVF_1_1ThreadCallGraph.html#a98ecfe14be2d38d292b5919716cdd29d">SVF::ThreadCallGraph::joinsitesBegin</a></div><div class="ttdeci">CallSiteSet::const_iterator joinsitesBegin() const</div><div class="ttdoc">Join sites iterators. </div><div class="ttdef"><b>Definition:</b> <a href="ThreadCallGraph_8h_source.html#l00283">ThreadCallGraph.h:283</a></div></div>
801
801
  <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a94d65f9e22a13772042b2af652cf5538"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a94d65f9e22a13772042b2af652cf5538">SVF::ForkJoinAnalysis::getCBN</a></div><div class="ttdeci">CallICFGNode * getCBN(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00383">MHP.h:383</a></div></div>
802
802
  <div class="ttc" id="classSVF_1_1TCT_html_a1602d02773578bca73dcbd29b95c67d0"><div class="ttname"><a href="classSVF_1_1TCT.html#a1602d02773578bca73dcbd29b95c67d0">SVF::TCT::getThreadCallGraph</a></div><div class="ttdeci">ThreadCallGraph * getThreadCallGraph() const</div><div class="ttdoc">Get TCG. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00164">TCT.h:164</a></div></div>
803
803
  <div class="ttc" id="classSVF_1_1ThreadCallGraph_html_a07d3db6ffe8d75effd6fbc3856c484fe"><div class="ttname"><a href="classSVF_1_1ThreadCallGraph.html#a07d3db6ffe8d75effd6fbc3856c484fe">SVF::ThreadCallGraph::isForksite</a></div><div class="ttdeci">bool isForksite(const CallICFGNode *csInst)</div><div class="ttdef"><b>Definition:</b> <a href="ThreadCallGraph_8h_source.html#l00255">ThreadCallGraph.h:255</a></div></div>
804
804
  <div class="ttc" id="classSVF_1_1ThreadCallGraph_html_a50502f398e5eac9c6da3e26ea6052057"><div class="ttname"><a href="classSVF_1_1ThreadCallGraph.html#a50502f398e5eac9c6da3e26ea6052057">SVF::ThreadCallGraph::joinsitesEnd</a></div><div class="ttdeci">CallSiteSet::const_iterator joinsitesEnd() const</div><div class="ttdef"><b>Definition:</b> <a href="ThreadCallGraph_8h_source.html#l00287">ThreadCallGraph.h:287</a></div></div>
805
805
  <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_acd4308b99446c277ccb3407103fe21d0"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#acd4308b99446c277ccb3407103fe21d0">SVF::ForkJoinAnalysis::getForkedThread</a></div><div class="ttdeci">const Value * getForkedThread(const Instruction *call)</div><div class="ttdoc">Get forked thread. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00479">MHP.h:479</a></div></div>
806
- <div class="ttc" id="namespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00076">BasicTypes.h:76</a></div></div>
806
+ <div class="ttc" id="namespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00075">BasicTypes.h:75</a></div></div>
807
807
  <div class="ttc" id="classSVF_1_1PTASCEV_html"><div class="ttname"><a href="classSVF_1_1PTASCEV.html">SVF::PTASCEV</a></div><div class="ttdef"><b>Definition:</b> <a href="DataFlowUtil_8h_source.html#l00043">DataFlowUtil.h:43</a></div></div>
808
808
  </div><!-- fragment -->
809
809
  </div>
@@ -898,8 +898,8 @@ Private Attributes</h2></td></tr>
898
898
  <p>Get directly and indirectly joined threadIDs based on a context-sensitive join site. </p>
899
899
  <p>Return thread id(s) which are joined at this join site (1) thread t1 directly joins thread t2 (2) thread t1 indirectly joins thread t3 via directly joining t2 (t2 fully joins its child thread t3) </p>
900
900
 
901
- <p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#l00967">967</a> of file <a class="el" href="MHP_8cpp_source.html">MHP.cpp</a>.</p>
902
- <div class="fragment"><div class="line"><a name="l00968"></a><span class="lineno"> 968</span>&#160;{</div><div class="line"><a name="l00969"></a><span class="lineno"> 969</span>&#160;</div><div class="line"><a name="l00970"></a><span class="lineno"> 970</span>&#160; CxtStmtToTIDMap::const_iterator it = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ab5678bd46e573070827cc413f0e0d5be">dirAndIndJoinMap</a>.find(cs);</div><div class="line"><a name="l00971"></a><span class="lineno"> 971</span>&#160; <span class="keywordflow">if</span>(it!=<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ab5678bd46e573070827cc413f0e0d5be">dirAndIndJoinMap</a>.end())</div><div class="line"><a name="l00972"></a><span class="lineno"> 972</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00973"></a><span class="lineno"> 973</span>&#160;</div><div class="line"><a name="l00974"></a><span class="lineno"> 974</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; directJoinTids = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a819ef18524ee9104b920d1a465c61da1">getDirectlyJoinedTid</a>(cs);</div><div class="line"><a name="l00975"></a><span class="lineno"> 975</span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> allJoinTids = directJoinTids;</div><div class="line"><a name="l00976"></a><span class="lineno"> 976</span>&#160;</div><div class="line"><a name="l00977"></a><span class="lineno"> 977</span>&#160; <a class="code" href="classSVF_1_1FIFOWorkList.html">FIFOWorkList&lt;NodeID&gt;</a> worklist;</div><div class="line"><a name="l00978"></a><span class="lineno"> 978</span>&#160; <span class="keywordflow">for</span>(NodeBS::iterator it = directJoinTids.begin(), eit = directJoinTids.end(); it!=eit; ++it)</div><div class="line"><a name="l00979"></a><span class="lineno"> 979</span>&#160; {</div><div class="line"><a name="l00980"></a><span class="lineno"> 980</span>&#160; worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">push</a>(*it);</div><div class="line"><a name="l00981"></a><span class="lineno"> 981</span>&#160; }</div><div class="line"><a name="l00982"></a><span class="lineno"> 982</span>&#160;</div><div class="line"><a name="l00983"></a><span class="lineno"> 983</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="l00984"></a><span class="lineno"> 984</span>&#160; {</div><div class="line"><a name="l00985"></a><span class="lineno"> 985</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> tid = worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#a8fa72918fce7e9c0b2dc34b683a797c6">pop</a>();</div><div class="line"><a name="l00986"></a><span class="lineno"> 986</span>&#160; <a class="code" href="classSVF_1_1TCTNode.html">TCTNode</a>* node = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#a7b4ad0b052e1f8b6869733eef15f4e4d">getTCTNode</a>(tid);</div><div class="line"><a name="l00987"></a><span class="lineno"> 987</span>&#160; <span class="keywordflow">for</span>(TCT::ThreadCreateEdgeSet::const_iterator it = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#a511c2ee4cfdc01a720135b2cd493fe3b">getChildrenBegin</a>(node), eit = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#af47837e30a80e8d6684f3ee6001afb7a">getChildrenEnd</a>(node); it!=eit; ++it)</div><div class="line"><a name="l00988"></a><span class="lineno"> 988</span>&#160; {</div><div class="line"><a name="l00989"></a><span class="lineno"> 989</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> childTid = (*it)-&gt;getDstID();</div><div class="line"><a name="l00990"></a><span class="lineno"> 990</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ab55532eefbcef639ced957ad82fbd340">isFullJoin</a>(tid,childTid))</div><div class="line"><a name="l00991"></a><span class="lineno"> 991</span>&#160; {</div><div class="line"><a name="l00992"></a><span class="lineno"> 992</span>&#160; allJoinTids.set(childTid);</div><div class="line"><a name="l00993"></a><span class="lineno"> 993</span>&#160; worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">push</a>(childTid);</div><div class="line"><a name="l00994"></a><span class="lineno"> 994</span>&#160; }</div><div class="line"><a name="l00995"></a><span class="lineno"> 995</span>&#160; }</div><div class="line"><a name="l00996"></a><span class="lineno"> 996</span>&#160; }</div><div class="line"><a name="l00997"></a><span class="lineno"> 997</span>&#160;</div><div class="line"><a name="l00998"></a><span class="lineno"> 998</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ab5678bd46e573070827cc413f0e0d5be">dirAndIndJoinMap</a>[cs] = allJoinTids;</div><div class="line"><a name="l00999"></a><span class="lineno"> 999</span>&#160;</div><div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160; <span class="keywordflow">return</span> allJoinTids;</div><div class="line"><a name="l01001"></a><span class="lineno"> 1001</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#l00018">MTAResultValidator.h:18</a></div></div>
901
+ <p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#l00968">968</a> of file <a class="el" href="MHP_8cpp_source.html">MHP.cpp</a>.</p>
902
+ <div class="fragment"><div class="line"><a name="l00969"></a><span class="lineno"> 969</span>&#160;{</div><div class="line"><a name="l00970"></a><span class="lineno"> 970</span>&#160;</div><div class="line"><a name="l00971"></a><span class="lineno"> 971</span>&#160; CxtStmtToTIDMap::const_iterator it = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ab5678bd46e573070827cc413f0e0d5be">dirAndIndJoinMap</a>.find(cs);</div><div class="line"><a name="l00972"></a><span class="lineno"> 972</span>&#160; <span class="keywordflow">if</span>(it!=<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ab5678bd46e573070827cc413f0e0d5be">dirAndIndJoinMap</a>.end())</div><div class="line"><a name="l00973"></a><span class="lineno"> 973</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00974"></a><span class="lineno"> 974</span>&#160;</div><div class="line"><a name="l00975"></a><span class="lineno"> 975</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; directJoinTids = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a819ef18524ee9104b920d1a465c61da1">getDirectlyJoinedTid</a>(cs);</div><div class="line"><a name="l00976"></a><span class="lineno"> 976</span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> allJoinTids = directJoinTids;</div><div class="line"><a name="l00977"></a><span class="lineno"> 977</span>&#160;</div><div class="line"><a name="l00978"></a><span class="lineno"> 978</span>&#160; <a class="code" href="classSVF_1_1FIFOWorkList.html">FIFOWorkList&lt;NodeID&gt;</a> worklist;</div><div class="line"><a name="l00979"></a><span class="lineno"> 979</span>&#160; <span class="keywordflow">for</span>(NodeBS::iterator it = directJoinTids.begin(), eit = directJoinTids.end(); it!=eit; ++it)</div><div class="line"><a name="l00980"></a><span class="lineno"> 980</span>&#160; {</div><div class="line"><a name="l00981"></a><span class="lineno"> 981</span>&#160; worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">push</a>(*it);</div><div class="line"><a name="l00982"></a><span class="lineno"> 982</span>&#160; }</div><div class="line"><a name="l00983"></a><span class="lineno"> 983</span>&#160;</div><div class="line"><a name="l00984"></a><span class="lineno"> 984</span>&#160; <span class="keywordflow">while</span>(!worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#a7056704c224dfb4b57287fe90c004aa8">empty</a>())</div><div class="line"><a name="l00985"></a><span class="lineno"> 985</span>&#160; {</div><div class="line"><a name="l00986"></a><span class="lineno"> 986</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> tid = worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#a8fa72918fce7e9c0b2dc34b683a797c6">pop</a>();</div><div class="line"><a name="l00987"></a><span class="lineno"> 987</span>&#160; <a class="code" href="classSVF_1_1TCTNode.html">TCTNode</a>* node = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#a7b4ad0b052e1f8b6869733eef15f4e4d">getTCTNode</a>(tid);</div><div class="line"><a name="l00988"></a><span class="lineno"> 988</span>&#160; <span class="keywordflow">for</span>(TCT::ThreadCreateEdgeSet::const_iterator it = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#a511c2ee4cfdc01a720135b2cd493fe3b">getChildrenBegin</a>(node), eit = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#af47837e30a80e8d6684f3ee6001afb7a">getChildrenEnd</a>(node); it!=eit; ++it)</div><div class="line"><a name="l00989"></a><span class="lineno"> 989</span>&#160; {</div><div class="line"><a name="l00990"></a><span class="lineno"> 990</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> childTid = (*it)-&gt;getDstID();</div><div class="line"><a name="l00991"></a><span class="lineno"> 991</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ab55532eefbcef639ced957ad82fbd340">isFullJoin</a>(tid,childTid))</div><div class="line"><a name="l00992"></a><span class="lineno"> 992</span>&#160; {</div><div class="line"><a name="l00993"></a><span class="lineno"> 993</span>&#160; allJoinTids.set(childTid);</div><div class="line"><a name="l00994"></a><span class="lineno"> 994</span>&#160; worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">push</a>(childTid);</div><div class="line"><a name="l00995"></a><span class="lineno"> 995</span>&#160; }</div><div class="line"><a name="l00996"></a><span class="lineno"> 996</span>&#160; }</div><div class="line"><a name="l00997"></a><span class="lineno"> 997</span>&#160; }</div><div class="line"><a name="l00998"></a><span class="lineno"> 998</span>&#160;</div><div class="line"><a name="l00999"></a><span class="lineno"> 999</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ab5678bd46e573070827cc413f0e0d5be">dirAndIndJoinMap</a>[cs] = allJoinTids;</div><div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160;</div><div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160; <span class="keywordflow">return</span> allJoinTids;</div><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>&#160;}</div><div class="ttc" id="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#l00018">MTAResultValidator.h:18</a></div></div>
903
903
  <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#l00185">TCT.h:185</a></div></div>
904
904
  <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a2c6ce7aa04c399746d89230be0e0f1ce"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">SVF::ForkJoinAnalysis::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00534">MHP.h:534</a></div></div>
905
905
  <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,7 +910,7 @@ Private Attributes</h2></td></tr>
910
910
  <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_ab55532eefbcef639ced957ad82fbd340"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#ab55532eefbcef639ced957ad82fbd340">SVF::ForkJoinAnalysis::isFullJoin</a></div><div class="ttdeci">bool isFullJoin(NodeID tid1, NodeID tid2)</div><div class="ttdoc">Whether t1 fully joins t2. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00326">MHP.h:326</a></div></div>
911
911
  <div class="ttc" id="classSVF_1_1FIFOWorkList_html"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html">SVF::FIFOWorkList&lt; NodeID &gt;</a></div></div>
912
912
  <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_ab5678bd46e573070827cc413f0e0d5be"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#ab5678bd46e573070827cc413f0e0d5be">SVF::ForkJoinAnalysis::dirAndIndJoinMap</a></div><div class="ttdeci">CxtStmtToTIDMap dirAndIndJoinMap</div><div class="ttdoc">maps a context-sensitive join site to directly and indirectly joined thread ids </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00538">MHP.h:538</a></div></div>
913
- <div class="ttc" id="namespaceSVF_html_a740396763e377643790c8b803ab3e4ea"><div class="ttname"><a href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">SVF::NodeBS</a></div><div class="ttdeci">llvm::SparseBitVector NodeBS</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00088">SVFBasicTypes.h:88</a></div></div>
913
+ <div class="ttc" id="namespaceSVF_html_a740396763e377643790c8b803ab3e4ea"><div class="ttname"><a href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">SVF::NodeBS</a></div><div class="ttdeci">llvm::SparseBitVector NodeBS</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00092">SVFBasicTypes.h:92</a></div></div>
914
914
  <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a819ef18524ee9104b920d1a465c61da1"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a819ef18524ee9104b920d1a465c61da1">SVF::ForkJoinAnalysis::getDirectlyJoinedTid</a></div><div class="ttdeci">NodeBS &amp; getDirectlyJoinedTid(const CxtStmt &amp;cs)</div><div class="ttdoc">Get directly joined threadIDs based on a context-sensitive join site. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00301">MHP.h:301</a></div></div>
915
915
  <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>
916
916
  </div><!-- fragment -->
@@ -979,7 +979,7 @@ Private Attributes</h2></td></tr>
979
979
  <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a2c6ce7aa04c399746d89230be0e0f1ce"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">SVF::ForkJoinAnalysis::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00534">MHP.h:534</a></div></div>
980
980
  <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#l00174">TCT.h:174</a></div></div>
981
981
  <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#l00082">TCT.h:82</a></div></div>
982
- <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#l00074">BasicTypes.h:74</a></div></div>
982
+ <div class="ttc" id="namespaceSVF_html_a5faee14fa1dd41447bc73ac365fe33c1"><div class="ttname"><a href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a></div><div class="ttdeci">llvm::Function Function</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00073">BasicTypes.h:73</a></div></div>
983
983
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a3cb226930eeaf558575e09e5b65e0223"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a3cb226930eeaf558575e09e5b65e0223">SVF::SVFUtil::getFunExitBB</a></div><div class="ttdeci">const BasicBlock * getFunExitBB(const Function *fun)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00507">LLVMUtil.h:507</a></div></div>
984
984
  <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#l00277">TCT.h:277</a></div></div>
985
985
  </div><!-- fragment -->
@@ -1257,19 +1257,19 @@ Private Attributes</h2></td></tr>
1257
1257
 
1258
1258
  <p>Handle call. </p>
1259
1259
 
1260
- <p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#l00877">877</a> of file <a class="el" href="MHP_8cpp_source.html">MHP.cpp</a>.</p>
1261
- <div class="fragment"><div class="line"><a name="l00878"></a><span class="lineno"> 878</span>&#160;{</div><div class="line"><a name="l00879"></a><span class="lineno"> 879</span>&#160;</div><div class="line"><a name="l00880"></a><span class="lineno"> 880</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">CallInst</a>* call = SVFUtil::cast&lt;CallInst&gt;(cts.<a class="code" href="classSVF_1_1CxtStmt.html#a5e8c4b10eb5c3240d2e21a020ed834a6">getStmt</a>());</div><div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a542c6d5483bfc74fa58b45ad06b65960">CallStrCxt</a>&amp; curCxt = cts.<a class="code" href="classSVF_1_1CxtStmt.html#a3ce19b8f2de2e199ed4165dbe9d21f28">getContext</a>();</div><div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160; <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cbn = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a94d65f9e22a13772042b2af652cf5538">getCBN</a>(call);</div><div class="line"><a name="l00883"></a><span class="lineno"> 883</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8ad9b8cb0e6300b2ffc55244e53cece6">getTCG</a>()-&gt;hasCallGraphEdge(cbn))</div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span>&#160; {</div><div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160; <span class="keywordflow">for</span> (PTACallGraph::CallGraphEdgeSet::const_iterator cgIt = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8ad9b8cb0e6300b2ffc55244e53cece6">getTCG</a>()-&gt;getCallEdgeBegin(cbn),</div><div class="line"><a name="l00886"></a><span class="lineno"> 886</span>&#160; ecgIt = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8ad9b8cb0e6300b2ffc55244e53cece6">getTCG</a>()-&gt;getCallEdgeEnd(cbn); cgIt != ecgIt; ++cgIt)</div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span>&#160; {</div><div class="line"><a name="l00888"></a><span class="lineno"> 888</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svfcallee = (*cgIt)-&gt;getDstNode()-&gt;getFunction();</div><div class="line"><a name="l00889"></a><span class="lineno"> 889</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* callee = svfcallee-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>();</div><div class="line"><a name="l00890"></a><span class="lineno"> 890</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">isExtCall</a>(svfcallee))</div><div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00892"></a><span class="lineno"> 892</span>&#160; <a class="code" href="namespaceSVF.html#a542c6d5483bfc74fa58b45ad06b65960">CallStrCxt</a> newCxt = curCxt;</div><div class="line"><a name="l00893"></a><span class="lineno"> 893</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#aaf70954762aa86f835d799994726790e">pushCxt</a>(newCxt,call,callee);</div><div class="line"><a name="l00894"></a><span class="lineno"> 894</span>&#160; <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a> newCts(newCxt,&amp;(callee-&gt;getEntryBlock().front()));</div><div class="line"><a name="l00895"></a><span class="lineno"> 895</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ac483d3b0e9084c2033e177eda9ac9215">markCxtStmtFlag</a>(newCts,cts);</div><div class="line"><a name="l00896"></a><span class="lineno"> 896</span>&#160; }</div><div class="line"><a name="l00897"></a><span class="lineno"> 897</span>&#160; }</div><div class="line"><a name="l00898"></a><span class="lineno"> 898</span>&#160;}</div><div class="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#l00219">BasicTypes.h:219</a></div></div>
1262
- <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="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00136">BasicTypes.h:136</a></div></div>
1260
+ <p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#l00878">878</a> of file <a class="el" href="MHP_8cpp_source.html">MHP.cpp</a>.</p>
1261
+ <div class="fragment"><div class="line"><a name="l00879"></a><span class="lineno"> 879</span>&#160;{</div><div class="line"><a name="l00880"></a><span class="lineno"> 880</span>&#160;</div><div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">CallInst</a>* call = SVFUtil::cast&lt;CallInst&gt;(cts.<a class="code" href="classSVF_1_1CxtStmt.html#a5e8c4b10eb5c3240d2e21a020ed834a6">getStmt</a>());</div><div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a>&amp; curCxt = cts.<a class="code" href="classSVF_1_1CxtStmt.html#a3ce19b8f2de2e199ed4165dbe9d21f28">getContext</a>();</div><div class="line"><a name="l00883"></a><span class="lineno"> 883</span>&#160; <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cbn = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a94d65f9e22a13772042b2af652cf5538">getCBN</a>(call);</div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8ad9b8cb0e6300b2ffc55244e53cece6">getTCG</a>()-&gt;hasCallGraphEdge(cbn))</div><div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160; {</div><div class="line"><a name="l00886"></a><span class="lineno"> 886</span>&#160; <span class="keywordflow">for</span> (PTACallGraph::CallGraphEdgeSet::const_iterator cgIt = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8ad9b8cb0e6300b2ffc55244e53cece6">getTCG</a>()-&gt;getCallEdgeBegin(cbn),</div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span>&#160; ecgIt = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8ad9b8cb0e6300b2ffc55244e53cece6">getTCG</a>()-&gt;getCallEdgeEnd(cbn); cgIt != ecgIt; ++cgIt)</div><div class="line"><a name="l00888"></a><span class="lineno"> 888</span>&#160; {</div><div class="line"><a name="l00889"></a><span class="lineno"> 889</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svfcallee = (*cgIt)-&gt;getDstNode()-&gt;getFunction();</div><div class="line"><a name="l00890"></a><span class="lineno"> 890</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* callee = svfcallee-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>();</div><div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">isExtCall</a>(svfcallee))</div><div class="line"><a name="l00892"></a><span class="lineno"> 892</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00893"></a><span class="lineno"> 893</span>&#160; <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a> newCxt = curCxt;</div><div class="line"><a name="l00894"></a><span class="lineno"> 894</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#aaf70954762aa86f835d799994726790e">pushCxt</a>(newCxt,call,callee);</div><div class="line"><a name="l00895"></a><span class="lineno"> 895</span>&#160; <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a> newCts(newCxt,&amp;(callee-&gt;getEntryBlock().front()));</div><div class="line"><a name="l00896"></a><span class="lineno"> 896</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ac483d3b0e9084c2033e177eda9ac9215">markCxtStmtFlag</a>(newCts,cts);</div><div class="line"><a name="l00897"></a><span class="lineno"> 897</span>&#160; }</div><div class="line"><a name="l00898"></a><span class="lineno"> 898</span>&#160; }</div><div class="line"><a name="l00899"></a><span class="lineno"> 899</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00184">BasicTypes.h:184</a></div></div>
1262
+ <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="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00127">BasicTypes.h:127</a></div></div>
1263
1263
  <div class="ttc" id="classSVF_1_1CxtStmt_html_a5e8c4b10eb5c3240d2e21a020ed834a6"><div class="ttname"><a href="classSVF_1_1CxtStmt.html#a5e8c4b10eb5c3240d2e21a020ed834a6">SVF::CxtStmt::getStmt</a></div><div class="ttdeci">const Instruction * getStmt() const</div><div class="ttdoc">Return current statement. </div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00062">CxtStmt.h:62</a></div></div>
1264
- <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#l00074">BasicTypes.h:74</a></div></div>
1265
- <div class="ttc" id="namespaceSVF_html_a542c6d5483bfc74fa58b45ad06b65960"><div class="ttname"><a href="namespaceSVF.html#a542c6d5483bfc74fa58b45ad06b65960">SVF::CallStrCxt</a></div><div class="ttdeci">SmallVector16 CallStrCxt</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00127">SVFBasicTypes.h:127</a></div></div>
1264
+ <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#l00127">SVFBasicTypes.h:127</a></div></div>
1265
+ <div class="ttc" id="namespaceSVF_html_a5faee14fa1dd41447bc73ac365fe33c1"><div class="ttname"><a href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a></div><div class="ttdeci">llvm::Function Function</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00073">BasicTypes.h:73</a></div></div>
1266
1266
  <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_ac483d3b0e9084c2033e177eda9ac9215"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#ac483d3b0e9084c2033e177eda9ac9215">SVF::ForkJoinAnalysis::markCxtStmtFlag</a></div><div class="ttdeci">void markCxtStmtFlag(const CxtStmt &amp;tgr, ValDomain flag)</div><div class="ttdoc">Initialize TDAlive and TDDead flags. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00401">MHP.h:401</a></div></div>
1267
1267
  <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_aaf70954762aa86f835d799994726790e"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#aaf70954762aa86f835d799994726790e">SVF::ForkJoinAnalysis::pushCxt</a></div><div class="ttdeci">void pushCxt(CallStrCxt &amp;cxt, const Instruction *call, const Function *callee)</div><div class="ttdoc">Push calling context. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00458">MHP.h:458</a></div></div>
1268
1268
  <div class="ttc" id="classSVF_1_1CxtStmt_html"><div class="ttname"><a href="classSVF_1_1CxtStmt.html">SVF::CxtStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00041">CxtStmt.h:41</a></div></div>
1269
1269
  <div class="ttc" id="classSVF_1_1CxtStmt_html_a3ce19b8f2de2e199ed4165dbe9d21f28"><div class="ttname"><a href="classSVF_1_1CxtStmt.html#a3ce19b8f2de2e199ed4165dbe9d21f28">SVF::CxtStmt::getContext</a></div><div class="ttdeci">const CallStrCxt &amp; getContext() const</div><div class="ttdoc">Return current context. </div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00057">CxtStmt.h:57</a></div></div>
1270
1270
  <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a94d65f9e22a13772042b2af652cf5538"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a94d65f9e22a13772042b2af652cf5538">SVF::ForkJoinAnalysis::getCBN</a></div><div class="ttdeci">CallICFGNode * getCBN(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00383">MHP.h:383</a></div></div>
1271
1271
  <div class="ttc" id="classSVF_1_1CallICFGNode_html"><div class="ttname"><a href="classSVF_1_1CallICFGNode.html">SVF::CallICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00364">ICFGNode.h:364</a></div></div>
1272
- <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#l00235">BasicTypes.h:235</a></div></div>
1272
+ <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#l00200">BasicTypes.h:200</a></div></div>
1273
1273
  <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a8ad9b8cb0e6300b2ffc55244e53cece6"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a8ad9b8cb0e6300b2ffc55244e53cece6">SVF::ForkJoinAnalysis::getTCG</a></div><div class="ttdeci">ThreadCallGraph * getTCG() const</div><div class="ttdoc">ThreadCallGraph. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00493">MHP.h:493</a></div></div>
1274
1274
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a22ef185e767ff76c098e75126c885400"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">SVF::SVFUtil::isExtCall</a></div><div class="ttdeci">bool isExtCall(const SVFFunction *fun)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00065">LLVMUtil.h:65</a></div></div>
1275
1275
  </div><!-- fragment -->
@@ -1311,17 +1311,17 @@ Private Attributes</h2></td></tr>
1311
1311
 
1312
1312
  <p>Handle fork. </p>
1313
1313
 
1314
- <p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#l00791">791</a> of file <a class="el" href="MHP_8cpp_source.html">MHP.cpp</a>.</p>
1315
- <div class="fragment"><div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160;{</div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">CallInst</a>* call = SVFUtil::cast&lt;CallInst&gt;(cts.<a class="code" href="classSVF_1_1CxtStmt.html#a5e8c4b10eb5c3240d2e21a020ed834a6">getStmt</a>());</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a542c6d5483bfc74fa58b45ad06b65960">CallStrCxt</a>&amp; curCxt = cts.<a class="code" href="classSVF_1_1CxtStmt.html#a3ce19b8f2de2e199ed4165dbe9d21f28">getContext</a>();</div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160;</div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#aff32f240a03421937c2fc606359dca9b">isTDFork</a>(call));</div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160; <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cbn = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a94d65f9e22a13772042b2af652cf5538">getCBN</a>(call);</div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8ad9b8cb0e6300b2ffc55244e53cece6">getTCG</a>()-&gt;hasThreadForkEdge(cbn))</div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160; {</div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160; <span class="keywordflow">for</span> (ThreadCallGraph::ForkEdgeSet::const_iterator cgIt = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8ad9b8cb0e6300b2ffc55244e53cece6">getTCG</a>()-&gt;getForkEdgeBegin(cbn),</div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160; ecgIt = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8ad9b8cb0e6300b2ffc55244e53cece6">getTCG</a>()-&gt;getForkEdgeEnd(cbn); cgIt != ecgIt; ++cgIt)</div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160; {</div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* callee = (*cgIt)-&gt;getDstNode()-&gt;getFunction()-&gt;getLLVMFun();</div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160; <a class="code" href="namespaceSVF.html#a542c6d5483bfc74fa58b45ad06b65960">CallStrCxt</a> newCxt = curCxt;</div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#aaf70954762aa86f835d799994726790e">pushCxt</a>(newCxt,call,callee);</div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160; <a class="code" href="classSVF_1_1CxtThread.html">CxtThread</a> ct(newCxt,call);</div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a149114898b13e1430c8fbb60978ca4f5">getMarkedFlag</a>(cts)!=<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631a2abecc56b7d5c644f7e14c98d33d0a0a">TDAlive</a>)</div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a647ae6866bb37be850f0bdd5a7341188">addToHBPair</a>(rootTid,<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#a7b4ad0b052e1f8b6869733eef15f4e4d">getTCTNode</a>(ct)-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>());</div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a1505ba82206169f76ea239067797d6c2">addToHPPair</a>(rootTid,<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#a7b4ad0b052e1f8b6869733eef15f4e4d">getTCTNode</a>(ct)-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>());</div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160; }</div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160; }</div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#add09218cce8d8bd8dd9e73b2d26a5797">handleIntra</a>(cts);</div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160;}</div><div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a1505ba82206169f76ea239067797d6c2"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a1505ba82206169f76ea239067797d6c2">SVF::ForkJoinAnalysis::addToHPPair</a></div><div class="ttdeci">void addToHPPair(NodeID tid1, NodeID tid2)</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00506">MHP.h:506</a></div></div>
1314
+ <p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#l00792">792</a> of file <a class="el" href="MHP_8cpp_source.html">MHP.cpp</a>.</p>
1315
+ <div class="fragment"><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160;{</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">CallInst</a>* call = SVFUtil::cast&lt;CallInst&gt;(cts.<a class="code" href="classSVF_1_1CxtStmt.html#a5e8c4b10eb5c3240d2e21a020ed834a6">getStmt</a>());</div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a>&amp; curCxt = cts.<a class="code" href="classSVF_1_1CxtStmt.html#a3ce19b8f2de2e199ed4165dbe9d21f28">getContext</a>();</div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160;</div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#aff32f240a03421937c2fc606359dca9b">isTDFork</a>(call));</div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160; <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cbn = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a94d65f9e22a13772042b2af652cf5538">getCBN</a>(call);</div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8ad9b8cb0e6300b2ffc55244e53cece6">getTCG</a>()-&gt;hasThreadForkEdge(cbn))</div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160; {</div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160; <span class="keywordflow">for</span> (ThreadCallGraph::ForkEdgeSet::const_iterator cgIt = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8ad9b8cb0e6300b2ffc55244e53cece6">getTCG</a>()-&gt;getForkEdgeBegin(cbn),</div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160; ecgIt = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8ad9b8cb0e6300b2ffc55244e53cece6">getTCG</a>()-&gt;getForkEdgeEnd(cbn); cgIt != ecgIt; ++cgIt)</div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160; {</div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* callee = (*cgIt)-&gt;getDstNode()-&gt;getFunction()-&gt;getLLVMFun();</div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160; <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a> newCxt = curCxt;</div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#aaf70954762aa86f835d799994726790e">pushCxt</a>(newCxt,call,callee);</div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160; <a class="code" href="classSVF_1_1CxtThread.html">CxtThread</a> ct(newCxt,call);</div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a149114898b13e1430c8fbb60978ca4f5">getMarkedFlag</a>(cts)!=<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631a2abecc56b7d5c644f7e14c98d33d0a0a">TDAlive</a>)</div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a647ae6866bb37be850f0bdd5a7341188">addToHBPair</a>(rootTid,<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#a7b4ad0b052e1f8b6869733eef15f4e4d">getTCTNode</a>(ct)-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>());</div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a1505ba82206169f76ea239067797d6c2">addToHPPair</a>(rootTid,<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#a7b4ad0b052e1f8b6869733eef15f4e4d">getTCTNode</a>(ct)-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>());</div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160; }</div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160; }</div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#add09218cce8d8bd8dd9e73b2d26a5797">handleIntra</a>(cts);</div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160;}</div><div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a1505ba82206169f76ea239067797d6c2"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a1505ba82206169f76ea239067797d6c2">SVF::ForkJoinAnalysis::addToHPPair</a></div><div class="ttdeci">void addToHPPair(NodeID tid1, NodeID tid2)</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00506">MHP.h:506</a></div></div>
1316
1316
  <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a149114898b13e1430c8fbb60978ca4f5"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a149114898b13e1430c8fbb60978ca4f5">SVF::ForkJoinAnalysis::getMarkedFlag</a></div><div class="ttdeci">ValDomain getMarkedFlag(const CxtStmt &amp;cs)</div><div class="ttdoc">Mark thread flags for cxtStmt. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00389">MHP.h:389</a></div></div>
1317
1317
  <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a2c6ce7aa04c399746d89230be0e0f1ce"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">SVF::ForkJoinAnalysis::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00534">MHP.h:534</a></div></div>
1318
1318
  <div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
1319
1319
  <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>
1320
- <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="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00136">BasicTypes.h:136</a></div></div>
1320
+ <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="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00127">BasicTypes.h:127</a></div></div>
1321
1321
  <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#l00174">TCT.h:174</a></div></div>
1322
1322
  <div class="ttc" id="classSVF_1_1CxtStmt_html_a5e8c4b10eb5c3240d2e21a020ed834a6"><div class="ttname"><a href="classSVF_1_1CxtStmt.html#a5e8c4b10eb5c3240d2e21a020ed834a6">SVF::CxtStmt::getStmt</a></div><div class="ttdeci">const Instruction * getStmt() const</div><div class="ttdoc">Return current statement. </div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00062">CxtStmt.h:62</a></div></div>
1323
- <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#l00074">BasicTypes.h:74</a></div></div>
1324
- <div class="ttc" id="namespaceSVF_html_a542c6d5483bfc74fa58b45ad06b65960"><div class="ttname"><a href="namespaceSVF.html#a542c6d5483bfc74fa58b45ad06b65960">SVF::CallStrCxt</a></div><div class="ttdeci">SmallVector16 CallStrCxt</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00127">SVFBasicTypes.h:127</a></div></div>
1323
+ <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#l00127">SVFBasicTypes.h:127</a></div></div>
1324
+ <div class="ttc" id="namespaceSVF_html_a5faee14fa1dd41447bc73ac365fe33c1"><div class="ttname"><a href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a></div><div class="ttdeci">llvm::Function Function</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00073">BasicTypes.h:73</a></div></div>
1325
1325
  <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_aaf70954762aa86f835d799994726790e"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#aaf70954762aa86f835d799994726790e">SVF::ForkJoinAnalysis::pushCxt</a></div><div class="ttdeci">void pushCxt(CallStrCxt &amp;cxt, const Instruction *call, const Function *callee)</div><div class="ttdoc">Push calling context. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00458">MHP.h:458</a></div></div>
1326
1326
  <div class="ttc" id="classSVF_1_1CxtStmt_html_a3ce19b8f2de2e199ed4165dbe9d21f28"><div class="ttname"><a href="classSVF_1_1CxtStmt.html#a3ce19b8f2de2e199ed4165dbe9d21f28">SVF::CxtStmt::getContext</a></div><div class="ttdeci">const CallStrCxt &amp; getContext() const</div><div class="ttdoc">Return current context. </div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00057">CxtStmt.h:57</a></div></div>
1327
1327
  <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a94d65f9e22a13772042b2af652cf5538"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a94d65f9e22a13772042b2af652cf5538">SVF::ForkJoinAnalysis::getCBN</a></div><div class="ttdeci">CallICFGNode * getCBN(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00383">MHP.h:383</a></div></div>
@@ -1331,7 +1331,7 @@ Private Attributes</h2></td></tr>
1331
1331
  <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a647ae6866bb37be850f0bdd5a7341188"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a647ae6866bb37be850f0bdd5a7341188">SVF::ForkJoinAnalysis::addToHBPair</a></div><div class="ttdeci">void addToHBPair(NodeID tid1, NodeID tid2)</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00511">MHP.h:511</a></div></div>
1332
1332
  <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a8d40e687caf8999369621ed385dfc631a2abecc56b7d5c644f7e14c98d33d0a0a"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631a2abecc56b7d5c644f7e14c98d33d0a0a">SVF::ForkJoinAnalysis::TDAlive</a></div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00277">MHP.h:277</a></div></div>
1333
1333
  <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a8ad9b8cb0e6300b2ffc55244e53cece6"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a8ad9b8cb0e6300b2ffc55244e53cece6">SVF::ForkJoinAnalysis::getTCG</a></div><div class="ttdeci">ThreadCallGraph * getTCG() const</div><div class="ttdoc">ThreadCallGraph. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00493">MHP.h:493</a></div></div>
1334
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_add09218cce8d8bd8dd9e73b2d26a5797"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#add09218cce8d8bd8dd9e73b2d26a5797">SVF::ForkJoinAnalysis::handleIntra</a></div><div class="ttdeci">void handleIntra(const CxtStmt &amp;cts)</div><div class="ttdoc">Handle intra. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l00947">MHP.cpp:947</a></div></div>
1334
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_add09218cce8d8bd8dd9e73b2d26a5797"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#add09218cce8d8bd8dd9e73b2d26a5797">SVF::ForkJoinAnalysis::handleIntra</a></div><div class="ttdeci">void handleIntra(const CxtStmt &amp;cts)</div><div class="ttdoc">Handle intra. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l00948">MHP.cpp:948</a></div></div>
1335
1335
  </div><!-- fragment -->
1336
1336
  </div>
1337
1337
  </div>
@@ -1361,12 +1361,12 @@ Private Attributes</h2></td></tr>
1361
1361
 
1362
1362
  <p>Handle intra. </p>
1363
1363
 
1364
- <p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#l00947">947</a> of file <a class="el" href="MHP_8cpp_source.html">MHP.cpp</a>.</p>
1365
- <div class="fragment"><div class="line"><a name="l00948"></a><span class="lineno"> 948</span>&#160;{</div><div class="line"><a name="l00949"></a><span class="lineno"> 949</span>&#160;</div><div class="line"><a name="l00950"></a><span class="lineno"> 950</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* curInst = cts.<a class="code" href="classSVF_1_1CxtStmt.html#a5e8c4b10eb5c3240d2e21a020ed834a6">getStmt</a>();</div><div class="line"><a name="l00951"></a><span class="lineno"> 951</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a542c6d5483bfc74fa58b45ad06b65960">CallStrCxt</a>&amp; curCxt = cts.<a class="code" href="classSVF_1_1CxtStmt.html#a3ce19b8f2de2e199ed4165dbe9d21f28">getContext</a>();</div><div class="line"><a name="l00952"></a><span class="lineno"> 952</span>&#160;</div><div class="line"><a name="l00953"></a><span class="lineno"> 953</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a613d763731058899e6819acdb2d7315f">InstVec</a> nextInsts;</div><div class="line"><a name="l00954"></a><span class="lineno"> 954</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a799e14292e16b9fb322cab07f3ff5593">getNextInsts</a>(curInst,nextInsts);</div><div class="line"><a name="l00955"></a><span class="lineno"> 955</span>&#160; <span class="keywordflow">for</span>(InstVec::const_iterator nit = nextInsts.begin(), enit = nextInsts.end(); nit!=enit; ++nit)</div><div class="line"><a name="l00956"></a><span class="lineno"> 956</span>&#160; {</div><div class="line"><a name="l00957"></a><span class="lineno"> 957</span>&#160; <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a> newCts(curCxt,*nit);</div><div class="line"><a name="l00958"></a><span class="lineno"> 958</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ac483d3b0e9084c2033e177eda9ac9215">markCxtStmtFlag</a>(newCts,cts);</div><div class="line"><a name="l00959"></a><span class="lineno"> 959</span>&#160; }</div><div class="line"><a name="l00960"></a><span class="lineno"> 960</span>&#160;}</div><div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a613d763731058899e6819acdb2d7315f"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a613d763731058899e6819acdb2d7315f">SVF::ForkJoinAnalysis::InstVec</a></div><div class="ttdeci">TCT::InstVec InstVec</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00281">MHP.h:281</a></div></div>
1364
+ <p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#l00948">948</a> of file <a class="el" href="MHP_8cpp_source.html">MHP.cpp</a>.</p>
1365
+ <div class="fragment"><div class="line"><a name="l00949"></a><span class="lineno"> 949</span>&#160;{</div><div class="line"><a name="l00950"></a><span class="lineno"> 950</span>&#160;</div><div class="line"><a name="l00951"></a><span class="lineno"> 951</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* curInst = cts.<a class="code" href="classSVF_1_1CxtStmt.html#a5e8c4b10eb5c3240d2e21a020ed834a6">getStmt</a>();</div><div class="line"><a name="l00952"></a><span class="lineno"> 952</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a>&amp; curCxt = cts.<a class="code" href="classSVF_1_1CxtStmt.html#a3ce19b8f2de2e199ed4165dbe9d21f28">getContext</a>();</div><div class="line"><a name="l00953"></a><span class="lineno"> 953</span>&#160;</div><div class="line"><a name="l00954"></a><span class="lineno"> 954</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a613d763731058899e6819acdb2d7315f">InstVec</a> nextInsts;</div><div class="line"><a name="l00955"></a><span class="lineno"> 955</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a799e14292e16b9fb322cab07f3ff5593">getNextInsts</a>(curInst,nextInsts);</div><div class="line"><a name="l00956"></a><span class="lineno"> 956</span>&#160; <span class="keywordflow">for</span>(InstVec::const_iterator nit = nextInsts.begin(), enit = nextInsts.end(); nit!=enit; ++nit)</div><div class="line"><a name="l00957"></a><span class="lineno"> 957</span>&#160; {</div><div class="line"><a name="l00958"></a><span class="lineno"> 958</span>&#160; <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a> newCts(curCxt,*nit);</div><div class="line"><a name="l00959"></a><span class="lineno"> 959</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ac483d3b0e9084c2033e177eda9ac9215">markCxtStmtFlag</a>(newCts,cts);</div><div class="line"><a name="l00960"></a><span class="lineno"> 960</span>&#160; }</div><div class="line"><a name="l00961"></a><span class="lineno"> 961</span>&#160;}</div><div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a613d763731058899e6819acdb2d7315f"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a613d763731058899e6819acdb2d7315f">SVF::ForkJoinAnalysis::InstVec</a></div><div class="ttdeci">TCT::InstVec InstVec</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00281">MHP.h:281</a></div></div>
1366
1366
  <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a799e14292e16b9fb322cab07f3ff5593"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a799e14292e16b9fb322cab07f3ff5593">SVF::ForkJoinAnalysis::getNextInsts</a></div><div class="ttdeci">void getNextInsts(const Instruction *inst, InstVec &amp;instSet)</div><div class="ttdoc">Get the next instructions following control flow. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00453">MHP.h:453</a></div></div>
1367
1367
  <div class="ttc" id="classSVF_1_1CxtStmt_html_a5e8c4b10eb5c3240d2e21a020ed834a6"><div class="ttname"><a href="classSVF_1_1CxtStmt.html#a5e8c4b10eb5c3240d2e21a020ed834a6">SVF::CxtStmt::getStmt</a></div><div class="ttdeci">const Instruction * getStmt() const</div><div class="ttdoc">Return current statement. </div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00062">CxtStmt.h:62</a></div></div>
1368
- <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#l00077">BasicTypes.h:77</a></div></div>
1369
- <div class="ttc" id="namespaceSVF_html_a542c6d5483bfc74fa58b45ad06b65960"><div class="ttname"><a href="namespaceSVF.html#a542c6d5483bfc74fa58b45ad06b65960">SVF::CallStrCxt</a></div><div class="ttdeci">SmallVector16 CallStrCxt</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00127">SVFBasicTypes.h:127</a></div></div>
1368
+ <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#l00127">SVFBasicTypes.h:127</a></div></div>
1369
+ <div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00076">BasicTypes.h:76</a></div></div>
1370
1370
  <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_ac483d3b0e9084c2033e177eda9ac9215"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#ac483d3b0e9084c2033e177eda9ac9215">SVF::ForkJoinAnalysis::markCxtStmtFlag</a></div><div class="ttdeci">void markCxtStmtFlag(const CxtStmt &amp;tgr, ValDomain flag)</div><div class="ttdoc">Initialize TDAlive and TDDead flags. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00401">MHP.h:401</a></div></div>
1371
1371
  <div class="ttc" id="classSVF_1_1CxtStmt_html"><div class="ttname"><a href="classSVF_1_1CxtStmt.html">SVF::CxtStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00041">CxtStmt.h:41</a></div></div>
1372
1372
  <div class="ttc" id="classSVF_1_1CxtStmt_html_a3ce19b8f2de2e199ed4165dbe9d21f28"><div class="ttname"><a href="classSVF_1_1CxtStmt.html#a3ce19b8f2de2e199ed4165dbe9d21f28">SVF::CxtStmt::getContext</a></div><div class="ttdeci">const CallStrCxt &amp; getContext() const</div><div class="ttdoc">Return current context. </div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00057">CxtStmt.h:57</a></div></div>
@@ -1410,22 +1410,22 @@ Private Attributes</h2></td></tr>
1410
1410
  <p>Handle join. </p>
1411
1411
  <p>for the join site in a loop loop which does not join the current thread we process the loop exit </p>
1412
1412
 
1413
- <p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#l00817">817</a> of file <a class="el" href="MHP_8cpp_source.html">MHP.cpp</a>.</p>
1414
- <div class="fragment"><div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160;{</div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">CallInst</a>* call = SVFUtil::cast&lt;CallInst&gt;(cts.<a class="code" href="classSVF_1_1CxtStmt.html#a5e8c4b10eb5c3240d2e21a020ed834a6">getStmt</a>());</div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a542c6d5483bfc74fa58b45ad06b65960">CallStrCxt</a>&amp; curCxt = cts.<a class="code" href="classSVF_1_1CxtStmt.html#a3ce19b8f2de2e199ed4165dbe9d21f28">getContext</a>();</div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160;</div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#aac722a42dc6e03e771a7a80de5f8ec94">isTDJoin</a>(call));</div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160; <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cbn = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a94d65f9e22a13772042b2af652cf5538">getCBN</a>(call);</div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8ad9b8cb0e6300b2ffc55244e53cece6">getTCG</a>()-&gt;hasCallGraphEdge(cbn))</div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160; {</div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* forkSite = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#a7b4ad0b052e1f8b6869733eef15f4e4d">getTCTNode</a>(rootTid)-&gt;<a class="code" href="classSVF_1_1TCTNode.html#a21591b19f6a9267151c31178f9543ee6">getCxtThread</a>().<a class="code" href="classSVF_1_1CxtThread.html#a066ba29a83edc1042139641ca088b038">getThread</a>();</div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* joinSite = cts.<a class="code" href="classSVF_1_1CxtStmt.html#a5e8c4b10eb5c3240d2e21a020ed834a6">getStmt</a>();</div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160;</div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a3655131add43346a175576b023e32509">isAliasedForkJoin</a>(forkSite, joinSite))</div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160; {</div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#abf85e29310b2e4df8925d00a5c081314">Loop</a>* joinLoop = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a3449439792a54c847c67b3041094db49">getJoinLoop</a>(joinSite))</div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; {</div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; <a class="code" href="namespaceSVF.html#ad09d8882474ef59b50d1c6a6d3ba0b59">SmallBBVector</a> exitbbs;</div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160; joinLoop-&gt;getExitBlocks(exitbbs);</div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160; <span class="keywordflow">while</span>(!exitbbs.empty())</div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160; {</div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160; <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* eb = exitbbs.pop_back_val();</div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160; <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a> newCts(curCxt,&amp;(eb-&gt;front()));</div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8aa2d4c83981007108b152d05e9c51fe">addDirectlyJoinTID</a>(cts,rootTid);</div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a4d073da3e5266964dad7422033013219">isSameSCEV</a>(forkSite,joinSite))</div><div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160; {</div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ac483d3b0e9084c2033e177eda9ac9215">markCxtStmtFlag</a>(newCts,<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631ad5af2a561c196e33d88fc63363d0d8f4">TDDead</a>);</div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ab302cceb28998623fed622560e50a740">addSymmetricLoopJoin</a>(cts,joinLoop);</div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160; }</div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ac483d3b0e9084c2033e177eda9ac9215">markCxtStmtFlag</a>(cts,<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631a2abecc56b7d5c644f7e14c98d33d0a0a">TDAlive</a>);</div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160; }</div><div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160; }</div><div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160; {</div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ac483d3b0e9084c2033e177eda9ac9215">markCxtStmtFlag</a>(cts,<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631ad5af2a561c196e33d88fc63363d0d8f4">TDDead</a>);</div><div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8aa2d4c83981007108b152d05e9c51fe">addDirectlyJoinTID</a>(cts,rootTid);</div><div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>,<a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\n\t match join site &quot;</span> &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">SVFUtil::value2String</a>(call) &lt;&lt; <span class="stringliteral">&quot;for thread &quot;</span> &lt;&lt; rootTid &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160; }</div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160; }</div><div class="line"><a name="l00858"></a><span class="lineno"> 858</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00859"></a><span class="lineno"> 859</span>&#160; {</div><div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#abf85e29310b2e4df8925d00a5c081314">Loop</a>* joinLoop = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a3449439792a54c847c67b3041094db49">getJoinLoop</a>(joinSite))</div><div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160; {</div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160; <a class="code" href="namespaceSVF.html#ad09d8882474ef59b50d1c6a6d3ba0b59">SmallBBVector</a> exitbbs;</div><div class="line"><a name="l00863"></a><span class="lineno"> 863</span>&#160; joinLoop-&gt;getExitBlocks(exitbbs);</div><div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160; <span class="keywordflow">while</span>(!exitbbs.empty())</div><div class="line"><a name="l00865"></a><span class="lineno"> 865</span>&#160; {</div><div class="line"><a name="l00866"></a><span class="lineno"> 866</span>&#160; <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* eb = exitbbs.pop_back_val();</div><div class="line"><a name="l00867"></a><span class="lineno"> 867</span>&#160; <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a> newCts(curCxt,&amp;(eb-&gt;front()));</div><div class="line"><a name="l00868"></a><span class="lineno"> 868</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ac483d3b0e9084c2033e177eda9ac9215">markCxtStmtFlag</a>(newCts,cts);</div><div class="line"><a name="l00869"></a><span class="lineno"> 869</span>&#160; }</div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span>&#160; }</div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160; }</div><div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160; }</div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#add09218cce8d8bd8dd9e73b2d26a5797">handleIntra</a>(cts);</div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160;}</div><div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a4d073da3e5266964dad7422033013219"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a4d073da3e5266964dad7422033013219">SVF::ForkJoinAnalysis::isSameSCEV</a></div><div class="ttdeci">bool isSameSCEV(const Instruction *forkSite, const Instruction *joinSite)</div><div class="ttdoc">Return true if the fork and join have the same SCEV. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l01042">MHP.cpp:1042</a></div></div>
1415
- <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#l00075">BasicTypes.h:75</a></div></div>
1413
+ <p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#l00818">818</a> of file <a class="el" href="MHP_8cpp_source.html">MHP.cpp</a>.</p>
1414
+ <div class="fragment"><div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160;{</div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">CallInst</a>* call = SVFUtil::cast&lt;CallInst&gt;(cts.<a class="code" href="classSVF_1_1CxtStmt.html#a5e8c4b10eb5c3240d2e21a020ed834a6">getStmt</a>());</div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a>&amp; curCxt = cts.<a class="code" href="classSVF_1_1CxtStmt.html#a3ce19b8f2de2e199ed4165dbe9d21f28">getContext</a>();</div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160;</div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#aac722a42dc6e03e771a7a80de5f8ec94">isTDJoin</a>(call));</div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160; <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cbn = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a94d65f9e22a13772042b2af652cf5538">getCBN</a>(call);</div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8ad9b8cb0e6300b2ffc55244e53cece6">getTCG</a>()-&gt;hasCallGraphEdge(cbn))</div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160; {</div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* forkSite = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#a7b4ad0b052e1f8b6869733eef15f4e4d">getTCTNode</a>(rootTid)-&gt;<a class="code" href="classSVF_1_1TCTNode.html#a21591b19f6a9267151c31178f9543ee6">getCxtThread</a>().<a class="code" href="classSVF_1_1CxtThread.html#a066ba29a83edc1042139641ca088b038">getThread</a>();</div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* joinSite = cts.<a class="code" href="classSVF_1_1CxtStmt.html#a5e8c4b10eb5c3240d2e21a020ed834a6">getStmt</a>();</div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160;</div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a3655131add43346a175576b023e32509">isAliasedForkJoin</a>(forkSite, joinSite))</div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; {</div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#abf85e29310b2e4df8925d00a5c081314">Loop</a>* joinLoop = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a3449439792a54c847c67b3041094db49">getJoinLoop</a>(joinSite))</div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; {</div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160; <a class="code" href="namespaceSVF.html#a02be4933b76c2baa7fdbe8b290e12bb3">SmallBBVector</a> exitbbs;</div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160; joinLoop-&gt;getExitBlocks(exitbbs);</div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160; <span class="keywordflow">while</span>(!exitbbs.empty())</div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160; {</div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160; <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* eb = exitbbs.pop_back_val();</div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160; <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a> newCts(curCxt,&amp;(eb-&gt;front()));</div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8aa2d4c83981007108b152d05e9c51fe">addDirectlyJoinTID</a>(cts,rootTid);</div><div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a4d073da3e5266964dad7422033013219">isSameSCEV</a>(forkSite,joinSite))</div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160; {</div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ac483d3b0e9084c2033e177eda9ac9215">markCxtStmtFlag</a>(newCts,<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631ad5af2a561c196e33d88fc63363d0d8f4">TDDead</a>);</div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ab302cceb28998623fed622560e50a740">addSymmetricLoopJoin</a>(cts,joinLoop);</div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160; }</div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ac483d3b0e9084c2033e177eda9ac9215">markCxtStmtFlag</a>(cts,<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631a2abecc56b7d5c644f7e14c98d33d0a0a">TDAlive</a>);</div><div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160; }</div><div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160; }</div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160; {</div><div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ac483d3b0e9084c2033e177eda9ac9215">markCxtStmtFlag</a>(cts,<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631ad5af2a561c196e33d88fc63363d0d8f4">TDDead</a>);</div><div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8aa2d4c83981007108b152d05e9c51fe">addDirectlyJoinTID</a>(cts,rootTid);</div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>,<a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\n\t match join site &quot;</span> &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">SVFUtil::value2String</a>(call) &lt;&lt; <span class="stringliteral">&quot;for thread &quot;</span> &lt;&lt; rootTid &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160; }</div><div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160; }</div><div class="line"><a name="l00859"></a><span class="lineno"> 859</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160; {</div><div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#abf85e29310b2e4df8925d00a5c081314">Loop</a>* joinLoop = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a3449439792a54c847c67b3041094db49">getJoinLoop</a>(joinSite))</div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160; {</div><div class="line"><a name="l00863"></a><span class="lineno"> 863</span>&#160; <a class="code" href="namespaceSVF.html#a02be4933b76c2baa7fdbe8b290e12bb3">SmallBBVector</a> exitbbs;</div><div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160; joinLoop-&gt;getExitBlocks(exitbbs);</div><div class="line"><a name="l00865"></a><span class="lineno"> 865</span>&#160; <span class="keywordflow">while</span>(!exitbbs.empty())</div><div class="line"><a name="l00866"></a><span class="lineno"> 866</span>&#160; {</div><div class="line"><a name="l00867"></a><span class="lineno"> 867</span>&#160; <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* eb = exitbbs.pop_back_val();</div><div class="line"><a name="l00868"></a><span class="lineno"> 868</span>&#160; <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a> newCts(curCxt,&amp;(eb-&gt;front()));</div><div class="line"><a name="l00869"></a><span class="lineno"> 869</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ac483d3b0e9084c2033e177eda9ac9215">markCxtStmtFlag</a>(newCts,cts);</div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span>&#160; }</div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160; }</div><div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160; }</div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span>&#160; }</div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#add09218cce8d8bd8dd9e73b2d26a5797">handleIntra</a>(cts);</div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160;}</div><div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a4d073da3e5266964dad7422033013219"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a4d073da3e5266964dad7422033013219">SVF::ForkJoinAnalysis::isSameSCEV</a></div><div class="ttdeci">bool isSameSCEV(const Instruction *forkSite, const Instruction *joinSite)</div><div class="ttdoc">Return true if the fork and join have the same SCEV. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l01043">MHP.cpp:1043</a></div></div>
1415
+ <div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00074">BasicTypes.h:74</a></div></div>
1416
1416
  <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#l00171">SVFBasicTypes.h:171</a></div></div>
1417
1417
  <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a2c6ce7aa04c399746d89230be0e0f1ce"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">SVF::ForkJoinAnalysis::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00534">MHP.h:534</a></div></div>
1418
1418
  <div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
1419
+ <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#l00115">SVFBasicTypes.h:115</a></div></div>
1419
1420
  <div class="ttc" id="classSVF_1_1CxtThread_html_a066ba29a83edc1042139641ca088b038"><div class="ttname"><a href="classSVF_1_1CxtThread.html#a066ba29a83edc1042139641ca088b038">SVF::CxtThread::getThread</a></div><div class="ttdeci">const CallInst * getThread() const</div><div class="ttdoc">Return forksite. </div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00210">CxtStmt.h:210</a></div></div>
1420
- <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="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00136">BasicTypes.h:136</a></div></div>
1421
+ <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="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00127">BasicTypes.h:127</a></div></div>
1421
1422
  <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#l00174">TCT.h:174</a></div></div>
1422
1423
  <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#l00082">TCT.h:82</a></div></div>
1423
1424
  <div class="ttc" id="classSVF_1_1CxtStmt_html_a5e8c4b10eb5c3240d2e21a020ed834a6"><div class="ttname"><a href="classSVF_1_1CxtStmt.html#a5e8c4b10eb5c3240d2e21a020ed834a6">SVF::CxtStmt::getStmt</a></div><div class="ttdeci">const Instruction * getStmt() const</div><div class="ttdoc">Return current statement. </div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00062">CxtStmt.h:62</a></div></div>
1424
- <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#l00077">BasicTypes.h:77</a></div></div>
1425
- <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#l00085">BasicTypes.h:85</a></div></div>
1426
- <div class="ttc" id="namespaceSVF_html_ad09d8882474ef59b50d1c6a6d3ba0b59"><div class="ttname"><a href="namespaceSVF.html#ad09d8882474ef59b50d1c6a6d3ba0b59">SVF::SmallBBVector</a></div><div class="ttdeci">llvm::SmallVector&lt; BasicBlock *, 8 &gt; SmallBBVector</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00110">BasicTypes.h:110</a></div></div>
1425
+ <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#l00127">SVFBasicTypes.h:127</a></div></div>
1426
+ <div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00076">BasicTypes.h:76</a></div></div>
1427
+ <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#l00084">BasicTypes.h:84</a></div></div>
1427
1428
  <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a8aa2d4c83981007108b152d05e9c51fe"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a8aa2d4c83981007108b152d05e9c51fe">SVF::ForkJoinAnalysis::addDirectlyJoinTID</a></div><div class="ttdeci">void addDirectlyJoinTID(const CxtStmt &amp;cs, NodeID tid)</div><div class="ttdoc">maps a context-sensitive join site to a thread id </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00498">MHP.h:498</a></div></div>
1428
- <div class="ttc" id="namespaceSVF_html_a542c6d5483bfc74fa58b45ad06b65960"><div class="ttname"><a href="namespaceSVF.html#a542c6d5483bfc74fa58b45ad06b65960">SVF::CallStrCxt</a></div><div class="ttdeci">SmallVector16 CallStrCxt</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00127">SVFBasicTypes.h:127</a></div></div>
1429
1429
  <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a3449439792a54c847c67b3041094db49"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a3449439792a54c847c67b3041094db49">SVF::ForkJoinAnalysis::getJoinLoop</a></div><div class="ttdeci">const Loop * getJoinLoop(const Instruction *inst)</div><div class="ttdoc">Get loop for join site. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00345">MHP.h:345</a></div></div>
1430
1430
  <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_ac483d3b0e9084c2033e177eda9ac9215"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#ac483d3b0e9084c2033e177eda9ac9215">SVF::ForkJoinAnalysis::markCxtStmtFlag</a></div><div class="ttdeci">void markCxtStmtFlag(const CxtStmt &amp;tgr, ValDomain flag)</div><div class="ttdoc">Initialize TDAlive and TDDead flags. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00401">MHP.h:401</a></div></div>
1431
1431
  <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a3655131add43346a175576b023e32509"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a3655131add43346a175576b023e32509">SVF::ForkJoinAnalysis::isAliasedForkJoin</a></div><div class="ttdeci">bool isAliasedForkJoin(const Instruction *forkSite, const Instruction *joinSite)</div><div class="ttdoc">Whether it is a matched fork join pair. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00378">MHP.h:378</a></div></div>
@@ -1441,7 +1441,7 @@ Private Attributes</h2></td></tr>
1441
1441
  <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a8d40e687caf8999369621ed385dfc631a2abecc56b7d5c644f7e14c98d33d0a0a"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a8d40e687caf8999369621ed385dfc631a2abecc56b7d5c644f7e14c98d33d0a0a">SVF::ForkJoinAnalysis::TDAlive</a></div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00277">MHP.h:277</a></div></div>
1442
1442
  <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a8ad9b8cb0e6300b2ffc55244e53cece6"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a8ad9b8cb0e6300b2ffc55244e53cece6">SVF::ForkJoinAnalysis::getTCG</a></div><div class="ttdeci">ThreadCallGraph * getTCG() const</div><div class="ttdoc">ThreadCallGraph. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00493">MHP.h:493</a></div></div>
1443
1443
  <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#l00151">SVFBasicTypes.h:151</a></div></div>
1444
- <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_add09218cce8d8bd8dd9e73b2d26a5797"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#add09218cce8d8bd8dd9e73b2d26a5797">SVF::ForkJoinAnalysis::handleIntra</a></div><div class="ttdeci">void handleIntra(const CxtStmt &amp;cts)</div><div class="ttdoc">Handle intra. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l00947">MHP.cpp:947</a></div></div>
1444
+ <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_add09218cce8d8bd8dd9e73b2d26a5797"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#add09218cce8d8bd8dd9e73b2d26a5797">SVF::ForkJoinAnalysis::handleIntra</a></div><div class="ttdeci">void handleIntra(const CxtStmt &amp;cts)</div><div class="ttdoc">Handle intra. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l00948">MHP.cpp:948</a></div></div>
1445
1445
  </div><!-- fragment -->
1446
1446
  </div>
1447
1447
  </div>
@@ -1471,24 +1471,24 @@ Private Attributes</h2></td></tr>
1471
1471
 
1472
1472
  <p>Handle return. </p>
1473
1473
 
1474
- <p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#l00901">901</a> of file <a class="el" href="MHP_8cpp_source.html">MHP.cpp</a>.</p>
1475
- <div class="fragment"><div class="line"><a name="l00902"></a><span class="lineno"> 902</span>&#160;{</div><div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160;</div><div class="line"><a name="l00904"></a><span class="lineno"> 904</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* curInst = cts.<a class="code" href="classSVF_1_1CxtStmt.html#a5e8c4b10eb5c3240d2e21a020ed834a6">getStmt</a>();</div><div class="line"><a name="l00905"></a><span class="lineno"> 905</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a542c6d5483bfc74fa58b45ad06b65960">CallStrCxt</a>&amp; curCxt = cts.<a class="code" href="classSVF_1_1CxtStmt.html#a3ce19b8f2de2e199ed4165dbe9d21f28">getContext</a>();</div><div class="line"><a name="l00906"></a><span class="lineno"> 906</span>&#160;</div><div class="line"><a name="l00907"></a><span class="lineno"> 907</span>&#160; <a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a>* curFunNode = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8ad9b8cb0e6300b2ffc55244e53cece6">getTCG</a>()-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">getCallGraphNode</a>(<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#a21bcc063a406eb8650df42cf5ced68c9">getSVFFun</a>(curInst-&gt;getParent()-&gt;getParent()));</div><div class="line"><a name="l00908"></a><span class="lineno"> 908</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1PTACallGraphNode.html#adf17f5699c9f40ffc8837e813e3af3ec">PTACallGraphNode::const_iterator</a> it = curFunNode-&gt;<a class="code" href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">getInEdges</a>().begin(), eit = curFunNode-&gt;<a class="code" href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">getInEdges</a>().end(); it!=eit; ++it)</div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span>&#160; {</div><div class="line"><a name="l00910"></a><span class="lineno"> 910</span>&#160; <a class="code" href="classSVF_1_1PTACallGraphEdge.html">PTACallGraphEdge</a>* edge = *it;</div><div class="line"><a name="l00911"></a><span class="lineno"> 911</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;ThreadForkEdge&gt;(edge) || SVFUtil::isa&lt;ThreadJoinEdge&gt;(edge))</div><div class="line"><a name="l00912"></a><span class="lineno"> 912</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00913"></a><span class="lineno"> 913</span>&#160; <span class="keywordflow">for</span>(PTACallGraphEdge::CallInstSet::const_iterator cit = (edge)-&gt;directCallsBegin(),</div><div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160; ecit = (edge)-&gt;directCallsEnd(); cit!=ecit; ++cit)</div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160; {</div><div class="line"><a name="l00916"></a><span class="lineno"> 916</span>&#160; <a class="code" href="namespaceSVF.html#a542c6d5483bfc74fa58b45ad06b65960">CallStrCxt</a> newCxt = curCxt;</div><div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#aea9ef584ce6c7129bcd1d5ecda2f1f74">matchCxt</a>(newCxt,(*cit)-&gt;getCallSite(),curFunNode-&gt;<a class="code" href="classSVF_1_1PTACallGraphNode.html#a959445c97605953fbdebbbd999437a09">getFunction</a>()-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>()))</div><div class="line"><a name="l00918"></a><span class="lineno"> 918</span>&#160; {</div><div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a613d763731058899e6819acdb2d7315f">InstVec</a> nextInsts;</div><div class="line"><a name="l00920"></a><span class="lineno"> 920</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a799e14292e16b9fb322cab07f3ff5593">getNextInsts</a>((*cit)-&gt;getCallSite(),nextInsts);</div><div class="line"><a name="l00921"></a><span class="lineno"> 921</span>&#160; <span class="keywordflow">for</span>(InstVec::const_iterator nit = nextInsts.begin(), enit = nextInsts.end(); nit!=enit; ++nit)</div><div class="line"><a name="l00922"></a><span class="lineno"> 922</span>&#160; {</div><div class="line"><a name="l00923"></a><span class="lineno"> 923</span>&#160; <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a> newCts(newCxt,*nit);</div><div class="line"><a name="l00924"></a><span class="lineno"> 924</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ac483d3b0e9084c2033e177eda9ac9215">markCxtStmtFlag</a>(newCts,cts);</div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span>&#160; }</div><div class="line"><a name="l00926"></a><span class="lineno"> 926</span>&#160; }</div><div class="line"><a name="l00927"></a><span class="lineno"> 927</span>&#160; }</div><div class="line"><a name="l00928"></a><span class="lineno"> 928</span>&#160; <span class="keywordflow">for</span>(PTACallGraphEdge::CallInstSet::const_iterator cit = (edge)-&gt;indirectCallsBegin(),</div><div class="line"><a name="l00929"></a><span class="lineno"> 929</span>&#160; ecit = (edge)-&gt;indirectCallsEnd(); cit!=ecit; ++cit)</div><div class="line"><a name="l00930"></a><span class="lineno"> 930</span>&#160; {</div><div class="line"><a name="l00931"></a><span class="lineno"> 931</span>&#160; <a class="code" href="namespaceSVF.html#a542c6d5483bfc74fa58b45ad06b65960">CallStrCxt</a> newCxt = curCxt;</div><div class="line"><a name="l00932"></a><span class="lineno"> 932</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#aea9ef584ce6c7129bcd1d5ecda2f1f74">matchCxt</a>(newCxt,(*cit)-&gt;getCallSite(),curFunNode-&gt;<a class="code" href="classSVF_1_1PTACallGraphNode.html#a959445c97605953fbdebbbd999437a09">getFunction</a>()-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>()))</div><div class="line"><a name="l00933"></a><span class="lineno"> 933</span>&#160; {</div><div class="line"><a name="l00934"></a><span class="lineno"> 934</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a613d763731058899e6819acdb2d7315f">InstVec</a> nextInsts;</div><div class="line"><a name="l00935"></a><span class="lineno"> 935</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a799e14292e16b9fb322cab07f3ff5593">getNextInsts</a>((*cit)-&gt;getCallSite(),nextInsts);</div><div class="line"><a name="l00936"></a><span class="lineno"> 936</span>&#160; <span class="keywordflow">for</span>(InstVec::const_iterator nit = nextInsts.begin(), enit = nextInsts.end(); nit!=enit; ++nit)</div><div class="line"><a name="l00937"></a><span class="lineno"> 937</span>&#160; {</div><div class="line"><a name="l00938"></a><span class="lineno"> 938</span>&#160; <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a> newCts(newCxt,*nit);</div><div class="line"><a name="l00939"></a><span class="lineno"> 939</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ac483d3b0e9084c2033e177eda9ac9215">markCxtStmtFlag</a>(newCts,cts);</div><div class="line"><a name="l00940"></a><span class="lineno"> 940</span>&#160; }</div><div class="line"><a name="l00941"></a><span class="lineno"> 941</span>&#160; }</div><div class="line"><a name="l00942"></a><span class="lineno"> 942</span>&#160; }</div><div class="line"><a name="l00943"></a><span class="lineno"> 943</span>&#160; }</div><div class="line"><a name="l00944"></a><span class="lineno"> 944</span>&#160;}</div><div class="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>
1474
+ <p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#l00902">902</a> of file <a class="el" href="MHP_8cpp_source.html">MHP.cpp</a>.</p>
1475
+ <div class="fragment"><div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160;{</div><div class="line"><a name="l00904"></a><span class="lineno"> 904</span>&#160;</div><div class="line"><a name="l00905"></a><span class="lineno"> 905</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* curInst = cts.<a class="code" href="classSVF_1_1CxtStmt.html#a5e8c4b10eb5c3240d2e21a020ed834a6">getStmt</a>();</div><div class="line"><a name="l00906"></a><span class="lineno"> 906</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a>&amp; curCxt = cts.<a class="code" href="classSVF_1_1CxtStmt.html#a3ce19b8f2de2e199ed4165dbe9d21f28">getContext</a>();</div><div class="line"><a name="l00907"></a><span class="lineno"> 907</span>&#160;</div><div class="line"><a name="l00908"></a><span class="lineno"> 908</span>&#160; <a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a>* curFunNode = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a8ad9b8cb0e6300b2ffc55244e53cece6">getTCG</a>()-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">getCallGraphNode</a>(<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#a21bcc063a406eb8650df42cf5ced68c9">getSVFFun</a>(curInst-&gt;getParent()-&gt;getParent()));</div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1PTACallGraphNode.html#adf17f5699c9f40ffc8837e813e3af3ec">PTACallGraphNode::const_iterator</a> it = curFunNode-&gt;<a class="code" href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">getInEdges</a>().begin(), eit = curFunNode-&gt;<a class="code" href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">getInEdges</a>().end(); it!=eit; ++it)</div><div class="line"><a name="l00910"></a><span class="lineno"> 910</span>&#160; {</div><div class="line"><a name="l00911"></a><span class="lineno"> 911</span>&#160; <a class="code" href="classSVF_1_1PTACallGraphEdge.html">PTACallGraphEdge</a>* edge = *it;</div><div class="line"><a name="l00912"></a><span class="lineno"> 912</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;ThreadForkEdge&gt;(edge) || SVFUtil::isa&lt;ThreadJoinEdge&gt;(edge))</div><div class="line"><a name="l00913"></a><span class="lineno"> 913</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160; <span class="keywordflow">for</span>(PTACallGraphEdge::CallInstSet::const_iterator cit = (edge)-&gt;directCallsBegin(),</div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160; ecit = (edge)-&gt;directCallsEnd(); cit!=ecit; ++cit)</div><div class="line"><a name="l00916"></a><span class="lineno"> 916</span>&#160; {</div><div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160; <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a> newCxt = curCxt;</div><div class="line"><a name="l00918"></a><span class="lineno"> 918</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#aea9ef584ce6c7129bcd1d5ecda2f1f74">matchCxt</a>(newCxt,(*cit)-&gt;getCallSite(),curFunNode-&gt;<a class="code" href="classSVF_1_1PTACallGraphNode.html#a959445c97605953fbdebbbd999437a09">getFunction</a>()-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>()))</div><div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160; {</div><div class="line"><a name="l00920"></a><span class="lineno"> 920</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a613d763731058899e6819acdb2d7315f">InstVec</a> nextInsts;</div><div class="line"><a name="l00921"></a><span class="lineno"> 921</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a799e14292e16b9fb322cab07f3ff5593">getNextInsts</a>((*cit)-&gt;getCallSite(),nextInsts);</div><div class="line"><a name="l00922"></a><span class="lineno"> 922</span>&#160; <span class="keywordflow">for</span>(InstVec::const_iterator nit = nextInsts.begin(), enit = nextInsts.end(); nit!=enit; ++nit)</div><div class="line"><a name="l00923"></a><span class="lineno"> 923</span>&#160; {</div><div class="line"><a name="l00924"></a><span class="lineno"> 924</span>&#160; <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a> newCts(newCxt,*nit);</div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ac483d3b0e9084c2033e177eda9ac9215">markCxtStmtFlag</a>(newCts,cts);</div><div class="line"><a name="l00926"></a><span class="lineno"> 926</span>&#160; }</div><div class="line"><a name="l00927"></a><span class="lineno"> 927</span>&#160; }</div><div class="line"><a name="l00928"></a><span class="lineno"> 928</span>&#160; }</div><div class="line"><a name="l00929"></a><span class="lineno"> 929</span>&#160; <span class="keywordflow">for</span>(PTACallGraphEdge::CallInstSet::const_iterator cit = (edge)-&gt;indirectCallsBegin(),</div><div class="line"><a name="l00930"></a><span class="lineno"> 930</span>&#160; ecit = (edge)-&gt;indirectCallsEnd(); cit!=ecit; ++cit)</div><div class="line"><a name="l00931"></a><span class="lineno"> 931</span>&#160; {</div><div class="line"><a name="l00932"></a><span class="lineno"> 932</span>&#160; <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a> newCxt = curCxt;</div><div class="line"><a name="l00933"></a><span class="lineno"> 933</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#aea9ef584ce6c7129bcd1d5ecda2f1f74">matchCxt</a>(newCxt,(*cit)-&gt;getCallSite(),curFunNode-&gt;<a class="code" href="classSVF_1_1PTACallGraphNode.html#a959445c97605953fbdebbbd999437a09">getFunction</a>()-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>()))</div><div class="line"><a name="l00934"></a><span class="lineno"> 934</span>&#160; {</div><div class="line"><a name="l00935"></a><span class="lineno"> 935</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a613d763731058899e6819acdb2d7315f">InstVec</a> nextInsts;</div><div class="line"><a name="l00936"></a><span class="lineno"> 936</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a799e14292e16b9fb322cab07f3ff5593">getNextInsts</a>((*cit)-&gt;getCallSite(),nextInsts);</div><div class="line"><a name="l00937"></a><span class="lineno"> 937</span>&#160; <span class="keywordflow">for</span>(InstVec::const_iterator nit = nextInsts.begin(), enit = nextInsts.end(); nit!=enit; ++nit)</div><div class="line"><a name="l00938"></a><span class="lineno"> 938</span>&#160; {</div><div class="line"><a name="l00939"></a><span class="lineno"> 939</span>&#160; <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a> newCts(newCxt,*nit);</div><div class="line"><a name="l00940"></a><span class="lineno"> 940</span>&#160; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ac483d3b0e9084c2033e177eda9ac9215">markCxtStmtFlag</a>(newCts,cts);</div><div class="line"><a name="l00941"></a><span class="lineno"> 941</span>&#160; }</div><div class="line"><a name="l00942"></a><span class="lineno"> 942</span>&#160; }</div><div class="line"><a name="l00943"></a><span class="lineno"> 943</span>&#160; }</div><div class="line"><a name="l00944"></a><span class="lineno"> 944</span>&#160; }</div><div class="line"><a name="l00945"></a><span class="lineno"> 945</span>&#160;}</div><div class="ttc" id="classSVF_1_1PTACallGraph_html_aaab54c670518d9d6790707f76ea76aa1"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">SVF::PTACallGraph::getCallGraphNode</a></div><div class="ttdeci">PTACallGraphNode * getCallGraphNode(NodeID id) const</div><div class="ttdoc">Get call graph node. </div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00315">PTACallGraph.h:315</a></div></div>
1476
1476
  <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#l00182">GenericGraph.h:182</a></div></div>
1477
1477
  <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a2c6ce7aa04c399746d89230be0e0f1ce"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">SVF::ForkJoinAnalysis::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00534">MHP.h:534</a></div></div>
1478
1478
  <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a613d763731058899e6819acdb2d7315f"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a613d763731058899e6819acdb2d7315f">SVF::ForkJoinAnalysis::InstVec</a></div><div class="ttdeci">TCT::InstVec InstVec</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00281">MHP.h:281</a></div></div>
1479
1479
  <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a799e14292e16b9fb322cab07f3ff5593"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a799e14292e16b9fb322cab07f3ff5593">SVF::ForkJoinAnalysis::getNextInsts</a></div><div class="ttdeci">void getNextInsts(const Instruction *inst, InstVec &amp;instSet)</div><div class="ttdoc">Get the next instructions following control flow. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00453">MHP.h:453</a></div></div>
1480
1480
  <div class="ttc" id="classSVF_1_1CxtStmt_html_a5e8c4b10eb5c3240d2e21a020ed834a6"><div class="ttname"><a href="classSVF_1_1CxtStmt.html#a5e8c4b10eb5c3240d2e21a020ed834a6">SVF::CxtStmt::getStmt</a></div><div class="ttdeci">const Instruction * getStmt() const</div><div class="ttdoc">Return current statement. </div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00062">CxtStmt.h:62</a></div></div>
1481
+ <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#l00127">SVFBasicTypes.h:127</a></div></div>
1481
1482
  <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>
1482
1483
  <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_aea9ef584ce6c7129bcd1d5ecda2f1f74"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#aea9ef584ce6c7129bcd1d5ecda2f1f74">SVF::ForkJoinAnalysis::matchCxt</a></div><div class="ttdeci">bool matchCxt(CallStrCxt &amp;cxt, const Instruction *call, const Function *callee)</div><div class="ttdoc">Match context. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00463">MHP.h:463</a></div></div>
1483
- <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#l00077">BasicTypes.h:77</a></div></div>
1484
+ <div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00076">BasicTypes.h:76</a></div></div>
1484
1485
  <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>
1485
- <div class="ttc" id="namespaceSVF_html_a542c6d5483bfc74fa58b45ad06b65960"><div class="ttname"><a href="namespaceSVF.html#a542c6d5483bfc74fa58b45ad06b65960">SVF::CallStrCxt</a></div><div class="ttdeci">SmallVector16 CallStrCxt</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00127">SVFBasicTypes.h:127</a></div></div>
1486
1486
  <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_ac483d3b0e9084c2033e177eda9ac9215"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#ac483d3b0e9084c2033e177eda9ac9215">SVF::ForkJoinAnalysis::markCxtStmtFlag</a></div><div class="ttdeci">void markCxtStmtFlag(const CxtStmt &amp;tgr, ValDomain flag)</div><div class="ttdoc">Initialize TDAlive and TDDead flags. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00401">MHP.h:401</a></div></div>
1487
1487
  <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>
1488
1488
  <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>
1489
1489
  <div class="ttc" id="classSVF_1_1CxtStmt_html"><div class="ttname"><a href="classSVF_1_1CxtStmt.html">SVF::CxtStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00041">CxtStmt.h:41</a></div></div>
1490
1490
  <div class="ttc" id="classSVF_1_1CxtStmt_html_a3ce19b8f2de2e199ed4165dbe9d21f28"><div class="ttname"><a href="classSVF_1_1CxtStmt.html#a3ce19b8f2de2e199ed4165dbe9d21f28">SVF::CxtStmt::getContext</a></div><div class="ttdeci">const CallStrCxt &amp; getContext() const</div><div class="ttdoc">Return current context. </div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00057">CxtStmt.h:57</a></div></div>
1491
- <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#l00235">BasicTypes.h:235</a></div></div>
1491
+ <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#l00200">BasicTypes.h:200</a></div></div>
1492
1492
  <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>
1493
1493
  <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a8ad9b8cb0e6300b2ffc55244e53cece6"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a8ad9b8cb0e6300b2ffc55244e53cece6">SVF::ForkJoinAnalysis::getTCG</a></div><div class="ttdeci">ThreadCallGraph * getTCG() const</div><div class="ttdoc">ThreadCallGraph. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00493">MHP.h:493</a></div></div>
1494
1494
  </div><!-- fragment -->
@@ -1531,11 +1531,11 @@ Private Attributes</h2></td></tr>
1531
1531
  <p>Whether it is a matched fork join pair. </p>
1532
1532
 
1533
1533
  <p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00378">378</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
1534
- <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="keywordflow">return</span> <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#a5b087b42340d1a1b2ee37339637709d3">getPTA</a>()-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#abd9da46106d820721a24201caaa164e1">alias</a>(<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#acd4308b99446c277ccb3407103fe21d0">getForkedThread</a>(forkSite), <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ada1e56dfe2d64ea6310142a346c86ed4">getJoinedThread</a>(joinSite)) &amp;&amp; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a4d073da3e5266964dad7422033013219">isSameSCEV</a>(forkSite,joinSite);</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; }</div><div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a4d073da3e5266964dad7422033013219"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a4d073da3e5266964dad7422033013219">SVF::ForkJoinAnalysis::isSameSCEV</a></div><div class="ttdeci">bool isSameSCEV(const Instruction *forkSite, const Instruction *joinSite)</div><div class="ttdoc">Return true if the fork and join have the same SCEV. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l01042">MHP.cpp:1042</a></div></div>
1534
+ <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="keywordflow">return</span> <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#a5b087b42340d1a1b2ee37339637709d3">getPTA</a>()-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a6c01f259ad2379a422d7106ce0255eb8">alias</a>(<a class="code" href="classSVF_1_1ForkJoinAnalysis.html#acd4308b99446c277ccb3407103fe21d0">getForkedThread</a>(forkSite), <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ada1e56dfe2d64ea6310142a346c86ed4">getJoinedThread</a>(joinSite)) &amp;&amp; <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a4d073da3e5266964dad7422033013219">isSameSCEV</a>(forkSite,joinSite);</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; }</div><div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a4d073da3e5266964dad7422033013219"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a4d073da3e5266964dad7422033013219">SVF::ForkJoinAnalysis::isSameSCEV</a></div><div class="ttdeci">bool isSameSCEV(const Instruction *forkSite, const Instruction *joinSite)</div><div class="ttdoc">Return true if the fork and join have the same SCEV. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l01043">MHP.cpp:1043</a></div></div>
1535
1535
  <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_ada1e56dfe2d64ea6310142a346c86ed4"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#ada1e56dfe2d64ea6310142a346c86ed4">SVF::ForkJoinAnalysis::getJoinedThread</a></div><div class="ttdeci">const Value * getJoinedThread(const Instruction *call)</div><div class="ttdoc">Get joined thread. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00484">MHP.h:484</a></div></div>
1536
1536
  <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a2c6ce7aa04c399746d89230be0e0f1ce"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">SVF::ForkJoinAnalysis::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00534">MHP.h:534</a></div></div>
1537
- <div class="ttc" id="classSVF_1_1PointerAnalysis_html_abd9da46106d820721a24201caaa164e1"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#abd9da46106d820721a24201caaa164e1">SVF::PointerAnalysis::alias</a></div><div class="ttdeci">virtual AliasResult alias(const MemoryLocation &amp;LocA, const MemoryLocation &amp;LocB)=0</div><div class="ttdoc">Interface exposed to users of our pointer analysis, given Location infos. </div></div>
1538
1537
  <div class="ttc" id="classSVF_1_1TCT_html_a5b087b42340d1a1b2ee37339637709d3"><div class="ttname"><a href="classSVF_1_1TCT.html#a5b087b42340d1a1b2ee37339637709d3">SVF::TCT::getPTA</a></div><div class="ttdeci">PointerAnalysis * getPTA() const</div><div class="ttdoc">Get PTA. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00169">TCT.h:169</a></div></div>
1538
+ <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a6c01f259ad2379a422d7106ce0255eb8"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a6c01f259ad2379a422d7106ce0255eb8">SVF::PointerAnalysis::alias</a></div><div class="ttdeci">virtual AliasResult alias(const Value *V1, const Value *V2)=0</div><div class="ttdoc">Interface exposed to users of our pointer analysis, given Value infos. </div></div>
1539
1539
  <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_acd4308b99446c277ccb3407103fe21d0"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#acd4308b99446c277ccb3407103fe21d0">SVF::ForkJoinAnalysis::getForkedThread</a></div><div class="ttdeci">const Value * getForkedThread(const Instruction *call)</div><div class="ttdoc">Get forked thread. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00479">MHP.h:479</a></div></div>
1540
1540
  </div><!-- fragment -->
1541
1541
  </div>
@@ -1692,12 +1692,12 @@ Private Attributes</h2></td></tr>
1692
1692
  <p>Return true if the fork and join have the same SCEV. </p>
1693
1693
  <p>We assume a pair of fork and join sites are must-alias if they have same <a class="el" href="classSVF_1_1PTASCEV.html">PTASCEV</a> (1) SCEV not inside loop (2) SCEV inside two symmetric loops, then pointers of fork thread and join thread should have same scev start and step. and should have same loop trip count </p>
1694
1694
 
1695
- <p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#l01042">1042</a> of file <a class="el" href="MHP_8cpp_source.html">MHP.cpp</a>.</p>
1696
- <div class="fragment"><div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>&#160;{</div><div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>&#160;</div><div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PTASCEV.html">PTASCEV</a>&amp; forkse = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a4207948054a0f98560922f3f07ada10f">fkjnToPTASCEVMap</a>[forkSite];</div><div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PTASCEV.html">PTASCEV</a>&amp; joinse = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a4207948054a0f98560922f3f07ada10f">fkjnToPTASCEVMap</a>[joinSite];</div><div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>&#160;</div><div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>&#160; <span class="comment">//if(sameLoopTripCount(forkSite,joinSite) == false)</span></div><div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>&#160; <span class="comment">// return false;</span></div><div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160;</div><div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160; <span class="keywordflow">if</span>(forkse.<a class="code" href="classSVF_1_1PTASCEV.html#ac6636f0c39ef55e2b5f126532bf2d411">inloop</a> &amp;&amp; joinse.<a class="code" href="classSVF_1_1PTASCEV.html#ac6636f0c39ef55e2b5f126532bf2d411">inloop</a>)</div><div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>&#160; <span class="keywordflow">return</span> forkse.<a class="code" href="classSVF_1_1PTASCEV.html#a0de1531fc72f5aa0bafc59101faae68d">start</a>==joinse.<a class="code" href="classSVF_1_1PTASCEV.html#a0de1531fc72f5aa0bafc59101faae68d">start</a> &amp;&amp; forkse.<a class="code" href="classSVF_1_1PTASCEV.html#aead435732fbb492627f746b3d0654ce2">step</a> == joinse.<a class="code" href="classSVF_1_1PTASCEV.html#aead435732fbb492627f746b3d0654ce2">step</a> &amp;&amp; forkse.<a class="code" href="classSVF_1_1PTASCEV.html#aa92f2da24c8b6d3548f8b4920a8d157f">tripcount</a> &lt;= joinse.<a class="code" href="classSVF_1_1PTASCEV.html#aa92f2da24c8b6d3548f8b4920a8d157f">tripcount</a>;</div><div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;GetElementPtrInst&gt;(forkse.<a class="code" href="classSVF_1_1PTASCEV.html#aa6b49b5cbe5057d779685c9ebe763421">ptr</a>) &amp;&amp; SVFUtil::isa&lt;GetElementPtrInst&gt;(joinse.<a class="code" href="classSVF_1_1PTASCEV.html#aa6b49b5cbe5057d779685c9ebe763421">ptr</a>))</div><div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>&#160; <span class="keywordflow">return</span> <a class="code" href="MHP_8cpp.html#a1a6f1ed70075da459ab275eb5c099144">accessSameArrayIndex</a>(SVFUtil::cast&lt;GetElementPtrInst&gt;(forkse.<a class="code" href="classSVF_1_1PTASCEV.html#aa6b49b5cbe5057d779685c9ebe763421">ptr</a>),SVFUtil::cast&lt;GetElementPtrInst&gt;(joinse.<a class="code" href="classSVF_1_1PTASCEV.html#aa6b49b5cbe5057d779685c9ebe763421">ptr</a>));</div><div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;GetElementPtrInst&gt;(forkse.<a class="code" href="classSVF_1_1PTASCEV.html#aa6b49b5cbe5057d779685c9ebe763421">ptr</a>) || SVFUtil::isa&lt;GetElementPtrInst&gt;(joinse.<a class="code" href="classSVF_1_1PTASCEV.html#aa6b49b5cbe5057d779685c9ebe763421">ptr</a>))</div><div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>&#160;}</div><div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a4207948054a0f98560922f3f07ada10f"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a4207948054a0f98560922f3f07ada10f">SVF::ForkJoinAnalysis::fkjnToPTASCEVMap</a></div><div class="ttdeci">forkjoinToPTASCEVMap fkjnToPTASCEVMap</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00545">MHP.h:545</a></div></div>
1695
+ <p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#l01043">1043</a> of file <a class="el" href="MHP_8cpp_source.html">MHP.cpp</a>.</p>
1696
+ <div class="fragment"><div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>&#160;{</div><div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>&#160;</div><div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PTASCEV.html">PTASCEV</a>&amp; forkse = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a4207948054a0f98560922f3f07ada10f">fkjnToPTASCEVMap</a>[forkSite];</div><div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PTASCEV.html">PTASCEV</a>&amp; joinse = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a4207948054a0f98560922f3f07ada10f">fkjnToPTASCEVMap</a>[joinSite];</div><div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>&#160;</div><div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>&#160; <span class="comment">//if(sameLoopTripCount(forkSite,joinSite) == false)</span></div><div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160; <span class="comment">// return false;</span></div><div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160;</div><div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>&#160; <span class="keywordflow">if</span>(forkse.<a class="code" href="classSVF_1_1PTASCEV.html#ac6636f0c39ef55e2b5f126532bf2d411">inloop</a> &amp;&amp; joinse.<a class="code" href="classSVF_1_1PTASCEV.html#ac6636f0c39ef55e2b5f126532bf2d411">inloop</a>)</div><div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>&#160; <span class="keywordflow">return</span> forkse.<a class="code" href="classSVF_1_1PTASCEV.html#a0de1531fc72f5aa0bafc59101faae68d">start</a>==joinse.<a class="code" href="classSVF_1_1PTASCEV.html#a0de1531fc72f5aa0bafc59101faae68d">start</a> &amp;&amp; forkse.<a class="code" href="classSVF_1_1PTASCEV.html#aead435732fbb492627f746b3d0654ce2">step</a> == joinse.<a class="code" href="classSVF_1_1PTASCEV.html#aead435732fbb492627f746b3d0654ce2">step</a> &amp;&amp; forkse.<a class="code" href="classSVF_1_1PTASCEV.html#aa92f2da24c8b6d3548f8b4920a8d157f">tripcount</a> &lt;= joinse.<a class="code" href="classSVF_1_1PTASCEV.html#aa92f2da24c8b6d3548f8b4920a8d157f">tripcount</a>;</div><div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;GetElementPtrInst&gt;(forkse.<a class="code" href="classSVF_1_1PTASCEV.html#aa6b49b5cbe5057d779685c9ebe763421">ptr</a>) &amp;&amp; SVFUtil::isa&lt;GetElementPtrInst&gt;(joinse.<a class="code" href="classSVF_1_1PTASCEV.html#aa6b49b5cbe5057d779685c9ebe763421">ptr</a>))</div><div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>&#160; <span class="keywordflow">return</span> <a class="code" href="MHP_8cpp.html#a1a6f1ed70075da459ab275eb5c099144">accessSameArrayIndex</a>(SVFUtil::cast&lt;GetElementPtrInst&gt;(forkse.<a class="code" href="classSVF_1_1PTASCEV.html#aa6b49b5cbe5057d779685c9ebe763421">ptr</a>),SVFUtil::cast&lt;GetElementPtrInst&gt;(joinse.<a class="code" href="classSVF_1_1PTASCEV.html#aa6b49b5cbe5057d779685c9ebe763421">ptr</a>));</div><div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;GetElementPtrInst&gt;(forkse.<a class="code" href="classSVF_1_1PTASCEV.html#aa6b49b5cbe5057d779685c9ebe763421">ptr</a>) || SVFUtil::isa&lt;GetElementPtrInst&gt;(joinse.<a class="code" href="classSVF_1_1PTASCEV.html#aa6b49b5cbe5057d779685c9ebe763421">ptr</a>))</div><div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>&#160;}</div><div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a4207948054a0f98560922f3f07ada10f"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a4207948054a0f98560922f3f07ada10f">SVF::ForkJoinAnalysis::fkjnToPTASCEVMap</a></div><div class="ttdeci">forkjoinToPTASCEVMap fkjnToPTASCEVMap</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00545">MHP.h:545</a></div></div>
1697
1697
  <div class="ttc" id="classSVF_1_1PTASCEV_html_aa6b49b5cbe5057d779685c9ebe763421"><div class="ttname"><a href="classSVF_1_1PTASCEV.html#aa6b49b5cbe5057d779685c9ebe763421">SVF::PTASCEV::ptr</a></div><div class="ttdeci">const Value * ptr</div><div class="ttdef"><b>Definition:</b> <a href="DataFlowUtil_8h_source.html#l00077">DataFlowUtil.h:77</a></div></div>
1698
1698
  <div class="ttc" id="classSVF_1_1PTASCEV_html_aead435732fbb492627f746b3d0654ce2"><div class="ttname"><a href="classSVF_1_1PTASCEV.html#aead435732fbb492627f746b3d0654ce2">SVF::PTASCEV::step</a></div><div class="ttdeci">const Value * step</div><div class="ttdef"><b>Definition:</b> <a href="DataFlowUtil_8h_source.html#l00076">DataFlowUtil.h:76</a></div></div>
1699
1699
  <div class="ttc" id="classSVF_1_1PTASCEV_html_ac6636f0c39ef55e2b5f126532bf2d411"><div class="ttname"><a href="classSVF_1_1PTASCEV.html#ac6636f0c39ef55e2b5f126532bf2d411">SVF::PTASCEV::inloop</a></div><div class="ttdeci">bool inloop</div><div class="ttdef"><b>Definition:</b> <a href="DataFlowUtil_8h_source.html#l00078">DataFlowUtil.h:78</a></div></div>
1700
- <div class="ttc" id="MHP_8cpp_html_a1a6f1ed70075da459ab275eb5c099144"><div class="ttname"><a href="MHP_8cpp.html#a1a6f1ed70075da459ab275eb5c099144">accessSameArrayIndex</a></div><div class="ttdeci">static bool accessSameArrayIndex(const GetElementPtrInst *ptr1, const GetElementPtrInst *ptr2)</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l01003">MHP.cpp:1003</a></div></div>
1700
+ <div class="ttc" id="MHP_8cpp_html_a1a6f1ed70075da459ab275eb5c099144"><div class="ttname"><a href="MHP_8cpp.html#a1a6f1ed70075da459ab275eb5c099144">accessSameArrayIndex</a></div><div class="ttdeci">static bool accessSameArrayIndex(const GetElementPtrInst *ptr1, const GetElementPtrInst *ptr2)</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l01004">MHP.cpp:1004</a></div></div>
1701
1701
  <div class="ttc" id="classSVF_1_1PTASCEV_html_a0de1531fc72f5aa0bafc59101faae68d"><div class="ttname"><a href="classSVF_1_1PTASCEV.html#a0de1531fc72f5aa0bafc59101faae68d">SVF::PTASCEV::start</a></div><div class="ttdeci">const Value * start</div><div class="ttdef"><b>Definition:</b> <a href="DataFlowUtil_8h_source.html#l00075">DataFlowUtil.h:75</a></div></div>
1702
1702
  <div class="ttc" id="classSVF_1_1PTASCEV_html_aa92f2da24c8b6d3548f8b4920a8d157f"><div class="ttname"><a href="classSVF_1_1PTASCEV.html#aa92f2da24c8b6d3548f8b4920a8d157f">SVF::PTASCEV::tripcount</a></div><div class="ttdeci">unsigned tripcount</div><div class="ttdef"><b>Definition:</b> <a href="DataFlowUtil_8h_source.html#l00079">DataFlowUtil.h:79</a></div></div>
1703
1703
  <div class="ttc" id="classSVF_1_1PTASCEV_html"><div class="ttname"><a href="classSVF_1_1PTASCEV.html">SVF::PTASCEV</a></div><div class="ttdef"><b>Definition:</b> <a href="DataFlowUtil_8h_source.html#l00043">DataFlowUtil.h:43</a></div></div>
@@ -1874,7 +1874,7 @@ Private Attributes</h2></td></tr>
1874
1874
  <tr>
1875
1875
  <td class="memname">bool SVF::ForkJoinAnalysis::matchCxt </td>
1876
1876
  <td>(</td>
1877
- <td class="paramtype"><a class="el" href="namespaceSVF.html#a542c6d5483bfc74fa58b45ad06b65960">CallStrCxt</a> &amp;&#160;</td>
1877
+ <td class="paramtype"><a class="el" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a> &amp;&#160;</td>
1878
1878
  <td class="paramname"><em>cxt</em>, </td>
1879
1879
  </tr>
1880
1880
  <tr>
@@ -1951,7 +1951,7 @@ Private Attributes</h2></td></tr>
1951
1951
  <tr>
1952
1952
  <td class="memname">void SVF::ForkJoinAnalysis::pushCxt </td>
1953
1953
  <td>(</td>
1954
- <td class="paramtype"><a class="el" href="namespaceSVF.html#a542c6d5483bfc74fa58b45ad06b65960">CallStrCxt</a> &amp;&#160;</td>
1954
+ <td class="paramtype"><a class="el" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a> &amp;&#160;</td>
1955
1955
  <td class="paramname"><em>cxt</em>, </td>
1956
1956
  </tr>
1957
1957
  <tr>
@@ -2056,12 +2056,12 @@ Private Attributes</h2></td></tr>
2056
2056
  <p>Same loop trip count. </p>
2057
2057
  <p>The fork and join have same loop trip count </p>
2058
2058
 
2059
- <p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#l01064">1064</a> of file <a class="el" href="MHP_8cpp_source.html">MHP.cpp</a>.</p>
2060
- <div class="fragment"><div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>&#160;{</div><div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>&#160;</div><div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>&#160; <a class="code" href="namespaceSVF.html#ad8794eb3c00de3d3b5c5e43dded3fb42">ScalarEvolution</a>* forkSE = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ad3db3e7a2ebe7646675aab16103691e7">getSE</a>(forkSite);</div><div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>&#160; <a class="code" href="namespaceSVF.html#ad8794eb3c00de3d3b5c5e43dded3fb42">ScalarEvolution</a>* joinSE = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ad3db3e7a2ebe7646675aab16103691e7">getSE</a>(joinSite);</div><div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>&#160;</div><div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>&#160; <span class="comment">// Get loops</span></div><div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#abf85e29310b2e4df8925d00a5c081314">Loop</a> *forkSiteLoop = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#add9104a3d7a821e9c2f266ae1810d2e3">getLoop</a>(forkSite);</div><div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#abf85e29310b2e4df8925d00a5c081314">Loop</a> *joinSiteLoop = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#add9104a3d7a821e9c2f266ae1810d2e3">getLoop</a>(joinSite);</div><div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>&#160;</div><div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>&#160; <span class="keywordflow">if</span>(forkSiteLoop == <span class="keyword">nullptr</span> || joinSiteLoop == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>&#160;</div><div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aac5262378e41a3414a20cc9a41d4adc6">SCEV</a>* forkLoopCountScev = forkSE-&gt;getBackedgeTakenCount(forkSiteLoop);</div><div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aac5262378e41a3414a20cc9a41d4adc6">SCEV</a>* joinLoopCountScev = joinSE-&gt;getBackedgeTakenCount(joinSiteLoop);</div><div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>&#160;</div><div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>&#160; <span class="keywordflow">if</span>(forkLoopCountScev!=forkSE-&gt;getCouldNotCompute())</div><div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>&#160; {</div><div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>&#160; <span class="keywordflow">if</span>(forkLoopCountScev==joinLoopCountScev)</div><div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160; {</div><div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160; }</div><div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160; }</div><div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_ad8794eb3c00de3d3b5c5e43dded3fb42"><div class="ttname"><a href="namespaceSVF.html#ad8794eb3c00de3d3b5c5e43dded3fb42">SVF::ScalarEvolution</a></div><div class="ttdeci">llvm::ScalarEvolution ScalarEvolution</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00176">BasicTypes.h:176</a></div></div>
2059
+ <p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#l01065">1065</a> of file <a class="el" href="MHP_8cpp_source.html">MHP.cpp</a>.</p>
2060
+ <div class="fragment"><div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>&#160;{</div><div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>&#160;</div><div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>&#160; <a class="code" href="namespaceSVF.html#ad8794eb3c00de3d3b5c5e43dded3fb42">ScalarEvolution</a>* forkSE = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ad3db3e7a2ebe7646675aab16103691e7">getSE</a>(forkSite);</div><div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>&#160; <a class="code" href="namespaceSVF.html#ad8794eb3c00de3d3b5c5e43dded3fb42">ScalarEvolution</a>* joinSE = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ad3db3e7a2ebe7646675aab16103691e7">getSE</a>(joinSite);</div><div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>&#160;</div><div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>&#160; <span class="comment">// Get loops</span></div><div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#abf85e29310b2e4df8925d00a5c081314">Loop</a> *forkSiteLoop = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#add9104a3d7a821e9c2f266ae1810d2e3">getLoop</a>(forkSite);</div><div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#abf85e29310b2e4df8925d00a5c081314">Loop</a> *joinSiteLoop = <a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#add9104a3d7a821e9c2f266ae1810d2e3">getLoop</a>(joinSite);</div><div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>&#160;</div><div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160; <span class="keywordflow">if</span>(forkSiteLoop == <span class="keyword">nullptr</span> || joinSiteLoop == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>&#160;</div><div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aac5262378e41a3414a20cc9a41d4adc6">SCEV</a>* forkLoopCountScev = forkSE-&gt;getBackedgeTakenCount(forkSiteLoop);</div><div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aac5262378e41a3414a20cc9a41d4adc6">SCEV</a>* joinLoopCountScev = joinSE-&gt;getBackedgeTakenCount(joinSiteLoop);</div><div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>&#160;</div><div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>&#160; <span class="keywordflow">if</span>(forkLoopCountScev!=forkSE-&gt;getCouldNotCompute())</div><div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>&#160; {</div><div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160; <span class="keywordflow">if</span>(forkLoopCountScev==joinLoopCountScev)</div><div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>&#160; {</div><div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160; }</div><div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>&#160; }</div><div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_ad8794eb3c00de3d3b5c5e43dded3fb42"><div class="ttname"><a href="namespaceSVF.html#ad8794eb3c00de3d3b5c5e43dded3fb42">SVF::ScalarEvolution</a></div><div class="ttdeci">llvm::ScalarEvolution ScalarEvolution</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00141">BasicTypes.h:141</a></div></div>
2061
2061
  <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a2c6ce7aa04c399746d89230be0e0f1ce"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a2c6ce7aa04c399746d89230be0e0f1ce">SVF::ForkJoinAnalysis::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00534">MHP.h:534</a></div></div>
2062
2062
  <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#l00347">TCT.cpp:347</a></div></div>
2063
- <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#l00085">BasicTypes.h:85</a></div></div>
2064
- <div class="ttc" id="namespaceSVF_html_aac5262378e41a3414a20cc9a41d4adc6"><div class="ttname"><a href="namespaceSVF.html#aac5262378e41a3414a20cc9a41d4adc6">SVF::SCEV</a></div><div class="ttdeci">llvm::SCEV SCEV</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00179">BasicTypes.h:179</a></div></div>
2063
+ <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#l00084">BasicTypes.h:84</a></div></div>
2064
+ <div class="ttc" id="namespaceSVF_html_aac5262378e41a3414a20cc9a41d4adc6"><div class="ttname"><a href="namespaceSVF.html#aac5262378e41a3414a20cc9a41d4adc6">SVF::SCEV</a></div><div class="ttdeci">llvm::SCEV SCEV</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00144">BasicTypes.h:144</a></div></div>
2065
2065
  <div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_ad3db3e7a2ebe7646675aab16103691e7"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#ad3db3e7a2ebe7646675aab16103691e7">SVF::ForkJoinAnalysis::getSE</a></div><div class="ttdeci">ScalarEvolution * getSE(const Instruction *inst)</div><div class="ttdoc">Get SE for function. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00350">MHP.h:350</a></div></div>
2066
2066
  </div><!-- fragment -->
2067
2067
  </div>