svf-tools 1.0.469 → 1.0.472

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 (384) hide show
  1. package/SVF-doxygen/html/html/AndersenSCD_8cpp_source.html +1 -1
  2. package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +2 -2
  3. package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +2 -2
  4. package/SVF-doxygen/html/html/Andersen_8cpp.html +1 -1
  5. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +16 -16
  6. package/SVF-doxygen/html/html/Andersen_8h_source.html +3 -3
  7. package/SVF-doxygen/html/html/Annotator_8h_source.html +1 -1
  8. package/SVF-doxygen/html/html/BDDExpr_8cpp_source.html +1 -1
  9. package/SVF-doxygen/html/html/BreakConstantExpr_8cpp_source.html +1 -1
  10. package/SVF-doxygen/html/html/CFLAlias_8h_source.html +2 -2
  11. package/SVF-doxygen/html/html/CFLGraphBuilder_8cpp_source.html +1 -1
  12. package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +23 -23
  13. package/SVF-doxygen/html/html/CHGBuilder_8h_source.html +3 -3
  14. package/SVF-doxygen/html/html/CHG_8cpp.html +2 -2
  15. package/SVF-doxygen/html/html/CHG_8cpp_source.html +11 -11
  16. package/SVF-doxygen/html/html/CHG_8h_source.html +2 -2
  17. package/SVF-doxygen/html/html/CPPUtil_8cpp.html +15 -15
  18. package/SVF-doxygen/html/html/CPPUtil_8cpp_source.html +40 -40
  19. package/SVF-doxygen/html/html/CPPUtil_8h_source.html +17 -17
  20. package/SVF-doxygen/html/html/CallGraphBuilder_8cpp.html +1 -1
  21. package/SVF-doxygen/html/html/CallGraphBuilder_8cpp_source.html +5 -5
  22. package/SVF-doxygen/html/html/ConditionalPT_8h_source.html +1 -1
  23. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +1 -1
  24. package/SVF-doxygen/html/html/ConsG_8h_source.html +3 -3
  25. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +7 -7
  26. package/SVF-doxygen/html/html/ContextDDA_8h_source.html +2 -2
  27. package/SVF-doxygen/html/html/CxtStmt_8h_source.html +4 -4
  28. package/SVF-doxygen/html/html/DCHG_8cpp_source.html +18 -18
  29. package/SVF-doxygen/html/html/DCHG_8h_source.html +8 -8
  30. package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +6 -6
  31. package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +1 -1
  32. package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +1 -1
  33. package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +6 -6
  34. package/SVF-doxygen/html/html/DataFlowUtil_8cpp_source.html +4 -4
  35. package/SVF-doxygen/html/html/DataFlowUtil_8h_source.html +6 -6
  36. package/SVF-doxygen/html/html/DoubleFreeChecker_8cpp_source.html +2 -2
  37. package/SVF-doxygen/html/html/ExeState_8cpp.html +1 -1
  38. package/SVF-doxygen/html/html/ExeState_8cpp_source.html +9 -9
  39. package/SVF-doxygen/html/html/ExtAPI_8h_source.html +3 -3
  40. package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +2 -2
  41. package/SVF-doxygen/html/html/FileChecker_8cpp_source.html +3 -3
  42. package/SVF-doxygen/html/html/FileChecker_8h_source.html +1 -1
  43. package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +4 -4
  44. package/SVF-doxygen/html/html/FlowDDA_8h_source.html +3 -3
  45. package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +5 -5
  46. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp.html +2 -2
  47. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +3 -3
  48. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8h_source.html +2 -2
  49. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +6 -6
  50. package/SVF-doxygen/html/html/Graph2Json_8cpp_source.html +2 -2
  51. package/SVF-doxygen/html/html/Graph2Json_8h.html +1 -1
  52. package/SVF-doxygen/html/html/Graph2Json_8h_source.html +2 -2
  53. package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +9 -9
  54. package/SVF-doxygen/html/html/ICFGBuilder_8h_source.html +1 -1
  55. package/SVF-doxygen/html/html/ICFGNode_8h_source.html +1 -1
  56. package/SVF-doxygen/html/html/ICFG_8cpp_source.html +7 -7
  57. package/SVF-doxygen/html/html/ICFG_8h_source.html +1 -1
  58. package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +3 -3
  59. package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +2 -2
  60. package/SVF-doxygen/html/html/IRGraph_8h_source.html +18 -18
  61. package/SVF-doxygen/html/html/LLVMLoopAnalysis_8cpp_source.html +2 -2
  62. package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +1 -1
  63. package/SVF-doxygen/html/html/LLVMModule_8h_source.html +2 -2
  64. package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +43 -37
  65. package/SVF-doxygen/html/html/LLVMUtil_8h.html +14 -166
  66. package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +49 -106
  67. package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +9 -9
  68. package/SVF-doxygen/html/html/LeakChecker_8h_source.html +1 -1
  69. package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +6 -6
  70. package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +11 -11
  71. package/SVF-doxygen/html/html/LockAnalysis_8h_source.html +1 -1
  72. package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +13 -13
  73. package/SVF-doxygen/html/html/LockResultValidator_8h_source.html +1 -1
  74. package/SVF-doxygen/html/html/MHP_8cpp.html +1 -1
  75. package/SVF-doxygen/html/html/MHP_8cpp_source.html +13 -13
  76. package/SVF-doxygen/html/html/MHP_8h_source.html +2 -2
  77. package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +1 -1
  78. package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +5 -5
  79. package/SVF-doxygen/html/html/MTAAnnotator_8h_source.html +2 -2
  80. package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +12 -12
  81. package/SVF-doxygen/html/html/MTAResultValidator_8h_source.html +6 -6
  82. package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +4 -4
  83. package/SVF-doxygen/html/html/MTA_8cpp_source.html +4 -4
  84. package/SVF-doxygen/html/html/MTA_8h_source.html +2 -2
  85. package/SVF-doxygen/html/html/MemPartition_8cpp_source.html +1 -1
  86. package/SVF-doxygen/html/html/MemPartition_8h_source.html +1 -1
  87. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +12 -12
  88. package/SVF-doxygen/html/html/MemRegion_8h_source.html +1 -1
  89. package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +14 -14
  90. package/SVF-doxygen/html/html/MemSSA_8h_source.html +3 -3
  91. package/SVF-doxygen/html/html/MutablePointsToDS_8h_source.html +1 -1
  92. package/SVF-doxygen/html/html/NodeIDAllocator_8cpp_source.html +1 -1
  93. package/SVF-doxygen/html/html/PAGBuilderFromFile_8cpp_source.html +1 -1
  94. package/SVF-doxygen/html/html/PCG_8cpp_source.html +9 -9
  95. package/SVF-doxygen/html/html/PCG_8h_source.html +1 -1
  96. package/SVF-doxygen/html/html/PTACallGraph_8cpp.html +1 -1
  97. package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +7 -7
  98. package/SVF-doxygen/html/html/PTACallGraph_8h_source.html +1 -1
  99. package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +17 -17
  100. package/SVF-doxygen/html/html/PathCondAllocator_8cpp_source.html +10 -10
  101. package/SVF-doxygen/html/html/PathCondAllocator_8h_source.html +3 -3
  102. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +8 -8
  103. package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +2 -2
  104. package/SVF-doxygen/html/html/PointerAnalysis_8cpp.html +1 -1
  105. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +42 -42
  106. package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +26 -26
  107. package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +1 -1
  108. package/SVF-doxygen/html/html/SVF-FE_2BasicTypes_8h.html +71 -53
  109. package/SVF-doxygen/html/html/SVF-FE_2BasicTypes_8h_source.html +54 -53
  110. package/SVF-doxygen/html/html/SVFGBuilder_8cpp.html +1 -1
  111. package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +7 -7
  112. package/SVF-doxygen/html/html/SVFGBuilder_8h_source.html +2 -2
  113. package/SVF-doxygen/html/html/SVFGNode_8h_source.html +1 -1
  114. package/SVF-doxygen/html/html/SVFGOPT_8cpp_source.html +2 -2
  115. package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +1 -1
  116. package/SVF-doxygen/html/html/SVFGReadWrite_8cpp.html +1 -1
  117. package/SVF-doxygen/html/html/SVFGReadWrite_8cpp_source.html +2 -2
  118. package/SVF-doxygen/html/html/SVFG_8cpp.html +1 -1
  119. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +7 -7
  120. package/SVF-doxygen/html/html/SVFG_8h_source.html +1 -1
  121. package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +73 -73
  122. package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +34 -34
  123. package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +7 -7
  124. package/SVF-doxygen/html/html/SVFIR_8h_source.html +11 -11
  125. package/SVF-doxygen/html/html/SVFModule_8cpp_source.html +2 -2
  126. package/SVF-doxygen/html/html/SVFModule_8h_source.html +2 -2
  127. package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +3 -3
  128. package/SVF-doxygen/html/html/SVFUtil_8cpp.html +8 -9
  129. package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +39 -38
  130. package/SVF-doxygen/html/html/SVFUtil_8h.html +150 -0
  131. package/SVF-doxygen/html/html/SVFUtil_8h_source.html +91 -27
  132. package/SVF-doxygen/html/html/SVFVariables_8cpp.html +1 -1
  133. package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +4 -4
  134. package/SVF-doxygen/html/html/SVFVariables_8h_source.html +7 -7
  135. package/SVF-doxygen/html/html/SaberAnnotator_8cpp_source.html +1 -1
  136. package/SVF-doxygen/html/html/SaberCheckerAPI_8h_source.html +1 -1
  137. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +4 -4
  138. package/SVF-doxygen/html/html/SrcSnkDDA_8h_source.html +1 -1
  139. package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +79 -77
  140. package/SVF-doxygen/html/html/SymbolTableBuilder_8h_source.html +14 -14
  141. package/SVF-doxygen/html/html/SymbolTableInfo_8cpp.html +0 -1
  142. package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +94 -100
  143. package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +121 -119
  144. package/SVF-doxygen/html/html/TCT_8cpp_source.html +11 -11
  145. package/SVF-doxygen/html/html/TCT_8h_source.html +8 -8
  146. package/SVF-doxygen/html/html/ThreadAPI_8cpp_source.html +2 -2
  147. package/SVF-doxygen/html/html/ThreadAPI_8h_source.html +4 -4
  148. package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +5 -5
  149. package/SVF-doxygen/html/html/ThreadCallGraph_8h_source.html +1 -1
  150. package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +4 -4
  151. package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +16 -16
  152. package/SVF-doxygen/html/html/TypeBasedHeapCloning_8h_source.html +3 -3
  153. package/SVF-doxygen/html/html/Util_2BasicTypes_8h.html +0 -2
  154. package/SVF-doxygen/html/html/Util_2BasicTypes_8h_source.html +56 -57
  155. package/SVF-doxygen/html/html/VFGNode_8h_source.html +1 -1
  156. package/SVF-doxygen/html/html/VFG_8cpp.html +1 -1
  157. package/SVF-doxygen/html/html/VFG_8cpp_source.html +7 -7
  158. package/SVF-doxygen/html/html/VFG_8h_source.html +2 -2
  159. package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp.html +1 -1
  160. package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +5 -5
  161. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +1 -1
  162. package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +1 -1
  163. package/SVF-doxygen/html/html/WPAPass_8h_source.html +1 -1
  164. package/SVF-doxygen/html/html/cfl_8cpp.html +1 -1
  165. package/SVF-doxygen/html/html/cfl_8cpp_source.html +1 -1
  166. package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode.html +1 -1
  167. package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode.html +1 -1
  168. package/SVF-doxygen/html/html/classSVF_1_1ActualParmVFGNode.html +1 -1
  169. package/SVF-doxygen/html/html/classSVF_1_1ActualRetVFGNode.html +1 -1
  170. package/SVF-doxygen/html/html/classSVF_1_1AddrStmt.html +1 -1
  171. package/SVF-doxygen/html/html/classSVF_1_1AliasDDAClient.html +1 -1
  172. package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +9 -9
  173. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +6 -6
  174. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +1 -1
  175. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +2 -2
  176. package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +2 -2
  177. package/SVF-doxygen/html/html/classSVF_1_1Annotator.html +1 -1
  178. package/SVF-doxygen/html/html/classSVF_1_1BDDExprManager.html +2 -2
  179. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +9 -9
  180. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt.html +1 -1
  181. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +1 -1
  182. package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +5 -5
  183. package/SVF-doxygen/html/html/classSVF_1_1BreakConstantGEPs.html +1 -1
  184. package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.html +3 -3
  185. package/SVF-doxygen/html/html/classSVF_1_1CFLGraphBuilder.html +1 -1
  186. package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +39 -39
  187. package/SVF-doxygen/html/html/classSVF_1_1CHGraph.html +9 -9
  188. package/SVF-doxygen/html/html/classSVF_1_1CallGraphBuilder.html +2 -2
  189. package/SVF-doxygen/html/html/classSVF_1_1CallICFGNode.html +1 -1
  190. package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +1 -1
  191. package/SVF-doxygen/html/html/classSVF_1_1CallSite.html +41 -41
  192. package/SVF-doxygen/html/html/classSVF_1_1CmpStmt.html +1 -1
  193. package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +1 -1
  194. package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +4 -4
  195. package/SVF-doxygen/html/html/classSVF_1_1CondPointsToSet.html +1 -1
  196. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +10 -10
  197. package/SVF-doxygen/html/html/classSVF_1_1CopyStmt.html +1 -1
  198. package/SVF-doxygen/html/html/classSVF_1_1CxtStmt.html +2 -2
  199. package/SVF-doxygen/html/html/classSVF_1_1CxtThread.html +2 -2
  200. package/SVF-doxygen/html/html/classSVF_1_1CxtThreadStmt.html +2 -2
  201. package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +51 -51
  202. package/SVF-doxygen/html/html/classSVF_1_1DDAClient.html +1 -1
  203. package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +5 -5
  204. package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +1 -1
  205. package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +1 -1
  206. package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG.html +1 -1
  207. package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker.html +2 -2
  208. package/SVF-doxygen/html/html/classSVF_1_1ExeState.html +8 -8
  209. package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.html +1 -1
  210. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +1 -1
  211. package/SVF-doxygen/html/html/classSVF_1_1FileChecker.html +4 -4
  212. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +5 -5
  213. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +10 -10
  214. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +5 -5
  215. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +7 -7
  216. package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +12 -12
  217. package/SVF-doxygen/html/html/classSVF_1_1FunEntryICFGNode.html +3 -3
  218. package/SVF-doxygen/html/html/classSVF_1_1FunExitICFGNode.html +5 -5
  219. package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient.html +5 -5
  220. package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +5 -5
  221. package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +1 -1
  222. package/SVF-doxygen/html/html/classSVF_1_1GepValVar.html +1 -1
  223. package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +4 -4
  224. package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +14 -14
  225. package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter.html +2 -2
  226. package/SVF-doxygen/html/html/classSVF_1_1IRAnnotator.html +1 -1
  227. package/SVF-doxygen/html/html/classSVF_1_1IRGraph.html +17 -17
  228. package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG.html +1 -1
  229. package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode.html +1 -1
  230. package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG.html +1 -1
  231. package/SVF-doxygen/html/html/classSVF_1_1IntraICFGNode.html +2 -2
  232. package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode.html +1 -1
  233. package/SVF-doxygen/html/html/classSVF_1_1IteratedDominanceFrontier.html +2 -2
  234. package/SVF-doxygen/html/html/classSVF_1_1LLVMLoopAnalysis.html +2 -2
  235. package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +1 -1
  236. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +18 -18
  237. package/SVF-doxygen/html/html/classSVF_1_1LoadStmt.html +1 -1
  238. package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +8 -8
  239. package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +26 -26
  240. package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +14 -14
  241. package/SVF-doxygen/html/html/classSVF_1_1MHP.html +25 -25
  242. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +20 -20
  243. package/SVF-doxygen/html/html/classSVF_1_1MSSAPHISVFGNode.html +1 -1
  244. package/SVF-doxygen/html/html/classSVF_1_1MTA.html +6 -6
  245. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +9 -9
  246. package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +21 -21
  247. package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +1 -1
  248. package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +4 -4
  249. package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +92 -92
  250. package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +18 -18
  251. package/SVF-doxygen/html/html/classSVF_1_1MemSSADF.html +1 -1
  252. package/SVF-doxygen/html/html/classSVF_1_1MutableDFPTData.html +1 -1
  253. package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator_1_1Clusterer.html +2 -2
  254. package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo.html +98 -98
  255. package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +2 -2
  256. package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +1 -1
  257. package/SVF-doxygen/html/html/classSVF_1_1PCG.html +14 -14
  258. package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +1 -1
  259. package/SVF-doxygen/html/html/classSVF_1_1PTACFInfoBuilder.html +3 -3
  260. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraph.html +2 -2
  261. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphEdge.html +1 -1
  262. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphNode.html +1 -1
  263. package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +18 -18
  264. package/SVF-doxygen/html/html/classSVF_1_1PathCondAllocator.html +18 -18
  265. package/SVF-doxygen/html/html/classSVF_1_1PhiStmt.html +1 -1
  266. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +83 -83
  267. package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +1 -1
  268. package/SVF-doxygen/html/html/classSVF_1_1RaceResultValidator.html +5 -5
  269. package/SVF-doxygen/html/html/classSVF_1_1RetICFGNode.html +1 -1
  270. package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +1 -1
  271. package/SVF-doxygen/html/html/classSVF_1_1SVFBasicBlock.html +3 -3
  272. package/SVF-doxygen/html/html/classSVF_1_1SVFFunction.html +29 -29
  273. package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +4 -4
  274. package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +6 -6
  275. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +2 -2
  276. package/SVF-doxygen/html/html/classSVF_1_1SVFGlobal.html +3 -3
  277. package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +21 -21
  278. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +105 -105
  279. package/SVF-doxygen/html/html/classSVF_1_1SVFModule.html +2 -2
  280. package/SVF-doxygen/html/html/classSVF_1_1SVFVar.html +2 -2
  281. package/SVF-doxygen/html/html/classSVF_1_1SaberAnnotator.html +1 -1
  282. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +4 -4
  283. package/SVF-doxygen/html/html/classSVF_1_1SelectStmt.html +1 -1
  284. package/SVF-doxygen/html/html/classSVF_1_1StInfo.html +38 -38
  285. package/SVF-doxygen/html/html/classSVF_1_1StoreStmt.html +1 -1
  286. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +130 -128
  287. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo-members.html +52 -50
  288. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +261 -206
  289. package/SVF-doxygen/html/html/classSVF_1_1TCT.html +18 -18
  290. package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +1 -1
  291. package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +1 -1
  292. package/SVF-doxygen/html/html/classSVF_1_1ThreadAPI.html +1 -1
  293. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +7 -7
  294. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraphBuilder.html +1 -1
  295. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +6 -6
  296. package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +21 -21
  297. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt.html +1 -1
  298. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode.html +1 -1
  299. package/SVF-doxygen/html/html/classSVF_1_1VFG.html +6 -6
  300. package/SVF-doxygen/html/html/classSVF_1_1ValVar.html +1 -1
  301. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +1 -1
  302. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +3 -3
  303. package/SVF-doxygen/html/html/dda_8cpp.html +1 -1
  304. package/SVF-doxygen/html/html/dda_8cpp_source.html +1 -1
  305. package/SVF-doxygen/html/html/functions_b.html +6 -3
  306. package/SVF-doxygen/html/html/functions_func_i.html +5 -5
  307. package/SVF-doxygen/html/html/functions_i.html +6 -6
  308. package/SVF-doxygen/html/html/functions_l.html +1 -1
  309. package/SVF-doxygen/html/html/functions_n.html +3 -0
  310. package/SVF-doxygen/html/html/functions_o.html +3 -3
  311. package/SVF-doxygen/html/html/functions_p.html +19 -15
  312. package/SVF-doxygen/html/html/functions_r.html +5 -3
  313. package/SVF-doxygen/html/html/functions_s.html +12 -10
  314. package/SVF-doxygen/html/html/functions_v.html +3 -3
  315. package/SVF-doxygen/html/html/functions_vars_b.html +3 -0
  316. package/SVF-doxygen/html/html/functions_vars_n.html +3 -0
  317. package/SVF-doxygen/html/html/functions_w.html +10 -6
  318. package/SVF-doxygen/html/html/globals_c.html +105 -102
  319. package/SVF-doxygen/html/html/globals_r.html +3 -3
  320. package/SVF-doxygen/html/html/globals_s.html +4 -6
  321. package/SVF-doxygen/html/html/globals_type.html +3 -0
  322. package/SVF-doxygen/html/html/mta_8cpp.html +1 -1
  323. package/SVF-doxygen/html/html/mta_8cpp_source.html +1 -1
  324. package/SVF-doxygen/html/html/namespaceSVF.html +17 -35
  325. package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +502 -443
  326. package/SVF-doxygen/html/html/namespaceSVF_1_1cppUtil.html +62 -62
  327. package/SVF-doxygen/html/html/namespacemembers_c.html +0 -3
  328. package/SVF-doxygen/html/html/namespacemembers_func.html +14 -8
  329. package/SVF-doxygen/html/html/namespacemembers_i.html +10 -4
  330. package/SVF-doxygen/html/html/namespacemembers_type.html +0 -3
  331. package/SVF-doxygen/html/html/saber_8cpp.html +1 -1
  332. package/SVF-doxygen/html/html/saber_8cpp_source.html +1 -1
  333. package/SVF-doxygen/html/html/search/all_10.js +9 -9
  334. package/SVF-doxygen/html/html/search/all_12.js +3 -3
  335. package/SVF-doxygen/html/html/search/all_13.js +9 -9
  336. package/SVF-doxygen/html/html/search/all_14.js +5 -5
  337. package/SVF-doxygen/html/html/search/all_15.js +1 -1
  338. package/SVF-doxygen/html/html/search/all_16.js +2 -2
  339. package/SVF-doxygen/html/html/search/all_17.js +1 -1
  340. package/SVF-doxygen/html/html/search/all_2.js +1 -0
  341. package/SVF-doxygen/html/html/search/all_3.js +1 -1
  342. package/SVF-doxygen/html/html/search/all_9.js +5 -5
  343. package/SVF-doxygen/html/html/search/all_c.js +2 -2
  344. package/SVF-doxygen/html/html/search/all_e.js +2 -1
  345. package/SVF-doxygen/html/html/search/all_f.js +1 -1
  346. package/SVF-doxygen/html/html/search/functions_8.js +3 -3
  347. package/SVF-doxygen/html/html/search/typedefs_2.js +1 -1
  348. package/SVF-doxygen/html/html/search/variables_14.js +3 -3
  349. package/SVF-doxygen/html/html/search/variables_15.js +1 -1
  350. package/SVF-doxygen/html/html/search/variables_2.js +1 -0
  351. package/SVF-doxygen/html/html/search/variables_e.js +2 -1
  352. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +1 -1
  353. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +1 -1
  354. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01PTACallGraph_01_5_01_4.html +2 -2
  355. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CallSite_01_4.html +3 -3
  356. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CxtProc_01_4.html +1 -1
  357. package/SVF-doxygen/html/html/svf-ex_8cpp.html +1 -1
  358. package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +1 -1
  359. package/SVF-doxygen/html/html/wpa_8cpp.html +1 -1
  360. package/SVF-doxygen/html/html/wpa_8cpp_source.html +1 -1
  361. package/include/MemoryModel/SymbolTableInfo.h +3 -2
  362. package/include/SVF-FE/BasicTypes.h +1 -0
  363. package/include/SVF-FE/Graph2Json.h +1 -1
  364. package/include/SVF-FE/LLVMUtil.h +9 -373
  365. package/include/Util/BasicTypes.h +0 -1
  366. package/include/Util/SVFUtil.h +379 -0
  367. package/lib/Graphs/PTACallGraph.cpp +1 -1
  368. package/lib/Graphs/SVFG.cpp +1 -1
  369. package/lib/Graphs/SVFGReadWrite.cpp +1 -1
  370. package/lib/Graphs/VFG.cpp +1 -1
  371. package/lib/MSSA/SVFGBuilder.cpp +1 -1
  372. package/lib/MemoryModel/PointerAnalysis.cpp +1 -0
  373. package/lib/MemoryModel/SVFVariables.cpp +1 -1
  374. package/lib/MemoryModel/SymbolTableInfo.cpp +7 -37
  375. package/lib/SVF-FE/CPPUtil.cpp +1 -0
  376. package/lib/SVF-FE/CallGraphBuilder.cpp +1 -1
  377. package/lib/SVF-FE/LLVMUtil.cpp +34 -8
  378. package/lib/SVF-FE/SVFIRBuilder.cpp +1 -1
  379. package/lib/SVF-FE/SymbolTableBuilder.cpp +13 -5
  380. package/lib/Util/ExeState.cpp +1 -1
  381. package/lib/Util/SVFUtil.cpp +9 -1
  382. package/lib/WPA/Andersen.cpp +1 -1
  383. package/lib/WPA/VersionedFlowSensitiveStat.cpp +1 -1
  384. package/package.json +1 -1
@@ -66,39 +66,39 @@ $(function() {
66
66
  <div class="title">CPPUtil.h</div> </div>
67
67
  </div><!--header-->
68
68
  <div class="contents">
69
- <a href="CPPUtil_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">//===- CPPUtil.h -- Base class of pointer analyses ---------------------------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// SVF: Static Value-Flow Analysis</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Copyright (C) &lt;2013-2017&gt; &lt;Yulei Sui&gt;</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// This program is free software: you can redistribute it and/or modify</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">// it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// the Free Software Foundation, either version 3 of the License, or</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// (at your option) any later version.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">// GNU General Public License for more details.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">// You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment">// along with this program. If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * CPPUtil.h</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * Created on: Apr 13, 2016</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * Author: Xiaokang Fan</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#ifndef CPPUtil_H_</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#define CPPUtil_H_</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="Util_2BasicTypes_8h.html">Util/BasicTypes.h</a>&quot;</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;{</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="keyword">class </span>CHGraph;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="comment"> * Util class to assist pointer analysis for cpp programs</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1cppUtil.html"> 43</a></span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacecppUtil.html">cppUtil</a></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;{</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="structSVF_1_1cppUtil_1_1DemangledName.html"> 46</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html">DemangledName</a></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;{</div><div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297"> 48</a></span>&#160; std::string <a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>;</div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02"> 49</a></span>&#160; std::string <a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a>;</div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="structSVF_1_1cppUtil_1_1DemangledName.html#af6117df8aec7f4c077058fa8f00b0243"> 50</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#af6117df8aec7f4c077058fa8f00b0243">isThunkFunc</a>;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;};</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="keyword">struct </span><a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html">DemangledName</a> <a class="code" href="namespaceSVF_1_1cppUtil.html#a1007c092efaeae41002efd91b803a7f6">demangle</a>(const <a class="code" href="namespacestd.html">std</a>::string &amp;name);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;std::string <a class="code" href="namespaceSVF_1_1cppUtil.html#a1cf2e4671b16b477cc779c72f2419234">getBeforeBrackets</a>(const std::string &amp;name);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;bool <a class="code" href="namespaceSVF_1_1cppUtil.html#aeef0f5c6486379043a7d47b0635f2667">isValVtbl</a>(const Value *val);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;bool <a class="code" href="namespaceSVF_1_1cppUtil.html#a1e99d5cf28e0d6546e0d85b805a7e371">isLoadVtblInst</a>(const LoadInst *loadInst);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;bool <a class="code" href="namespaceSVF_1_1cppUtil.html#aca6465c72effcaddeb34f55da4555754">isVirtualCallSite</a>(CallSite cs);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;bool <a class="code" href="namespaceSVF_1_1cppUtil.html#ad6f9578cdce518141772a11617160da8">isConstructor</a>(const Function *F);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;bool <a class="code" href="namespaceSVF_1_1cppUtil.html#af19bec54621f4605bac4feaf9f73803c">isDestructor</a>(const Function *F);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;bool <a class="code" href="namespaceSVF_1_1cppUtil.html#a917c4bd2d5fd1354b5069bf0a68533d9">isCPPThunkFunction</a>(const Function *F);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;const <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *<a class="code" href="namespaceSVF_1_1cppUtil.html#ac9c6d4315e7a1a826add7ed9cf924553">getThunkTarget</a>(const Function *F);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="comment"> * VtableA = {&amp;A::foo}</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="comment"> * A::A(this){</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="comment"> * *this = &amp;VtableA;</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="comment"> * }</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="comment"> * A* p = new A;</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="comment"> * cs: p-&gt;foo(...)</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;<span class="comment"> * ==&gt;</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="comment"> * vtptr = *p;</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="comment"> * vfn = &amp;vtptr[i]</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<span class="comment"> * %funp = *vfn</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;<span class="comment"> * call %funp(p,...)</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;<span class="comment"> * getConstructorThisPtr(A) return &quot;this&quot; pointer</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;<span class="comment"> * getVCallThisPtr(cs) return p (this pointer)</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;<span class="comment"> * getVCallVtblPtr(cs) return vtptr</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;<span class="comment"> * getVCallIdx(cs) return i</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;<span class="comment"> * getClassNameFromVtblObj(VtableA) return</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;<span class="comment"> * getClassNameFromType(type of p) return type A</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;const <a class="code" href="namespaceSVF.html#a58cdfbc4160cae08745b67844ac29801">Argument</a>* <a class="code" href="namespaceSVF_1_1cppUtil.html#a26c3ceb82a398663284690c898a5354d">getConstructorThisPtr</a>(const Function* fun);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;const <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *<a class="code" href="namespaceSVF_1_1cppUtil.html#a7c9507812041b5de8dbbca5b602fefbd">getVCallThisPtr</a>(CallSite cs);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;const <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *<a class="code" href="namespaceSVF_1_1cppUtil.html#a3b00cc9770022f124958513bf1e52a05">getVCallVtblPtr</a>(CallSite cs);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;<a class="code" href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">u64_t</a> <a class="code" href="namespaceSVF_1_1cppUtil.html#ad2a35c1d2e357690e634bb250a68795d">getVCallIdx</a>(CallSite cs);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;std::string <a class="code" href="namespaceSVF_1_1cppUtil.html#ad83c097f1c77cdf52fc219ef07ee0b1a">getClassNameFromVtblObj</a>(const Value *value);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;std::string <a class="code" href="namespaceSVF_1_1cppUtil.html#a891719bac36ebb6c001f073dfa5a9e7b">getClassNameFromType</a>(const Type *ty);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;std::string <a class="code" href="namespaceSVF_1_1cppUtil.html#a3bed7bc0a0ae580841ca049f91690ff7">getClassNameOfThisPtr</a>(CallSite cs);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;std::string <a class="code" href="namespaceSVF_1_1cppUtil.html#a0a67c31dcc44784b09dca54b4b7c624a">getFunNameOfVCallSite</a>(CallSite cs);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;bool <a class="code" href="namespaceSVF_1_1cppUtil.html#abcba23ffa41fe5b456289e528d1b4c4e">VCallInCtorOrDtor</a>(CallSite cs);</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;<span class="comment"> * A(A* this){</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="comment"> * store this this.addr;</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;<span class="comment"> * tmp = load this.addr;</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="comment"> * this1 = bitcast(tmp);</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;<span class="comment"> * B(this1);</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;<span class="comment"> * }</span></div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;<span class="comment"> * this and this1 are the same thisPtr in the constructor</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;bool <a class="code" href="namespaceSVF_1_1cppUtil.html#a5dd3230226002e126f6b0a877f9550ce">isSameThisPtrInConstructor</a>(const Argument* thisPtr1, const Value* thisPtr2);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;</div><div class="line"><a name="l00108"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1cppUtil_1_1ctir.html"> 108</a></span>&#160;namespace ctir</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;{</div><div class="line"><a name="l00113"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1cppUtil_1_1ctir.html#a0cd5347bc8043d4306e66a4a96005ace"> 113</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="namespaceSVF_1_1cppUtil_1_1ctir.html#a0cd5347bc8043d4306e66a4a96005ace">derefMDName</a> = <span class="stringliteral">&quot;ctir&quot;</span>;</div><div class="line"><a name="l00116"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1cppUtil_1_1ctir.html#aa4630844aa25aa4801659304a2552058"> 116</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="namespaceSVF_1_1cppUtil_1_1ctir.html#aa4630844aa25aa4801659304a2552058">vtMDName</a> = <span class="stringliteral">&quot;ctir.vt&quot;</span>;</div><div class="line"><a name="l00119"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1cppUtil_1_1ctir.html#a02b3f4190d325c921922c25e319dc8d9"> 119</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="namespaceSVF_1_1cppUtil_1_1ctir.html#a02b3f4190d325c921922c25e319dc8d9">vtInitMDName</a> = <span class="stringliteral">&quot;ctir.vt.init&quot;</span>;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;</div><div class="line"><a name="l00122"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1cppUtil_1_1ctir.html#a05c7c51164928786d70713094db7f3f3"> 122</a></span>&#160;<span class="keyword">const</span> uint32_t <a class="code" href="namespaceSVF_1_1cppUtil_1_1ctir.html#a05c7c51164928786d70713094db7f3f3">moduleFlagValue</a> = 1;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;}</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;} <span class="comment">// End namespace cppUtil</span></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;} <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* CPPUtil_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="namespaceSVF_1_1cppUtil_html_ad2a35c1d2e357690e634bb250a68795d"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#ad2a35c1d2e357690e634bb250a68795d">SVF::cppUtil::getVCallIdx</a></div><div class="ttdeci">u64_t getVCallIdx(CallSite cs)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#l00397">CPPUtil.cpp:397</a></div></div>
69
+ <a href="CPPUtil_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">//===- CPPUtil.h -- Base class of pointer analyses ---------------------------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// SVF: Static Value-Flow Analysis</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Copyright (C) &lt;2013-2017&gt; &lt;Yulei Sui&gt;</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// This program is free software: you can redistribute it and/or modify</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">// it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// the Free Software Foundation, either version 3 of the License, or</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// (at your option) any later version.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">// GNU General Public License for more details.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">// You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment">// along with this program. If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * CPPUtil.h</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * Created on: Apr 13, 2016</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * Author: Xiaokang Fan</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#ifndef CPPUtil_H_</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#define CPPUtil_H_</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="Util_2BasicTypes_8h.html">Util/BasicTypes.h</a>&quot;</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;{</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="keyword">class </span>CHGraph;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="comment"> * Util class to assist pointer analysis for cpp programs</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1cppUtil.html"> 43</a></span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacecppUtil.html">cppUtil</a></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;{</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="structSVF_1_1cppUtil_1_1DemangledName.html"> 46</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html">DemangledName</a></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;{</div><div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297"> 48</a></span>&#160; std::string <a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>;</div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02"> 49</a></span>&#160; std::string <a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a>;</div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="structSVF_1_1cppUtil_1_1DemangledName.html#af6117df8aec7f4c077058fa8f00b0243"> 50</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#af6117df8aec7f4c077058fa8f00b0243">isThunkFunc</a>;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;};</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="keyword">struct </span><a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html">DemangledName</a> <a class="code" href="namespaceSVF_1_1cppUtil.html#a1007c092efaeae41002efd91b803a7f6">demangle</a>(const <a class="code" href="namespacestd.html">std</a>::string &amp;name);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;std::string <a class="code" href="namespaceSVF_1_1cppUtil.html#a1cf2e4671b16b477cc779c72f2419234">getBeforeBrackets</a>(const std::string &amp;name);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;bool <a class="code" href="namespaceSVF_1_1cppUtil.html#aeef0f5c6486379043a7d47b0635f2667">isValVtbl</a>(const Value *val);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;bool <a class="code" href="namespaceSVF_1_1cppUtil.html#a1e99d5cf28e0d6546e0d85b805a7e371">isLoadVtblInst</a>(const LoadInst *loadInst);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;bool <a class="code" href="namespaceSVF_1_1cppUtil.html#aca6465c72effcaddeb34f55da4555754">isVirtualCallSite</a>(CallSite cs);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;bool <a class="code" href="namespaceSVF_1_1cppUtil.html#ad6f9578cdce518141772a11617160da8">isConstructor</a>(const Function *F);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;bool <a class="code" href="namespaceSVF_1_1cppUtil.html#af19bec54621f4605bac4feaf9f73803c">isDestructor</a>(const Function *F);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;bool <a class="code" href="namespaceSVF_1_1cppUtil.html#a917c4bd2d5fd1354b5069bf0a68533d9">isCPPThunkFunction</a>(const Function *F);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;const <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *<a class="code" href="namespaceSVF_1_1cppUtil.html#ac9c6d4315e7a1a826add7ed9cf924553">getThunkTarget</a>(const Function *F);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="comment"> * VtableA = {&amp;A::foo}</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="comment"> * A::A(this){</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="comment"> * *this = &amp;VtableA;</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="comment"> * }</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="comment"> * A* p = new A;</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="comment"> * cs: p-&gt;foo(...)</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;<span class="comment"> * ==&gt;</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="comment"> * vtptr = *p;</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="comment"> * vfn = &amp;vtptr[i]</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<span class="comment"> * %funp = *vfn</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;<span class="comment"> * call %funp(p,...)</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;<span class="comment"> * getConstructorThisPtr(A) return &quot;this&quot; pointer</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;<span class="comment"> * getVCallThisPtr(cs) return p (this pointer)</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;<span class="comment"> * getVCallVtblPtr(cs) return vtptr</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;<span class="comment"> * getVCallIdx(cs) return i</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;<span class="comment"> * getClassNameFromVtblObj(VtableA) return</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;<span class="comment"> * getClassNameFromType(type of p) return type A</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;const <a class="code" href="namespaceSVF.html#a58cdfbc4160cae08745b67844ac29801">Argument</a>* <a class="code" href="namespaceSVF_1_1cppUtil.html#a26c3ceb82a398663284690c898a5354d">getConstructorThisPtr</a>(const Function* fun);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;const <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *<a class="code" href="namespaceSVF_1_1cppUtil.html#a7c9507812041b5de8dbbca5b602fefbd">getVCallThisPtr</a>(CallSite cs);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;const <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *<a class="code" href="namespaceSVF_1_1cppUtil.html#a3b00cc9770022f124958513bf1e52a05">getVCallVtblPtr</a>(CallSite cs);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;<a class="code" href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">u64_t</a> <a class="code" href="namespaceSVF_1_1cppUtil.html#ad2a35c1d2e357690e634bb250a68795d">getVCallIdx</a>(CallSite cs);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;std::string <a class="code" href="namespaceSVF_1_1cppUtil.html#ad83c097f1c77cdf52fc219ef07ee0b1a">getClassNameFromVtblObj</a>(const Value *value);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;std::string <a class="code" href="namespaceSVF_1_1cppUtil.html#a891719bac36ebb6c001f073dfa5a9e7b">getClassNameFromType</a>(const Type *ty);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;std::string <a class="code" href="namespaceSVF_1_1cppUtil.html#a3bed7bc0a0ae580841ca049f91690ff7">getClassNameOfThisPtr</a>(CallSite cs);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;std::string <a class="code" href="namespaceSVF_1_1cppUtil.html#a0a67c31dcc44784b09dca54b4b7c624a">getFunNameOfVCallSite</a>(CallSite cs);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;bool <a class="code" href="namespaceSVF_1_1cppUtil.html#abcba23ffa41fe5b456289e528d1b4c4e">VCallInCtorOrDtor</a>(CallSite cs);</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;<span class="comment"> * A(A* this){</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="comment"> * store this this.addr;</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;<span class="comment"> * tmp = load this.addr;</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="comment"> * this1 = bitcast(tmp);</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;<span class="comment"> * B(this1);</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;<span class="comment"> * }</span></div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;<span class="comment"> * this and this1 are the same thisPtr in the constructor</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;bool <a class="code" href="namespaceSVF_1_1cppUtil.html#a5dd3230226002e126f6b0a877f9550ce">isSameThisPtrInConstructor</a>(const Argument* thisPtr1, const Value* thisPtr2);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;</div><div class="line"><a name="l00108"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1cppUtil_1_1ctir.html"> 108</a></span>&#160;namespace ctir</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;{</div><div class="line"><a name="l00113"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1cppUtil_1_1ctir.html#a0cd5347bc8043d4306e66a4a96005ace"> 113</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="namespaceSVF_1_1cppUtil_1_1ctir.html#a0cd5347bc8043d4306e66a4a96005ace">derefMDName</a> = <span class="stringliteral">&quot;ctir&quot;</span>;</div><div class="line"><a name="l00116"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1cppUtil_1_1ctir.html#aa4630844aa25aa4801659304a2552058"> 116</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="namespaceSVF_1_1cppUtil_1_1ctir.html#aa4630844aa25aa4801659304a2552058">vtMDName</a> = <span class="stringliteral">&quot;ctir.vt&quot;</span>;</div><div class="line"><a name="l00119"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1cppUtil_1_1ctir.html#a02b3f4190d325c921922c25e319dc8d9"> 119</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="namespaceSVF_1_1cppUtil_1_1ctir.html#a02b3f4190d325c921922c25e319dc8d9">vtInitMDName</a> = <span class="stringliteral">&quot;ctir.vt.init&quot;</span>;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;</div><div class="line"><a name="l00122"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1cppUtil_1_1ctir.html#a05c7c51164928786d70713094db7f3f3"> 122</a></span>&#160;<span class="keyword">const</span> uint32_t <a class="code" href="namespaceSVF_1_1cppUtil_1_1ctir.html#a05c7c51164928786d70713094db7f3f3">moduleFlagValue</a> = 1;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;}</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;} <span class="comment">// End namespace cppUtil</span></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;} <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* CPPUtil_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="namespaceSVF_1_1cppUtil_html_ad2a35c1d2e357690e634bb250a68795d"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#ad2a35c1d2e357690e634bb250a68795d">SVF::cppUtil::getVCallIdx</a></div><div class="ttdeci">u64_t getVCallIdx(CallSite cs)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#l00398">CPPUtil.cpp:398</a></div></div>
70
70
  <div class="ttc" id="namespaceSVF_1_1cppUtil_1_1ctir_html_a02b3f4190d325c921922c25e319dc8d9"><div class="ttname"><a href="namespaceSVF_1_1cppUtil_1_1ctir.html#a02b3f4190d325c921922c25e319dc8d9">SVF::cppUtil::ctir::vtInitMDName</a></div><div class="ttdeci">const std::string vtInitMDName</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8h_source.html#l00119">CPPUtil.h:119</a></div></div>
71
- <div class="ttc" id="namespaceSVF_1_1cppUtil_html_aca6465c72effcaddeb34f55da4555754"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#aca6465c72effcaddeb34f55da4555754">SVF::cppUtil::isVirtualCallSite</a></div><div class="ttdeci">bool isVirtualCallSite(CallSite cs)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#l00259">CPPUtil.cpp:259</a></div></div>
71
+ <div class="ttc" id="namespaceSVF_1_1cppUtil_html_aca6465c72effcaddeb34f55da4555754"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#aca6465c72effcaddeb34f55da4555754">SVF::cppUtil::isVirtualCallSite</a></div><div class="ttdeci">bool isVirtualCallSite(CallSite cs)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#l00260">CPPUtil.cpp:260</a></div></div>
72
72
  <div class="ttc" id="Util_2BasicTypes_8h_html"><div class="ttname"><a href="Util_2BasicTypes_8h.html">BasicTypes.h</a></div></div>
73
73
  <div class="ttc" id="structSVF_1_1cppUtil_1_1DemangledName_html_af6117df8aec7f4c077058fa8f00b0243"><div class="ttname"><a href="structSVF_1_1cppUtil_1_1DemangledName.html#af6117df8aec7f4c077058fa8f00b0243">SVF::cppUtil::DemangledName::isThunkFunc</a></div><div class="ttdeci">bool isThunkFunc</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8h_source.html#l00050">CPPUtil.h:50</a></div></div>
74
- <div class="ttc" id="namespaceSVF_1_1cppUtil_html_ad6f9578cdce518141772a11617160da8"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#ad6f9578cdce518141772a11617160da8">SVF::cppUtil::isConstructor</a></div><div class="ttdeci">bool isConstructor(const Function *F)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#l00460">CPPUtil.cpp:460</a></div></div>
74
+ <div class="ttc" id="namespaceSVF_1_1cppUtil_html_ad6f9578cdce518141772a11617160da8"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#ad6f9578cdce518141772a11617160da8">SVF::cppUtil::isConstructor</a></div><div class="ttdeci">bool isConstructor(const Function *F)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#l00461">CPPUtil.cpp:461</a></div></div>
75
75
  <div class="ttc" id="structSVF_1_1cppUtil_1_1DemangledName_html"><div class="ttname"><a href="structSVF_1_1cppUtil_1_1DemangledName.html">SVF::cppUtil::DemangledName</a></div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8h_source.html#l00046">CPPUtil.h:46</a></div></div>
76
76
  <div class="ttc" id="namespacestd_html"><div class="ttname"><a href="namespacestd.html">std</a></div></div>
77
- <div class="ttc" id="namespaceSVF_1_1cppUtil_html_a891719bac36ebb6c001f073dfa5a9e7b"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a891719bac36ebb6c001f073dfa5a9e7b">SVF::cppUtil::getClassNameFromType</a></div><div class="ttdeci">std::string getClassNameFromType(const Type *ty)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#l00417">CPPUtil.cpp:417</a></div></div>
78
- <div class="ttc" id="namespaceSVF_1_1cppUtil_html_af19bec54621f4605bac4feaf9f73803c"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#af19bec54621f4605bac4feaf9f73803c">SVF::cppUtil::isDestructor</a></div><div class="ttdeci">bool isDestructor(const Function *F)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#l00492">CPPUtil.cpp:492</a></div></div>
77
+ <div class="ttc" id="namespaceSVF_1_1cppUtil_html_a891719bac36ebb6c001f073dfa5a9e7b"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a891719bac36ebb6c001f073dfa5a9e7b">SVF::cppUtil::getClassNameFromType</a></div><div class="ttdeci">std::string getClassNameFromType(const Type *ty)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#l00418">CPPUtil.cpp:418</a></div></div>
78
+ <div class="ttc" id="namespaceSVF_1_1cppUtil_html_af19bec54621f4605bac4feaf9f73803c"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#af19bec54621f4605bac4feaf9f73803c">SVF::cppUtil::isDestructor</a></div><div class="ttdeci">bool isDestructor(const Function *F)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#l00493">CPPUtil.cpp:493</a></div></div>
79
79
  <div class="ttc" id="namespaceSVF_1_1cppUtil_1_1ctir_html_a0cd5347bc8043d4306e66a4a96005ace"><div class="ttname"><a href="namespaceSVF_1_1cppUtil_1_1ctir.html#a0cd5347bc8043d4306e66a4a96005ace">SVF::cppUtil::ctir::derefMDName</a></div><div class="ttdeci">const std::string derefMDName</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8h_source.html#l00113">CPPUtil.h:113</a></div></div>
80
- <div class="ttc" id="namespaceSVF_1_1cppUtil_html_a5dd3230226002e126f6b0a877f9550ce"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a5dd3230226002e126f6b0a877f9550ce">SVF::cppUtil::isSameThisPtrInConstructor</a></div><div class="ttdeci">bool isSameThisPtrInConstructor(const Argument *thisPtr1, const Value *thisPtr2)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#l00345">CPPUtil.cpp:345</a></div></div>
81
- <div class="ttc" id="namespaceSVF_1_1cppUtil_html_a917c4bd2d5fd1354b5069bf0a68533d9"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a917c4bd2d5fd1354b5069bf0a68533d9">SVF::cppUtil::isCPPThunkFunction</a></div><div class="ttdeci">bool isCPPThunkFunction(const Function *F)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#l00291">CPPUtil.cpp:291</a></div></div>
82
- <div class="ttc" id="namespaceSVF_1_1cppUtil_html_abcba23ffa41fe5b456289e528d1b4c4e"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#abcba23ffa41fe5b456289e528d1b4c4e">SVF::cppUtil::VCallInCtorOrDtor</a></div><div class="ttdeci">bool VCallInCtorOrDtor(CallSite cs)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#l00569">CPPUtil.cpp:569</a></div></div>
83
- <div class="ttc" id="namespaceSVF_1_1cppUtil_html_a26c3ceb82a398663284690c898a5354d"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a26c3ceb82a398663284690c898a5354d">SVF::cppUtil::getConstructorThisPtr</a></div><div class="ttdeci">const Argument * getConstructorThisPtr(const Function *fun)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#l00371">CPPUtil.cpp:371</a></div></div>
84
- <div class="ttc" id="namespaceSVF_1_1cppUtil_html_a1e99d5cf28e0d6546e0d85b805a7e371"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a1e99d5cf28e0d6546e0d85b805a7e371">SVF::cppUtil::isLoadVtblInst</a></div><div class="ttdeci">bool isLoadVtblInst(const LoadInst *loadInst)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#l00228">CPPUtil.cpp:228</a></div></div>
85
- <div class="ttc" id="namespaceSVF_1_1cppUtil_html_ac9c6d4315e7a1a826add7ed9cf924553"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#ac9c6d4315e7a1a826add7ed9cf924553">SVF::cppUtil::getThunkTarget</a></div><div class="ttdeci">const Function * getThunkTarget(const Function *F)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#l00297">CPPUtil.cpp:297</a></div></div>
86
- <div class="ttc" id="namespaceSVF_1_1cppUtil_html_ad83c097f1c77cdf52fc219ef07ee0b1a"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#ad83c097f1c77cdf52fc219ef07ee0b1a">SVF::cppUtil::getClassNameFromVtblObj</a></div><div class="ttdeci">std::string getClassNameFromVtblObj(const Value *value)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#l00440">CPPUtil.cpp:440</a></div></div>
80
+ <div class="ttc" id="namespaceSVF_1_1cppUtil_html_a5dd3230226002e126f6b0a877f9550ce"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a5dd3230226002e126f6b0a877f9550ce">SVF::cppUtil::isSameThisPtrInConstructor</a></div><div class="ttdeci">bool isSameThisPtrInConstructor(const Argument *thisPtr1, const Value *thisPtr2)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#l00346">CPPUtil.cpp:346</a></div></div>
81
+ <div class="ttc" id="namespaceSVF_1_1cppUtil_html_a917c4bd2d5fd1354b5069bf0a68533d9"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a917c4bd2d5fd1354b5069bf0a68533d9">SVF::cppUtil::isCPPThunkFunction</a></div><div class="ttdeci">bool isCPPThunkFunction(const Function *F)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#l00292">CPPUtil.cpp:292</a></div></div>
82
+ <div class="ttc" id="namespaceSVF_1_1cppUtil_html_abcba23ffa41fe5b456289e528d1b4c4e"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#abcba23ffa41fe5b456289e528d1b4c4e">SVF::cppUtil::VCallInCtorOrDtor</a></div><div class="ttdeci">bool VCallInCtorOrDtor(CallSite cs)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#l00570">CPPUtil.cpp:570</a></div></div>
83
+ <div class="ttc" id="namespaceSVF_1_1cppUtil_html_a26c3ceb82a398663284690c898a5354d"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a26c3ceb82a398663284690c898a5354d">SVF::cppUtil::getConstructorThisPtr</a></div><div class="ttdeci">const Argument * getConstructorThisPtr(const Function *fun)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#l00372">CPPUtil.cpp:372</a></div></div>
84
+ <div class="ttc" id="namespaceSVF_1_1cppUtil_html_a1e99d5cf28e0d6546e0d85b805a7e371"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a1e99d5cf28e0d6546e0d85b805a7e371">SVF::cppUtil::isLoadVtblInst</a></div><div class="ttdeci">bool isLoadVtblInst(const LoadInst *loadInst)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#l00229">CPPUtil.cpp:229</a></div></div>
85
+ <div class="ttc" id="namespaceSVF_1_1cppUtil_html_ac9c6d4315e7a1a826add7ed9cf924553"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#ac9c6d4315e7a1a826add7ed9cf924553">SVF::cppUtil::getThunkTarget</a></div><div class="ttdeci">const Function * getThunkTarget(const Function *F)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#l00298">CPPUtil.cpp:298</a></div></div>
86
+ <div class="ttc" id="namespaceSVF_1_1cppUtil_html_ad83c097f1c77cdf52fc219ef07ee0b1a"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#ad83c097f1c77cdf52fc219ef07ee0b1a">SVF::cppUtil::getClassNameFromVtblObj</a></div><div class="ttdeci">std::string getClassNameFromVtblObj(const Value *value)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#l00441">CPPUtil.cpp:441</a></div></div>
87
87
  <div class="ttc" id="namespaceSVF_1_1cppUtil_1_1ctir_html_aa4630844aa25aa4801659304a2552058"><div class="ttname"><a href="namespaceSVF_1_1cppUtil_1_1ctir.html#aa4630844aa25aa4801659304a2552058">SVF::cppUtil::ctir::vtMDName</a></div><div class="ttdeci">const std::string vtMDName</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8h_source.html#l00116">CPPUtil.h:116</a></div></div>
88
88
  <div class="ttc" id="namespaceSVF_html_a5faee14fa1dd41447bc73ac365fe33c1"><div class="ttname"><a href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a></div><div class="ttdeci">llvm::Function Function</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00070">BasicTypes.h:70</a></div></div>
89
89
  <div class="ttc" id="structSVF_1_1cppUtil_1_1DemangledName_html_a1dd17b240663bc9412adefde82385e02"><div class="ttname"><a href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">SVF::cppUtil::DemangledName::funcName</a></div><div class="ttdeci">std::string funcName</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8h_source.html#l00049">CPPUtil.h:49</a></div></div>
90
- <div class="ttc" id="namespaceSVF_1_1cppUtil_html_a7c9507812041b5de8dbbca5b602fefbd"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a7c9507812041b5de8dbbca5b602fefbd">SVF::cppUtil::getVCallThisPtr</a></div><div class="ttdeci">const Value * getVCallThisPtr(CallSite cs)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#l00321">CPPUtil.cpp:321</a></div></div>
90
+ <div class="ttc" id="namespaceSVF_1_1cppUtil_html_a7c9507812041b5de8dbbca5b602fefbd"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a7c9507812041b5de8dbbca5b602fefbd">SVF::cppUtil::getVCallThisPtr</a></div><div class="ttdeci">const Value * getVCallThisPtr(CallSite cs)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#l00322">CPPUtil.cpp:322</a></div></div>
91
91
  <div class="ttc" id="namespaceSVF_1_1cppUtil_1_1ctir_html_a05c7c51164928786d70713094db7f3f3"><div class="ttname"><a href="namespaceSVF_1_1cppUtil_1_1ctir.html#a05c7c51164928786d70713094db7f3f3">SVF::cppUtil::ctir::moduleFlagValue</a></div><div class="ttdeci">const uint32_t moduleFlagValue</div><div class="ttdoc">Value we expect a ctir-annotated module to have. </div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8h_source.html#l00122">CPPUtil.h:122</a></div></div>
92
92
  <div class="ttc" id="structSVF_1_1cppUtil_1_1DemangledName_html_a5cd207bce618521166e6fa235014b297"><div class="ttname"><a href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">SVF::cppUtil::DemangledName::className</a></div><div class="ttdeci">std::string className</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8h_source.html#l00048">CPPUtil.h:48</a></div></div>
93
93
  <div class="ttc" id="namespaceSVF_html_a58cdfbc4160cae08745b67844ac29801"><div class="ttname"><a href="namespaceSVF.html#a58cdfbc4160cae08745b67844ac29801">SVF::Argument</a></div><div class="ttdeci">llvm::Argument Argument</div><div class="ttdoc">LLVM Aliases and constants. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00093">BasicTypes.h:93</a></div></div>
94
- <div class="ttc" id="namespaceSVF_1_1cppUtil_html_aeef0f5c6486379043a7d47b0635f2667"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#aeef0f5c6486379043a7d47b0635f2667">SVF::cppUtil::isValVtbl</a></div><div class="ttdeci">bool isValVtbl(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#l00123">CPPUtil.cpp:123</a></div></div>
94
+ <div class="ttc" id="namespaceSVF_1_1cppUtil_html_aeef0f5c6486379043a7d47b0635f2667"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#aeef0f5c6486379043a7d47b0635f2667">SVF::cppUtil::isValVtbl</a></div><div class="ttdeci">bool isValVtbl(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#l00124">CPPUtil.cpp:124</a></div></div>
95
95
  <div class="ttc" id="namespaceSVF_1_1cppUtil_html_a1cf2e4671b16b477cc779c72f2419234"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a1cf2e4671b16b477cc779c72f2419234">SVF::cppUtil::getBeforeBrackets</a></div><div class="ttdeci">std::string getBeforeBrackets(const std::string &amp;name)</div></div>
96
- <div class="ttc" id="namespaceSVF_1_1cppUtil_html_a3b00cc9770022f124958513bf1e52a05"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a3b00cc9770022f124958513bf1e52a05">SVF::cppUtil::getVCallVtblPtr</a></div><div class="ttdeci">const Value * getVCallVtblPtr(CallSite cs)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#l00386">CPPUtil.cpp:386</a></div></div>
97
- <div class="ttc" id="namespaceSVF_1_1cppUtil_html_a3bed7bc0a0ae580841ca049f91690ff7"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a3bed7bc0a0ae580841ca049f91690ff7">SVF::cppUtil::getClassNameOfThisPtr</a></div><div class="ttdeci">std::string getClassNameOfThisPtr(CallSite cs)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#l00526">CPPUtil.cpp:526</a></div></div>
96
+ <div class="ttc" id="namespaceSVF_1_1cppUtil_html_a3b00cc9770022f124958513bf1e52a05"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a3b00cc9770022f124958513bf1e52a05">SVF::cppUtil::getVCallVtblPtr</a></div><div class="ttdeci">const Value * getVCallVtblPtr(CallSite cs)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#l00387">CPPUtil.cpp:387</a></div></div>
97
+ <div class="ttc" id="namespaceSVF_1_1cppUtil_html_a3bed7bc0a0ae580841ca049f91690ff7"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a3bed7bc0a0ae580841ca049f91690ff7">SVF::cppUtil::getClassNameOfThisPtr</a></div><div class="ttdeci">std::string getClassNameOfThisPtr(CallSite cs)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#l00527">CPPUtil.cpp:527</a></div></div>
98
98
  <div class="ttc" id="namespacecppUtil_html"><div class="ttname"><a href="namespacecppUtil.html">cppUtil</a></div></div>
99
99
  <div class="ttc" id="namespaceSVF_1_1cppUtil_html_a1007c092efaeae41002efd91b803a7f6"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a1007c092efaeae41002efd91b803a7f6">SVF::cppUtil::demangle</a></div><div class="ttdeci">struct DemangledName demangle(const std::string &amp;name)</div></div>
100
100
  <div class="ttc" id="namespaceSVF_html"><div class="ttname"><a href="namespaceSVF.html">SVF</a></div><div class="ttdoc">for isBitcode </div><div class="ttdef"><b>Definition:</b> <a href="CFGNormalizer_8h_source.html#l00035">CFGNormalizer.h:35</a></div></div>
101
- <div class="ttc" id="namespaceSVF_1_1cppUtil_html_a0a67c31dcc44784b09dca54b4b7c624a"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a0a67c31dcc44784b09dca54b4b7c624a">SVF::cppUtil::getFunNameOfVCallSite</a></div><div class="ttdeci">std::string getFunNameOfVCallSite(CallSite cs)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#l00553">CPPUtil.cpp:553</a></div></div>
101
+ <div class="ttc" id="namespaceSVF_1_1cppUtil_html_a0a67c31dcc44784b09dca54b4b7c624a"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a0a67c31dcc44784b09dca54b4b7c624a">SVF::cppUtil::getFunNameOfVCallSite</a></div><div class="ttdeci">std::string getFunNameOfVCallSite(CallSite cs)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#l00554">CPPUtil.cpp:554</a></div></div>
102
102
  <div class="ttc" id="namespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00072">BasicTypes.h:72</a></div></div>
103
103
  <div class="ttc" id="namespaceSVF_html_a366625858f450a1ea5f985a3c83e0f14"><div class="ttname"><a href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">SVF::u64_t</a></div><div class="ttdeci">unsigned long long u64_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00086">SVFBasicTypes.h:86</a></div></div>
104
104
  </div><!-- fragment --></div><!-- contents -->
@@ -66,7 +66,7 @@ $(function() {
66
66
  <div class="title">CallGraphBuilder.cpp File Reference</div> </div>
67
67
  </div><!--header-->
68
68
  <div class="contents">
69
- <div class="textblock"><code>#include &quot;<a class="el" href="LLVMUtil_8h_source.html">SVF-FE/LLVMUtil.h</a>&quot;</code><br />
69
+ <div class="textblock"><code>#include &quot;<a class="el" href="SVFUtil_8h_source.html">Util/SVFUtil.h</a>&quot;</code><br />
70
70
  <code>#include &quot;<a class="el" href="CallGraphBuilder_8h_source.html">SVF-FE/CallGraphBuilder.h</a>&quot;</code><br />
71
71
  <code>#include &quot;<a class="el" href="ICFG_8h_source.html">Graphs/ICFG.h</a>&quot;</code><br />
72
72
  </div>
@@ -66,14 +66,15 @@ $(function() {
66
66
  <div class="title">CallGraphBuilder.cpp</div> </div>
67
67
  </div><!--header-->
68
68
  <div class="contents">
69
- <a href="CallGraphBuilder_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">//===- CallGraphBuilder.cpp ----------------------------------------------------------------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// SVF: Static Value-Flow Analysis</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Copyright (C) &lt;2013-&gt; &lt;Yulei Sui&gt;</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// This program is free software: you can redistribute it and/or modify</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">// it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// the Free Software Foundation, either version 3 of the License, or</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// (at your option) any later version.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">// GNU General Public License for more details.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">// You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment">// along with this program. If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> * CallGraphBuilder.cpp</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * Created on:</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> * Author: Yulei</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="LLVMUtil_8h.html">SVF-FE/LLVMUtil.h</a>&quot;</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="CallGraphBuilder_8h.html">SVF-FE/CallGraphBuilder.h</a>&quot;</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="ICFG_8h.html">Graphs/ICFG.h</a>&quot;</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="keyword">using namespace </span><a class="code" href="namespaceSVF.html">SVF</a>;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="keyword">using namespace </span>SVFUtil;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div><div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="classSVF_1_1CallGraphBuilder.html#aa64a27e99434908a203e566074c66ebc"> 38</a></span>&#160;<a class="code" href="classSVF_1_1PTACallGraph.html">PTACallGraph</a>* <a class="code" href="classSVF_1_1CallGraphBuilder.html#aa64a27e99434908a203e566074c66ebc">CallGraphBuilder::buildCallGraph</a>(<a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* svfModule)</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;{</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1SVFModule.html#aa5a0780c5c69a1e9a0ba902b4ad49714">SVFModule::llvm_iterator</a> <a class="code" href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a> = svfModule-&gt;<a class="code" href="classSVF_1_1SVFModule.html#a648542aa5c4b487ad5aa12a39d15e951">llvmFunBegin</a>(), E = svfModule-&gt;<a class="code" href="classSVF_1_1SVFModule.html#af38d0f831967d6d8391a4c84e58d6519">llvmFunEnd</a>(); <a class="code" href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a> != E; ++<a class="code" href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a>)</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a547b3bc62de65b9dbfc6dee55c063dd7">getSVFFunction</a>(*<a class="code" href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a>);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; callgraph-&gt;addCallGraphNode(fun);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; }</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1SVFModule.html#aa5a0780c5c69a1e9a0ba902b4ad49714">SVFModule::llvm_iterator</a> <a class="code" href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a> = svfModule-&gt;<a class="code" href="classSVF_1_1SVFModule.html#a648542aa5c4b487ad5aa12a39d15e951">llvmFunBegin</a>(), E = svfModule-&gt;<a class="code" href="classSVF_1_1SVFModule.html#af38d0f831967d6d8391a4c84e58d6519">llvmFunEnd</a>(); <a class="code" href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a> != E; ++<a class="code" href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a>)</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; {</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *fun = *<a class="code" href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a>;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="SVF-FE_2BasicTypes_8h.html#a160997c1a0fb1000445d04b89d9c1323">inst_iterator</a> I = inst_begin(*fun), J = inst_end(*fun); I != J; ++I)</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *inst = &amp;*I;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a8d8216a92140d982303f83ea424ddc91">SVFUtil::isNonInstricCallSite</a>(inst))</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; {</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* callee = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d">getCallee</a>(inst))</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; {</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* callBlockNode = icfg-&gt;getCallICFGNode(inst);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* caller = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a547b3bc62de65b9dbfc6dee55c063dd7">getSVFFunction</a>(fun);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; callgraph-&gt;addDirectCallGraphEdge(callBlockNode,caller,callee);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; }</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; }</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; }</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; }</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordflow">return</span> callgraph;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;}</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;</div><div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="classSVF_1_1ThreadCallGraphBuilder.html#a0f5bf24257858919c10af0e076d87ef7"> 69</a></span>&#160;<a class="code" href="classSVF_1_1PTACallGraph.html">PTACallGraph</a>* <a class="code" href="classSVF_1_1ThreadCallGraphBuilder.html#a0f5bf24257858919c10af0e076d87ef7">ThreadCallGraphBuilder::buildThreadCallGraph</a>(<a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* svfModule)</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;{</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; buildCallGraph(svfModule);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <a class="code" href="classSVF_1_1ThreadCallGraph.html">ThreadCallGraph</a>* cg = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">dyn_cast</a>&lt;<a class="code" href="classSVF_1_1ThreadCallGraph.html">ThreadCallGraph</a>&gt;(callgraph);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(cg &amp;&amp; <span class="stringliteral">&quot;not a thread callgraph?&quot;</span>);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <a class="code" href="classSVF_1_1ThreadAPI.html">ThreadAPI</a>* tdAPI = <a class="code" href="classSVF_1_1ThreadAPI.html#a6852ff1eedc1117e95e45e4a90c80d53">ThreadAPI::getThreadAPI</a>();</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1SVFModule.html#ab86e221a93bec67a2ecb7cb53315f569">SVFModule::llvm_const_iterator</a> fi = svfModule-&gt;<a class="code" href="classSVF_1_1SVFModule.html#a648542aa5c4b487ad5aa12a39d15e951">llvmFunBegin</a>(), efi = svfModule-&gt;<a class="code" href="classSVF_1_1SVFModule.html#af38d0f831967d6d8391a4c84e58d6519">llvmFunEnd</a>(); fi != efi; ++fi)</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; {</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *fun = *fi;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="SVF-FE_2BasicTypes_8h.html#a9a4df49ba7ca3ad32d65e5ecf2dad707">const_inst_iterator</a> II = inst_begin(*fun), E = inst_end(*fun); II != E; ++II)</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; {</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *inst = &amp;*II;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">if</span> (tdAPI-&gt;<a class="code" href="classSVF_1_1ThreadAPI.html#a9da276dca5092d18f4f22d32e5ab6cdf">isTDFork</a>(inst))</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; {</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs = icfg-&gt;getCallICFGNode(inst);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; cg-&gt;<a class="code" href="classSVF_1_1ThreadCallGraph.html#a563ebb1ece0adb4bafe5e14b2a024a91">addForksite</a>(cs);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* forkee = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>&gt;(tdAPI-&gt;<a class="code" href="classSVF_1_1ThreadAPI.html#a7ddc0c71aeae315af21972a4905b3456">getForkedFun</a>(inst));</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">if</span> (forkee)</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; {</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; cg-&gt;<a class="code" href="classSVF_1_1ThreadCallGraph.html#a19e505dbca2d2b5128762b223b9a7114">addDirectForkEdge</a>(cs);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; }</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="comment">// indirect call to the start routine function</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; {</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; cg-&gt;<a class="code" href="classSVF_1_1ThreadCallGraph.html#ab20211a66583387f0da4769bee65e300">addThreadForkEdgeSetMap</a>(cs,<span class="keyword">nullptr</span>);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; }</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (tdAPI-&gt;<a class="code" href="classSVF_1_1ThreadAPI.html#a86d75b7e3570337e484397e60f97d88e">isHareParFor</a>(inst))</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; {</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs = icfg-&gt;getCallICFGNode(inst);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; cg-&gt;<a class="code" href="classSVF_1_1ThreadCallGraph.html#a69719915e8c23e3afd6766daea946ffe">addParForSite</a>(cs);</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* taskFunc = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>&gt;(tdAPI-&gt;<a class="code" href="classSVF_1_1ThreadAPI.html#afeedd6e518af76fa9e7142af8899b2f5">getTaskFuncAtHareParForSite</a>(inst));</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordflow">if</span> (taskFunc)</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; {</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; cg-&gt;<a class="code" href="classSVF_1_1ThreadCallGraph.html#ae942f7d46198207219e5ce8287497262">addDirectParForEdge</a>(cs);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; }</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="comment">// indirect call to the start routine function</span></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; {</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; cg-&gt;<a class="code" href="classSVF_1_1ThreadCallGraph.html#aae1caa7231ab9436db98403d6a175149">addHareParForEdgeSetMap</a>(cs,<span class="keyword">nullptr</span>);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; }</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; }</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; }</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; }</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="comment">// record join sites</span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1SVFModule.html#ab86e221a93bec67a2ecb7cb53315f569">SVFModule::llvm_const_iterator</a> fi = svfModule-&gt;<a class="code" href="classSVF_1_1SVFModule.html#a648542aa5c4b487ad5aa12a39d15e951">llvmFunBegin</a>(), efi = svfModule-&gt;<a class="code" href="classSVF_1_1SVFModule.html#af38d0f831967d6d8391a4c84e58d6519">llvmFunEnd</a>(); fi != efi; ++fi)</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; {</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *fun = *fi;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="SVF-FE_2BasicTypes_8h.html#a9a4df49ba7ca3ad32d65e5ecf2dad707">const_inst_iterator</a> II = inst_begin(*fun), E = inst_end(*fun); II != E; ++II)</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; {</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *inst = &amp;*II;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keywordflow">if</span> (tdAPI-&gt;<a class="code" href="classSVF_1_1ThreadAPI.html#a8cc5f9ff6039392ce1471cd830973c44">isTDJoin</a>(inst))</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; {</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs = icfg-&gt;getCallICFGNode(inst);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; cg-&gt;<a class="code" href="classSVF_1_1ThreadCallGraph.html#a795d504a098634b1725af272b37e46e7">addJoinsite</a>(cs);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; }</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; }</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; }</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keywordflow">return</span> cg;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;}</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;</div><div class="ttc" id="classSVF_1_1SVFModule_html_af38d0f831967d6d8391a4c84e58d6519"><div class="ttname"><a href="classSVF_1_1SVFModule.html#af38d0f831967d6d8391a4c84e58d6519">SVF::SVFModule::llvmFunEnd</a></div><div class="ttdeci">llvm_iterator llvmFunEnd()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00138">SVFModule.h:138</a></div></div>
69
+ <a href="CallGraphBuilder_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">//===- CallGraphBuilder.cpp ----------------------------------------------------------------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// SVF: Static Value-Flow Analysis</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Copyright (C) &lt;2013-&gt; &lt;Yulei Sui&gt;</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// This program is free software: you can redistribute it and/or modify</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">// it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// the Free Software Foundation, either version 3 of the License, or</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// (at your option) any later version.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">// GNU General Public License for more details.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">// You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment">// along with this program. If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> * CallGraphBuilder.cpp</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * Created on:</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> * Author: Yulei</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="SVFUtil_8h.html">Util/SVFUtil.h</a>&quot;</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="CallGraphBuilder_8h.html">SVF-FE/CallGraphBuilder.h</a>&quot;</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="ICFG_8h.html">Graphs/ICFG.h</a>&quot;</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="keyword">using namespace </span><a class="code" href="namespaceSVF.html">SVF</a>;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="keyword">using namespace </span>SVFUtil;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div><div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="classSVF_1_1CallGraphBuilder.html#aa64a27e99434908a203e566074c66ebc"> 38</a></span>&#160;<a class="code" href="classSVF_1_1PTACallGraph.html">PTACallGraph</a>* <a class="code" href="classSVF_1_1CallGraphBuilder.html#aa64a27e99434908a203e566074c66ebc">CallGraphBuilder::buildCallGraph</a>(<a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* svfModule)</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;{</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1SVFModule.html#aa5a0780c5c69a1e9a0ba902b4ad49714">SVFModule::llvm_iterator</a> <a class="code" href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a> = svfModule-&gt;<a class="code" href="classSVF_1_1SVFModule.html#a648542aa5c4b487ad5aa12a39d15e951">llvmFunBegin</a>(), E = svfModule-&gt;<a class="code" href="classSVF_1_1SVFModule.html#af38d0f831967d6d8391a4c84e58d6519">llvmFunEnd</a>(); <a class="code" href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a> != E; ++<a class="code" href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a>)</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a547b3bc62de65b9dbfc6dee55c063dd7">getSVFFunction</a>(*<a class="code" href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a>);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; callgraph-&gt;addCallGraphNode(fun);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; }</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1SVFModule.html#aa5a0780c5c69a1e9a0ba902b4ad49714">SVFModule::llvm_iterator</a> <a class="code" href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a> = svfModule-&gt;<a class="code" href="classSVF_1_1SVFModule.html#a648542aa5c4b487ad5aa12a39d15e951">llvmFunBegin</a>(), E = svfModule-&gt;<a class="code" href="classSVF_1_1SVFModule.html#af38d0f831967d6d8391a4c84e58d6519">llvmFunEnd</a>(); <a class="code" href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a> != E; ++<a class="code" href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a>)</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; {</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *fun = *<a class="code" href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a>;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="SVF-FE_2BasicTypes_8h.html#a160997c1a0fb1000445d04b89d9c1323">inst_iterator</a> I = inst_begin(*fun), J = inst_end(*fun); I != J; ++I)</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *inst = &amp;*I;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a8d8216a92140d982303f83ea424ddc91">SVFUtil::isNonInstricCallSite</a>(inst))</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; {</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* callee = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d">getCallee</a>(inst))</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; {</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* callBlockNode = icfg-&gt;getCallICFGNode(inst);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* caller = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a547b3bc62de65b9dbfc6dee55c063dd7">getSVFFunction</a>(fun);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; callgraph-&gt;addDirectCallGraphEdge(callBlockNode,caller,callee);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; }</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; }</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; }</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; }</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordflow">return</span> callgraph;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;}</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;</div><div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="classSVF_1_1ThreadCallGraphBuilder.html#a0f5bf24257858919c10af0e076d87ef7"> 69</a></span>&#160;<a class="code" href="classSVF_1_1PTACallGraph.html">PTACallGraph</a>* <a class="code" href="classSVF_1_1ThreadCallGraphBuilder.html#a0f5bf24257858919c10af0e076d87ef7">ThreadCallGraphBuilder::buildThreadCallGraph</a>(<a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* svfModule)</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;{</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; buildCallGraph(svfModule);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <a class="code" href="classSVF_1_1ThreadCallGraph.html">ThreadCallGraph</a>* cg = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">dyn_cast</a>&lt;<a class="code" href="classSVF_1_1ThreadCallGraph.html">ThreadCallGraph</a>&gt;(callgraph);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(cg &amp;&amp; <span class="stringliteral">&quot;not a thread callgraph?&quot;</span>);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <a class="code" href="classSVF_1_1ThreadAPI.html">ThreadAPI</a>* tdAPI = <a class="code" href="classSVF_1_1ThreadAPI.html#a6852ff1eedc1117e95e45e4a90c80d53">ThreadAPI::getThreadAPI</a>();</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1SVFModule.html#ab86e221a93bec67a2ecb7cb53315f569">SVFModule::llvm_const_iterator</a> fi = svfModule-&gt;<a class="code" href="classSVF_1_1SVFModule.html#a648542aa5c4b487ad5aa12a39d15e951">llvmFunBegin</a>(), efi = svfModule-&gt;<a class="code" href="classSVF_1_1SVFModule.html#af38d0f831967d6d8391a4c84e58d6519">llvmFunEnd</a>(); fi != efi; ++fi)</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; {</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *fun = *fi;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="SVF-FE_2BasicTypes_8h.html#a9a4df49ba7ca3ad32d65e5ecf2dad707">const_inst_iterator</a> II = inst_begin(*fun), E = inst_end(*fun); II != E; ++II)</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; {</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *inst = &amp;*II;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">if</span> (tdAPI-&gt;<a class="code" href="classSVF_1_1ThreadAPI.html#a9da276dca5092d18f4f22d32e5ab6cdf">isTDFork</a>(inst))</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; {</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs = icfg-&gt;getCallICFGNode(inst);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; cg-&gt;<a class="code" href="classSVF_1_1ThreadCallGraph.html#a563ebb1ece0adb4bafe5e14b2a024a91">addForksite</a>(cs);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* forkee = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>&gt;(tdAPI-&gt;<a class="code" href="classSVF_1_1ThreadAPI.html#a7ddc0c71aeae315af21972a4905b3456">getForkedFun</a>(inst));</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">if</span> (forkee)</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; {</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; cg-&gt;<a class="code" href="classSVF_1_1ThreadCallGraph.html#a19e505dbca2d2b5128762b223b9a7114">addDirectForkEdge</a>(cs);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; }</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="comment">// indirect call to the start routine function</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; {</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; cg-&gt;<a class="code" href="classSVF_1_1ThreadCallGraph.html#ab20211a66583387f0da4769bee65e300">addThreadForkEdgeSetMap</a>(cs,<span class="keyword">nullptr</span>);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; }</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (tdAPI-&gt;<a class="code" href="classSVF_1_1ThreadAPI.html#a86d75b7e3570337e484397e60f97d88e">isHareParFor</a>(inst))</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; {</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs = icfg-&gt;getCallICFGNode(inst);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; cg-&gt;<a class="code" href="classSVF_1_1ThreadCallGraph.html#a69719915e8c23e3afd6766daea946ffe">addParForSite</a>(cs);</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* taskFunc = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>&gt;(tdAPI-&gt;<a class="code" href="classSVF_1_1ThreadAPI.html#afeedd6e518af76fa9e7142af8899b2f5">getTaskFuncAtHareParForSite</a>(inst));</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordflow">if</span> (taskFunc)</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; {</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; cg-&gt;<a class="code" href="classSVF_1_1ThreadCallGraph.html#ae942f7d46198207219e5ce8287497262">addDirectParForEdge</a>(cs);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; }</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="comment">// indirect call to the start routine function</span></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; {</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; cg-&gt;<a class="code" href="classSVF_1_1ThreadCallGraph.html#aae1caa7231ab9436db98403d6a175149">addHareParForEdgeSetMap</a>(cs,<span class="keyword">nullptr</span>);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; }</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; }</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; }</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; }</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="comment">// record join sites</span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1SVFModule.html#ab86e221a93bec67a2ecb7cb53315f569">SVFModule::llvm_const_iterator</a> fi = svfModule-&gt;<a class="code" href="classSVF_1_1SVFModule.html#a648542aa5c4b487ad5aa12a39d15e951">llvmFunBegin</a>(), efi = svfModule-&gt;<a class="code" href="classSVF_1_1SVFModule.html#af38d0f831967d6d8391a4c84e58d6519">llvmFunEnd</a>(); fi != efi; ++fi)</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; {</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *fun = *fi;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="SVF-FE_2BasicTypes_8h.html#a9a4df49ba7ca3ad32d65e5ecf2dad707">const_inst_iterator</a> II = inst_begin(*fun), E = inst_end(*fun); II != E; ++II)</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; {</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *inst = &amp;*II;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keywordflow">if</span> (tdAPI-&gt;<a class="code" href="classSVF_1_1ThreadAPI.html#a8cc5f9ff6039392ce1471cd830973c44">isTDJoin</a>(inst))</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; {</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs = icfg-&gt;getCallICFGNode(inst);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; cg-&gt;<a class="code" href="classSVF_1_1ThreadCallGraph.html#a795d504a098634b1725af272b37e46e7">addJoinsite</a>(cs);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; }</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; }</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; }</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keywordflow">return</span> cg;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;}</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;</div><div class="ttc" id="classSVF_1_1SVFModule_html_af38d0f831967d6d8391a4c84e58d6519"><div class="ttname"><a href="classSVF_1_1SVFModule.html#af38d0f831967d6d8391a4c84e58d6519">SVF::SVFModule::llvmFunEnd</a></div><div class="ttdeci">llvm_iterator llvmFunEnd()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00138">SVFModule.h:138</a></div></div>
70
70
  <div class="ttc" id="classSVF_1_1ThreadAPI_html_a9da276dca5092d18f4f22d32e5ab6cdf"><div class="ttname"><a href="classSVF_1_1ThreadAPI.html#a9da276dca5092d18f4f22d32e5ab6cdf">SVF::ThreadAPI::isTDFork</a></div><div class="ttdeci">bool isTDFork(const Instruction *inst) const</div><div class="ttdoc">Return true if this call create a new thread. </div><div class="ttdef"><b>Definition:</b> <a href="ThreadAPI_8h_source.html#l00129">ThreadAPI.h:129</a></div></div>
71
71
  <div class="ttc" id="classSVF_1_1ThreadCallGraph_html_a795d504a098634b1725af272b37e46e7"><div class="ttname"><a href="classSVF_1_1ThreadCallGraph.html#a795d504a098634b1725af272b37e46e7">SVF::ThreadCallGraph::addJoinsite</a></div><div class="ttdeci">bool addJoinsite(const CallICFGNode *cs)</div><div class="ttdef"><b>Definition:</b> <a href="ThreadCallGraph_8h_source.html#l00336">ThreadCallGraph.h:336</a></div></div>
72
72
  <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>
73
73
  <div class="ttc" id="classSVF_1_1ThreadCallGraph_html_a563ebb1ece0adb4bafe5e14b2a024a91"><div class="ttname"><a href="classSVF_1_1ThreadCallGraph.html#a563ebb1ece0adb4bafe5e14b2a024a91">SVF::ThreadCallGraph::addForksite</a></div><div class="ttdeci">bool addForksite(const CallICFGNode *cs)</div><div class="ttdoc">Add fork sites which directly or indirectly create a thread. </div><div class="ttdef"><b>Definition:</b> <a href="ThreadCallGraph_8h_source.html#l00331">ThreadCallGraph.h:331</a></div></div>
74
- <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#l00128">BasicTypes.h:128</a></div></div>
74
+ <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#l00127">BasicTypes.h:127</a></div></div>
75
+ <div class="ttc" id="SVFUtil_8h_html"><div class="ttname"><a href="SVFUtil_8h.html">SVFUtil.h</a></div></div>
75
76
  <div class="ttc" id="classSVF_1_1SVFModule_html"><div class="ttname"><a href="classSVF_1_1SVFModule.html">SVF::SVFModule</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00041">SVFModule.h:41</a></div></div>
76
- <div class="ttc" id="SVF-FE_2BasicTypes_8h_html_a160997c1a0fb1000445d04b89d9c1323"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#a160997c1a0fb1000445d04b89d9c1323">inst_iterator</a></div><div class="ttdeci">llvm::inst_iterator inst_iterator</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00109">BasicTypes.h:109</a></div></div>
77
+ <div class="ttc" id="SVF-FE_2BasicTypes_8h_html_a160997c1a0fb1000445d04b89d9c1323"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#a160997c1a0fb1000445d04b89d9c1323">inst_iterator</a></div><div class="ttdeci">llvm::inst_iterator inst_iterator</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00110">BasicTypes.h:110</a></div></div>
77
78
  <div class="ttc" id="classSVF_1_1SVFModule_html_a648542aa5c4b487ad5aa12a39d15e951"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a648542aa5c4b487ad5aa12a39d15e951">SVF::SVFModule::llvmFunBegin</a></div><div class="ttdeci">llvm_iterator llvmFunBegin()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00130">SVFModule.h:130</a></div></div>
78
79
  <div class="ttc" id="classSVF_1_1ThreadCallGraph_html_ab20211a66583387f0da4769bee65e300"><div class="ttname"><a href="classSVF_1_1ThreadCallGraph.html#ab20211a66583387f0da4769bee65e300">SVF::ThreadCallGraph::addThreadForkEdgeSetMap</a></div><div class="ttdeci">void addThreadForkEdgeSetMap(const CallICFGNode *cs, ThreadForkEdge *edge)</div><div class="ttdoc">map call instruction to its CallGraphEdge map </div><div class="ttdef"><b>Definition:</b> <a href="ThreadCallGraph_8h_source.html#l00367">ThreadCallGraph.h:367</a></div></div>
79
80
  <div class="ttc" id="classSVF_1_1SVFModule_html_aa5a0780c5c69a1e9a0ba902b4ad49714"><div class="ttname"><a href="classSVF_1_1SVFModule.html#aa5a0780c5c69a1e9a0ba902b4ad49714">SVF::SVFModule::llvm_iterator</a></div><div class="ttdeci">LLVMFunctionSetType::iterator llvm_iterator</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00053">SVFModule.h:53</a></div></div>
@@ -93,7 +94,7 @@ $(function() {
93
94
  <div class="ttc" id="ICFG_8h_html"><div class="ttname"><a href="ICFG_8h.html">ICFG.h</a></div></div>
94
95
  <div class="ttc" id="classSVF_1_1ThreadAPI_html_a86d75b7e3570337e484397e60f97d88e"><div class="ttname"><a href="classSVF_1_1ThreadAPI.html#a86d75b7e3570337e484397e60f97d88e">SVF::ThreadAPI::isHareParFor</a></div><div class="ttdeci">bool isHareParFor(const Instruction *inst) const</div><div class="ttdoc">Return true if this call proceeds a hare_parallel_for. </div><div class="ttdef"><b>Definition:</b> <a href="ThreadAPI_8h_source.html#l00141">ThreadAPI.h:141</a></div></div>
95
96
  <div class="ttc" id="classSVF_1_1CallGraphBuilder_html_aa64a27e99434908a203e566074c66ebc"><div class="ttname"><a href="classSVF_1_1CallGraphBuilder.html#aa64a27e99434908a203e566074c66ebc">SVF::CallGraphBuilder::buildCallGraph</a></div><div class="ttdeci">PTACallGraph * buildCallGraph(SVFModule *svfModule)</div><div class="ttdoc">Build normal callgraph. </div><div class="ttdef"><b>Definition:</b> <a href="CallGraphBuilder_8cpp_source.html#l00038">CallGraphBuilder.cpp:38</a></div></div>
96
- <div class="ttc" id="SVF-FE_2BasicTypes_8h_html_a9a4df49ba7ca3ad32d65e5ecf2dad707"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#a9a4df49ba7ca3ad32d65e5ecf2dad707">const_inst_iterator</a></div><div class="ttdeci">llvm::const_inst_iterator const_inst_iterator</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00112">BasicTypes.h:112</a></div></div>
97
+ <div class="ttc" id="SVF-FE_2BasicTypes_8h_html_a9a4df49ba7ca3ad32d65e5ecf2dad707"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#a9a4df49ba7ca3ad32d65e5ecf2dad707">const_inst_iterator</a></div><div class="ttdeci">llvm::const_inst_iterator const_inst_iterator</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00113">BasicTypes.h:113</a></div></div>
97
98
  <div class="ttc" id="CFLGrammar_8txt_html_acc7b4cf736579c4d83be2316d5a9e5f2"><div class="ttname"><a href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a></div><div class="ttdeci">V Fbar V F</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8txt_source.html#l00014">CFLGrammar.txt:14</a></div></div>
98
99
  <div class="ttc" id="classSVF_1_1ThreadAPI_html_a8cc5f9ff6039392ce1471cd830973c44"><div class="ttname"><a href="classSVF_1_1ThreadAPI.html#a8cc5f9ff6039392ce1471cd830973c44">SVF::ThreadAPI::isTDJoin</a></div><div class="ttdeci">bool isTDJoin(const Instruction *inst) const</div><div class="ttdoc">Return true if this call wait for a worker thread. </div><div class="ttdef"><b>Definition:</b> <a href="ThreadAPI_8h_source.html#l00223">ThreadAPI.h:223</a></div></div>
99
100
  <div class="ttc" id="classSVF_1_1CallICFGNode_html"><div class="ttname"><a href="classSVF_1_1CallICFGNode.html">SVF::CallICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00363">ICFGNode.h:363</a></div></div>
@@ -104,7 +105,6 @@ $(function() {
104
105
  <div class="ttc" id="classSVF_1_1ThreadCallGraph_html_ae942f7d46198207219e5ce8287497262"><div class="ttname"><a href="classSVF_1_1ThreadCallGraph.html#ae942f7d46198207219e5ce8287497262">SVF::ThreadCallGraph::addDirectParForEdge</a></div><div class="ttdeci">void addDirectParForEdge(const CallICFGNode *cs)</div><div class="ttdoc">Add direct/indirect parallel for edges. </div><div class="ttdef"><b>Definition:</b> <a href="ThreadCallGraph_8cpp_source.html#l00224">ThreadCallGraph.cpp:224</a></div></div>
105
106
  <div class="ttc" id="CallGraphBuilder_8h_html"><div class="ttname"><a href="CallGraphBuilder_8h.html">CallGraphBuilder.h</a></div></div>
106
107
  <div class="ttc" id="classSVF_1_1ThreadCallGraph_html_a19e505dbca2d2b5128762b223b9a7114"><div class="ttname"><a href="classSVF_1_1ThreadCallGraph.html#a19e505dbca2d2b5128762b223b9a7114">SVF::ThreadCallGraph::addDirectForkEdge</a></div><div class="ttdeci">void addDirectForkEdge(const CallICFGNode *cs)</div><div class="ttdoc">Add direct/indirect thread fork edges. </div><div class="ttdef"><b>Definition:</b> <a href="ThreadCallGraph_8cpp_source.html#l00147">ThreadCallGraph.cpp:147</a></div></div>
107
- <div class="ttc" id="LLVMUtil_8h_html"><div class="ttname"><a href="LLVMUtil_8h.html">LLVMUtil.h</a></div></div>
108
108
  <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a547b3bc62de65b9dbfc6dee55c063dd7"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a547b3bc62de65b9dbfc6dee55c063dd7">SVF::LLVMModuleSet::getSVFFunction</a></div><div class="ttdeci">const SVFFunction * getSVFFunction(const Function *fun) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00114">LLVMModule.h:114</a></div></div>
109
109
  </div><!-- fragment --></div><!-- contents -->
110
110
  <!-- start footer part -->
@@ -70,7 +70,7 @@ $(function() {
70
70
  <div class="ttc" id="structstd_1_1hash_3_01const_01SVF_1_1CondVar_3_01Cond_01_4_01_4_html_ae66ac1a976e498f88e382988f17b4df5"><div class="ttname"><a href="structstd_1_1hash_3_01const_01SVF_1_1CondVar_3_01Cond_01_4_01_4.html#ae66ac1a976e498f88e382988f17b4df5">std::hash&lt; const SVF::CondVar&lt; Cond &gt; &gt;::operator()</a></div><div class="ttdeci">size_t operator()(const SVF::CondVar&lt; Cond &gt; &amp;cv) const</div><div class="ttdef"><b>Definition:</b> <a href="ConditionalPT_8h_source.html#l00848">ConditionalPT.h:848</a></div></div>
71
71
  <div class="ttc" id="classSVF_1_1CondPointsToSet_html_ada240bc77570174a1d17ac097583fa78"><div class="ttname"><a href="classSVF_1_1CondPointsToSet.html#ada240bc77570174a1d17ac097583fa78">SVF::CondPointsToSet::pointsTo</a></div><div class="ttdeci">const CondPts &amp; pointsTo(void) const</div><div class="ttdef"><b>Definition:</b> <a href="ConditionalPT_8h_source.html#l00335">ConditionalPT.h:335</a></div></div>
72
72
  <div class="ttc" id="structstd_1_1hash_3_01SVF_1_1CondStdSet_3_01Element_01_4_01_4_html_a0d50f7a011b2174e5c8064a8b03f8529"><div class="ttname"><a href="structstd_1_1hash_3_01SVF_1_1CondStdSet_3_01Element_01_4_01_4.html#a0d50f7a011b2174e5c8064a8b03f8529">std::hash&lt; SVF::CondStdSet&lt; Element &gt; &gt;::operator()</a></div><div class="ttdeci">size_t operator()(const SVF::CondStdSet&lt; Element &gt; &amp;css) const</div><div class="ttdef"><b>Definition:</b> <a href="ConditionalPT_8h_source.html#l00868">ConditionalPT.h:868</a></div></div>
73
- <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aeb570e9267fd7b189bd1bc877896d7ab"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aeb570e9267fd7b189bd1bc877896d7ab">SVF::SVFUtil::dumpSet</a></div><div class="ttdeci">void dumpSet(NodeBS To, OutStream &amp;O=SVFUtil::outs())</div><div class="ttdoc">Dump sparse bitvector set. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00149">SVFUtil.cpp:149</a></div></div>
73
+ <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aeb570e9267fd7b189bd1bc877896d7ab"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aeb570e9267fd7b189bd1bc877896d7ab">SVF::SVFUtil::dumpSet</a></div><div class="ttdeci">void dumpSet(NodeBS To, OutStream &amp;O=SVFUtil::outs())</div><div class="ttdoc">Dump sparse bitvector set. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00148">SVFUtil.cpp:148</a></div></div>
74
74
  <div class="ttc" id="classSVF_1_1CondVar_html_a5d64fa2be89051cd03301e3b07bffd6a"><div class="ttname"><a href="classSVF_1_1CondVar.html#a5d64fa2be89051cd03301e3b07bffd6a">SVF::CondVar::get_id</a></div><div class="ttdeci">NodeID get_id() const</div><div class="ttdef"><b>Definition:</b> <a href="ConditionalPT_8h_source.html#l00103">ConditionalPT.h:103</a></div></div>
75
75
  <div class="ttc" id="classSVF_1_1CondStdSet_html_a93c232ef7e5dea652622da7f994e1dc3"><div class="ttname"><a href="classSVF_1_1CondStdSet.html#a93c232ef7e5dea652622da7f994e1dc3">SVF::CondStdSet::end</a></div><div class="ttdeci">iterator end()</div><div class="ttdef"><b>Definition:</b> <a href="ConditionalPT_8h_source.html#l00195">ConditionalPT.h:195</a></div></div>
76
76
  <div class="ttc" id="namespaceSVF_html_a4f21e91ff8eaea5207afe5c60dbd78d7"><div class="ttname"><a href="namespaceSVF.html#a4f21e91ff8eaea5207afe5c60dbd78d7">SVF::OrderedSet</a></div><div class="ttdeci">std::set&lt; Key, Compare, Allocator &gt; OrderedSet</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00112">SVFBasicTypes.h:112</a></div></div>
@@ -146,7 +146,7 @@ $(function() {
146
146
  <div class="ttc" id="classSVF_1_1SVFStmt_html_a0ab8621e75e75f03425c323b3ed62ce9a3c3f8883c2d3b50aef6331d5da97ffb0"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a3c3f8883c2d3b50aef6331d5da97ffb0">SVF::SVFStmt::ThreadJoin</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00056">SVFStatements.h:56</a></div></div>
147
147
  <div class="ttc" id="classSVF_1_1ConstraintGraph_html_a4db3484e3710c3f5cc86ec32dd643722"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#a4db3484e3710c3f5cc86ec32dd643722">SVF::ConstraintGraph::reTargetDstOfEdge</a></div><div class="ttdeci">void reTargetDstOfEdge(ConstraintEdge *edge, ConstraintNode *newDstNode)</div><div class="ttdoc">Used for cycle elimination. </div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00284">ConsG.cpp:284</a></div></div>
148
148
  <div class="ttc" id="classSVF_1_1GenericEdge_html_aa41cb7482bdab1ba328f4b94f30f3ee4"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#aa41cb7482bdab1ba328f4b94f30f3ee4">SVF::GenericEdge::dst</a></div><div class="ttdeci">NodeTy * dst</div><div class="ttdoc">destination node </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00056">GenericGraph.h:56</a></div></div>
149
- <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a7486fd8e5350879ed1cbd835c0d4e191"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">SVF::SVFUtil::value2String</a></div><div class="ttdeci">const std::string value2String(const Value *value)</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00392">SVFUtil.cpp:392</a></div></div>
149
+ <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a7486fd8e5350879ed1cbd835c0d4e191"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">SVF::SVFUtil::value2String</a></div><div class="ttdeci">const std::string value2String(const Value *value)</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00391">SVFUtil.cpp:391</a></div></div>
150
150
  <div class="ttc" id="classSVF_1_1ConstraintGraph_html_a77ba38543b1ee164f1ae95589d5dbc44"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#a77ba38543b1ee164f1ae95589d5dbc44">SVF::ConstraintGraph::destroy</a></div><div class="ttdeci">void destroy()</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00150">ConsG.cpp:150</a></div></div>
151
151
  <div class="ttc" id="classSVF_1_1ConstraintNode_html"><div class="ttname"><a href="classSVF_1_1ConstraintNode.html">SVF::ConstraintNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ConsGNode_8h_source.html#l00040">ConsGNode.h:40</a></div></div>
152
152
  <div class="ttc" id="classSVF_1_1SVFVar_html_afaa33caa8d2a306f6741d9d066243e40"><div class="ttname"><a href="classSVF_1_1SVFVar.html#afaa33caa8d2a306f6741d9d066243e40">SVF::SVFVar::getValue</a></div><div class="ttdeci">const Value * getValue() const</div><div class="ttdoc">Get/has methods of the components. </div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00095">SVFVariables.h:95</a></div></div>