svf-tools 1.0.355 → 1.0.359

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 (192) hide show
  1. package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +2 -2
  2. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +1 -1
  3. package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +1 -1
  4. package/SVF-doxygen/html/html/CallGraphBuilder_8cpp_source.html +1 -1
  5. package/SVF-doxygen/html/html/ConsG_8h_source.html +2 -2
  6. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +3 -3
  7. package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +6 -6
  8. package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +2 -2
  9. package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +3 -3
  10. package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +2 -4
  11. package/SVF-doxygen/html/html/ICFGBuilder_8h_source.html +7 -7
  12. package/SVF-doxygen/html/html/ICFGNode_8h_source.html +3 -3
  13. package/SVF-doxygen/html/html/ICFG_8cpp_source.html +17 -17
  14. package/SVF-doxygen/html/html/ICFG_8h_source.html +17 -18
  15. package/SVF-doxygen/html/html/IRGraph_8h_source.html +2 -2
  16. package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +3 -3
  17. package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +12 -12
  18. package/SVF-doxygen/html/html/LocationSet_8h_source.html +1 -1
  19. package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +1 -1
  20. package/SVF-doxygen/html/html/LockResultValidator_8h_source.html +2 -2
  21. package/SVF-doxygen/html/html/MHP_8h_source.html +2 -2
  22. package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +1 -1
  23. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +10 -10
  24. package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +2 -2
  25. package/SVF-doxygen/html/html/PAGBuilderFromFile_8cpp_source.html +1 -1
  26. package/SVF-doxygen/html/html/PCG_8cpp_source.html +1 -1
  27. package/SVF-doxygen/html/html/PCG_8h_source.html +3 -3
  28. package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +15 -15
  29. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +2 -2
  30. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +8 -8
  31. package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +5 -5
  32. package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +3 -3
  33. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +5 -5
  34. package/SVF-doxygen/html/html/SVFG_8h_source.html +5 -5
  35. package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +2 -2
  36. package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +2 -2
  37. package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +7 -7
  38. package/SVF-doxygen/html/html/SVFIR_8h_source.html +8 -8
  39. package/SVF-doxygen/html/html/SVFModule_8cpp_source.html +1 -1
  40. package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +1 -1
  41. package/SVF-doxygen/html/html/SVFStatements_8h_source.html +1 -1
  42. package/SVF-doxygen/html/html/SVFVariables_8h_source.html +5 -5
  43. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +1 -1
  44. package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +22 -22
  45. package/SVF-doxygen/html/html/SymbolTableBuilder_8h_source.html +1 -1
  46. package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +52 -50
  47. package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +86 -83
  48. package/SVF-doxygen/html/html/TCT_8cpp_source.html +1 -1
  49. package/SVF-doxygen/html/html/TCT_8h_source.html +2 -2
  50. package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +3 -3
  51. package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +3 -3
  52. package/SVF-doxygen/html/html/TypeBasedHeapCloning_8h_source.html +1 -1
  53. package/SVF-doxygen/html/html/VFG_8cpp_source.html +3 -3
  54. package/SVF-doxygen/html/html/VFG_8h_source.html +6 -6
  55. package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +3 -3
  56. package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +2 -2
  57. package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +5 -5
  58. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +2 -2
  59. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +2 -2
  60. package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +2 -2
  61. package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +1 -1
  62. package/SVF-doxygen/html/html/classSVF_1_1CallGraphBuilder.html +2 -2
  63. package/SVF-doxygen/html/html/classSVF_1_1CallICFGNode-members.html +1 -1
  64. package/SVF-doxygen/html/html/classSVF_1_1CallICFGNode.html +6 -6
  65. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +3 -3
  66. package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +1 -1
  67. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +2 -2
  68. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +1 -1
  69. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +3 -3
  70. package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +2 -2
  71. package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +4 -4
  72. package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +1 -1
  73. package/SVF-doxygen/html/html/classSVF_1_1ICFG-members.html +22 -22
  74. package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +234 -234
  75. package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder-members.html +3 -3
  76. package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +48 -51
  77. package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter-members.html +11 -11
  78. package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter.html +17 -17
  79. package/SVF-doxygen/html/html/classSVF_1_1IRGraph.html +1 -1
  80. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +3 -3
  81. package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +27 -29
  82. package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +8 -8
  83. package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +2 -2
  84. package/SVF-doxygen/html/html/classSVF_1_1MHP.html +2 -2
  85. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +16 -16
  86. package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +2 -2
  87. package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +87 -87
  88. package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +6 -6
  89. package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo.html +99 -99
  90. package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +1 -1
  91. package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +1 -1
  92. package/SVF-doxygen/html/html/classSVF_1_1PCG-members.html +1 -1
  93. package/SVF-doxygen/html/html/classSVF_1_1PCG.html +9 -9
  94. package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +16 -16
  95. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +11 -11
  96. package/SVF-doxygen/html/html/classSVF_1_1RetICFGNode-members.html +1 -1
  97. package/SVF-doxygen/html/html/classSVF_1_1RetICFGNode.html +5 -5
  98. package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +13 -13
  99. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +3 -3
  100. package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +20 -20
  101. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +31 -31
  102. package/SVF-doxygen/html/html/classSVF_1_1SVFModule.html +1 -1
  103. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +1 -1
  104. package/SVF-doxygen/html/html/classSVF_1_1StInfo-members.html +20 -15
  105. package/SVF-doxygen/html/html/classSVF_1_1StInfo.html +239 -89
  106. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +35 -35
  107. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo-members.html +6 -4
  108. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +178 -130
  109. package/SVF-doxygen/html/html/classSVF_1_1TCT-members.html +1 -1
  110. package/SVF-doxygen/html/html/classSVF_1_1TCT.html +12 -12
  111. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +3 -3
  112. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraphBuilder.html +2 -2
  113. package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +4 -4
  114. package/SVF-doxygen/html/html/classSVF_1_1VFG.html +16 -16
  115. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +3 -3
  116. package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +6 -6
  117. package/SVF-doxygen/html/html/functions_a.html +13 -13
  118. package/SVF-doxygen/html/html/functions_e.html +3 -0
  119. package/SVF-doxygen/html/html/functions_f.html +15 -20
  120. package/SVF-doxygen/html/html/functions_func.html +13 -13
  121. package/SVF-doxygen/html/html/functions_func_g.html +51 -50
  122. package/SVF-doxygen/html/html/functions_func_s.html +8 -5
  123. package/SVF-doxygen/html/html/functions_g.html +45 -44
  124. package/SVF-doxygen/html/html/functions_i.html +3 -3
  125. package/SVF-doxygen/html/html/functions_l.html +6 -6
  126. package/SVF-doxygen/html/html/functions_n.html +6 -0
  127. package/SVF-doxygen/html/html/functions_p.html +9 -9
  128. package/SVF-doxygen/html/html/functions_r.html +2 -4
  129. package/SVF-doxygen/html/html/functions_s.html +22 -19
  130. package/SVF-doxygen/html/html/functions_t.html +7 -7
  131. package/SVF-doxygen/html/html/functions_vars_e.html +3 -0
  132. package/SVF-doxygen/html/html/functions_vars_f.html +0 -3
  133. package/SVF-doxygen/html/html/functions_vars_n.html +6 -0
  134. package/SVF-doxygen/html/html/search/all_1.js +6 -6
  135. package/SVF-doxygen/html/html/search/all_10.js +6 -6
  136. package/SVF-doxygen/html/html/search/all_12.js +2 -2
  137. package/SVF-doxygen/html/html/search/all_13.js +9 -8
  138. package/SVF-doxygen/html/html/search/all_14.js +4 -4
  139. package/SVF-doxygen/html/html/search/all_15.js +1 -1
  140. package/SVF-doxygen/html/html/search/all_16.js +1 -1
  141. package/SVF-doxygen/html/html/search/all_5.js +1 -0
  142. package/SVF-doxygen/html/html/search/all_6.js +0 -1
  143. package/SVF-doxygen/html/html/search/all_7.js +18 -19
  144. package/SVF-doxygen/html/html/search/all_9.js +1 -1
  145. package/SVF-doxygen/html/html/search/all_c.js +2 -2
  146. package/SVF-doxygen/html/html/search/all_d.js +1 -1
  147. package/SVF-doxygen/html/html/search/all_e.js +4 -2
  148. package/SVF-doxygen/html/html/search/functions_0.js +6 -6
  149. package/SVF-doxygen/html/html/search/functions_10.js +1 -0
  150. package/SVF-doxygen/html/html/search/functions_6.js +18 -19
  151. package/SVF-doxygen/html/html/search/functions_e.js +1 -1
  152. package/SVF-doxygen/html/html/search/variables_14.js +2 -2
  153. package/SVF-doxygen/html/html/search/variables_15.js +1 -1
  154. package/SVF-doxygen/html/html/search/variables_5.js +1 -0
  155. package/SVF-doxygen/html/html/search/variables_6.js +0 -1
  156. package/SVF-doxygen/html/html/search/variables_d.js +1 -1
  157. package/SVF-doxygen/html/html/search/variables_e.js +3 -1
  158. package/SVF-doxygen/html/html/svf-ex_8cpp.html +2 -2
  159. package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +2 -2
  160. package/include/Graphs/ICFG.h +18 -18
  161. package/include/Graphs/ICFGNode.h +2 -2
  162. package/include/Graphs/SVFG.h +4 -4
  163. package/include/Graphs/SVFGOPT.h +2 -2
  164. package/include/Graphs/VFG.h +7 -7
  165. package/include/MTA/LockResultValidator.h +1 -1
  166. package/include/MTA/MHP.h +2 -2
  167. package/include/MTA/PCG.h +2 -2
  168. package/include/MTA/TCT.h +2 -2
  169. package/include/MemoryModel/SVFIR.h +2 -2
  170. package/include/MemoryModel/SymbolTableInfo.h +37 -41
  171. package/include/SVF-FE/ICFGBuilder.h +5 -5
  172. package/include/SVF-FE/SVFIRBuilder.h +1 -1
  173. package/lib/Graphs/ICFG.cpp +23 -23
  174. package/lib/Graphs/SVFG.cpp +4 -4
  175. package/lib/Graphs/VFG.cpp +3 -3
  176. package/lib/MSSA/MemRegion.cpp +7 -7
  177. package/lib/MSSA/MemSSA.cpp +3 -3
  178. package/lib/MTA/LockAnalysis.cpp +4 -4
  179. package/lib/MTA/MTAResultValidator.cpp +1 -1
  180. package/lib/MTA/PCG.cpp +1 -1
  181. package/lib/MTA/TCT.cpp +2 -2
  182. package/lib/MemoryModel/LocationSet.cpp +42 -37
  183. package/lib/MemoryModel/PointerAnalysis.cpp +1 -1
  184. package/lib/MemoryModel/SymbolTableInfo.cpp +71 -8
  185. package/lib/SABER/LeakChecker.cpp +3 -3
  186. package/lib/SVF-FE/CallGraphBuilder.cpp +4 -4
  187. package/lib/SVF-FE/ICFGBuilder.cpp +19 -27
  188. package/lib/SVF-FE/SVFIRBuilder.cpp +15 -15
  189. package/lib/WPA/Andersen.cpp +3 -3
  190. package/lib/WPA/WPAPass.cpp +4 -4
  191. package/package.json +1 -1
  192. package/tools/Example/svf-ex.cpp +1 -1
@@ -66,7 +66,7 @@ $(function() {
66
66
  <div class="title">PCG.h</div> </div>
67
67
  </div><!--header-->
68
68
  <div class="contents">
69
- <a href="PCG_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">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * MHP.h</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * Created on: Jan 21, 2014</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * Author: Yulei Sui, Peng Di</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="preprocessor">#ifndef PCG_H_</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="preprocessor">#define PCG_H_</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="ThreadAPI_8h.html">Util/ThreadAPI.h</a>&quot;</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="PTACallGraph_8h.html">Graphs/PTACallGraph.h</a>&quot;</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="WorkList_8h.html">Util/WorkList.h</a>&quot;</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="Andersen_8h.html">WPA/Andersen.h</a>&quot;</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#include &lt;set&gt;</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</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="preprocessor">#include &quot;<a class="code" href="MHP_8h.html">MHP.h</a>&quot;</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;{</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno"><a class="line" href="classSVF_1_1PCG.html"> 28</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1PCG.html">PCG</a></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;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00032"></a><span class="lineno"><a class="line" href="classSVF_1_1PCG.html#a0dea1e31042fa960f7a259949e142bcf"> 32</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const Function*&gt;</a> <a class="code" href="classSVF_1_1PCG.html#a0dea1e31042fa960f7a259949e142bcf">FunSet</a>;</div><div class="line"><a name="l00033"></a><span class="lineno"><a class="line" href="classSVF_1_1PCG.html#aca2efdefda1f95a6450eca4a781cbefa"> 33</a></span>&#160; <span class="keyword">typedef</span> std::vector&lt;const Function*&gt; <a class="code" href="classSVF_1_1PCG.html#aca2efdefda1f95a6450eca4a781cbefa">FunVec</a>;</div><div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="classSVF_1_1PCG.html#a866cab5d550f60984d66068474755e2d"> 34</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const Instruction*&gt;</a> <a class="code" href="classSVF_1_1PCG.html#a866cab5d550f60984d66068474755e2d">CallInstSet</a>;</div><div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="classSVF_1_1PCG.html#a19fea9790fffea9861c0dc7817b60a3e"> 35</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1FIFOWorkList.html">FIFOWorkList&lt;const Function*&gt;</a> <a class="code" href="classSVF_1_1PCG.html#a19fea9790fffea9861c0dc7817b60a3e">FunWorkList</a>;</div><div class="line"><a name="l00036"></a><span class="lineno"><a class="line" href="classSVF_1_1PCG.html#a05759205f1362b6d72041cf669cf028d"> 36</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1FIFOWorkList.html">FIFOWorkList&lt;const BasicBlock*&gt;</a> <a class="code" href="classSVF_1_1PCG.html#a05759205f1362b6d72041cf669cf028d">BBWorkList</a>;</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">private</span>:</div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="classSVF_1_1PCG.html#a3f7f0c7aaa768f7e834b4763b18d8223"> 39</a></span>&#160; FunSet <a class="code" href="classSVF_1_1PCG.html#a3f7f0c7aaa768f7e834b4763b18d8223">spawners</a>;</div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="classSVF_1_1PCG.html#a7191718edabfd8ce2df5bfbea683c1fa"> 40</a></span>&#160; FunSet <a class="code" href="classSVF_1_1PCG.html#a7191718edabfd8ce2df5bfbea683c1fa">spawnees</a>;</div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="classSVF_1_1PCG.html#ab3a3d18bac6e1f833583d41fa562caea"> 41</a></span>&#160; FunSet <a class="code" href="classSVF_1_1PCG.html#ab3a3d18bac6e1f833583d41fa562caea">followers</a>;</div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="classSVF_1_1PCG.html#a96f91b051a8035b614e015bf4d5081e0"> 42</a></span>&#160; FunSet <a class="code" href="classSVF_1_1PCG.html#a96f91b051a8035b614e015bf4d5081e0">mhpfuns</a>;</div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="classSVF_1_1PCG.html#ae9026f717c442198ffa90ff66f482c92"> 43</a></span>&#160; <a class="code" href="classSVF_1_1PTACallGraph.html">PTACallGraph</a>* <a class="code" href="classSVF_1_1PCG.html#ae9026f717c442198ffa90ff66f482c92">callgraph</a>;</div><div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="classSVF_1_1PCG.html#a985b0c790c582d15e6242950ac66f574"> 44</a></span>&#160; <a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* <a class="code" href="classSVF_1_1PCG.html#a985b0c790c582d15e6242950ac66f574">mod</a>;</div><div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="classSVF_1_1PCG.html#adb917fc3adc3b0c3aedd57e9c77eae05"> 45</a></span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html">PointerAnalysis</a>* <a class="code" href="classSVF_1_1PCG.html#adb917fc3adc3b0c3aedd57e9c77eae05">pta</a>;</div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="classSVF_1_1PCG.html#a8215dc3643d1c4fb3d489e80cd3db336"> 46</a></span>&#160; <a class="code" href="classSVF_1_1ThreadAPI.html">ThreadAPI</a>* <a class="code" href="classSVF_1_1PCG.html#a8215dc3643d1c4fb3d489e80cd3db336">tdAPI</a>;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;</div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="classSVF_1_1PCG.html#a859545671beab2a85c721ce98b785452"> 49</a></span>&#160; CallInstSet <a class="code" href="classSVF_1_1PCG.html#a859545671beab2a85c721ce98b785452">spawnCallSites</a>;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</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"><a class="line" href="classSVF_1_1PCG.html#a13bfb66d3c02157cd3bebad1f829d704"> 53</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PCG.html#a13bfb66d3c02157cd3bebad1f829d704">isSpawnerFun</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun)<span class="keyword"> const</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keywordflow">return</span> spawners.find(fun) != spawners.end();</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; }</div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="classSVF_1_1PCG.html#a4196d5ffc1542288fd7df5daffaca894"> 57</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PCG.html#a4196d5ffc1542288fd7df5daffaca894">isSpawneeFun</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun)<span class="keyword"> const</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">return</span> spawnees.find(fun) != spawnees.end();</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; }</div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="classSVF_1_1PCG.html#a7531d638b4f8aca4f0a3af82391001d9"> 61</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PCG.html#a7531d638b4f8aca4f0a3af82391001d9">isFollowerFun</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun)<span class="keyword"> const</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordflow">return</span> followers.find(fun) != followers.end();</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"><a class="line" href="classSVF_1_1PCG.html#a11c45407138211987e5143d81ccceb95"> 65</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PCG.html#a11c45407138211987e5143d81ccceb95">addSpawnerFun</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun)</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; {</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">if</span> (fun-&gt;isDeclaration())</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordflow">return</span> spawners.insert(fun).second;</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"><a class="line" href="classSVF_1_1PCG.html#acc48f65798275f5443b34b84e4bb6eae"> 71</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PCG.html#acc48f65798275f5443b34b84e4bb6eae">addSpawneeFun</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun)</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; {</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordflow">if</span> (fun-&gt;isDeclaration())</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">return</span> spawnees.insert(fun).second;</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"><a class="line" href="classSVF_1_1PCG.html#a53e95f74121cd6e35b73f345139f6b00"> 77</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PCG.html#a53e95f74121cd6e35b73f345139f6b00">addFollowerFun</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun)</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; {</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordflow">if</span> (fun-&gt;isDeclaration())</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordflow">return</span> followers.insert(fun).second;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; }</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;</div><div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="classSVF_1_1PCG.html#a1d946482cce92f7b1718a2a8c178be0b"> 87</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PCG.html#a1d946482cce92f7b1718a2a8c178be0b">addSpawnsite</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* callInst)</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; {</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">return</span> spawnCallSites.insert(callInst).second;</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"><a class="line" href="classSVF_1_1PCG.html#ad7fa3ac0bd5820df718295f66dbf1edc"> 91</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PCG.html#ad7fa3ac0bd5820df718295f66dbf1edc">isSpawnsite</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* callInst)</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="keywordflow">return</span> spawnCallSites.find(callInst) != spawnCallSites.end();</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; }</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;</div><div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="classSVF_1_1PCG.html#a2a7319200ec2ec07e8b7976b4a876da8"> 98</a></span>&#160; <span class="keyword">inline</span> CallInstSet::const_iterator <a class="code" href="classSVF_1_1PCG.html#a2a7319200ec2ec07e8b7976b4a876da8">spawnSitesBegin</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keywordflow">return</span> spawnCallSites.begin();</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; }</div><div class="line"><a name="l00102"></a><span class="lineno"><a class="line" href="classSVF_1_1PCG.html#a8dcd94e8f996fdb2197159ea95226817"> 102</a></span>&#160; <span class="keyword">inline</span> CallInstSet::const_iterator <a class="code" href="classSVF_1_1PCG.html#a8dcd94e8f996fdb2197159ea95226817">spawnSitesEnd</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordflow">return</span> spawnCallSites.end();</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; }</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;</div><div class="line"><a name="l00111"></a><span class="lineno"><a class="line" href="classSVF_1_1PCG.html#a482925e80c66f258e0fb863ee6948081"> 111</a></span>&#160; <a class="code" href="classSVF_1_1PCG.html#a482925e80c66f258e0fb863ee6948081">PCG</a>(<a class="code" href="classSVF_1_1PointerAnalysis.html">PointerAnalysis</a>* an) : pta(an)</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; mod = pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#ad8b71cebf46deaf60e2cd4f6d6bb9433">getModule</a>();</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; tdAPI=<a class="code" href="classSVF_1_1ThreadAPI.html#a6852ff1eedc1117e95e45e4a90c80d53">ThreadAPI::getThreadAPI</a>();</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; callgraph = pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a7c9b7e5fe37ae31ba84d167945ca57df">getPTACallGraph</a>();</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; }</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PCG.html#a50b677ec622247a464cee7f0f45c5a53">analyze</a>();</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="classSVF_1_1PCG.html#a3986717a8a3e1515747c3ab2c3e93ca7"> 122</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1PCG.html#a3986717a8a3e1515747c3ab2c3e93ca7">~PCG</a>()</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; </div><div class="line"><a name="l00126"></a><span class="lineno"><a class="line" href="classSVF_1_1PCG.html#ab0ab4b42b42b16dd75fc7db16a3df5a8"> 126</a></span>&#160; <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* <a class="code" href="classSVF_1_1PCG.html#ab0ab4b42b42b16dd75fc7db16a3df5a8">getCallBlockNode</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst) {</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keywordflow">return</span> pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#ade879ee99cae01632d567d3736dcad9e">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#a483e92e076a426ec8f177eab3b971723">getCallBlockNode</a>(inst);</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"><a class="line" href="classSVF_1_1PCG.html#ac7dd2bbd4274a5e3a6427f3b674f99ba"> 129</a></span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* <a class="code" href="classSVF_1_1PCG.html#ac7dd2bbd4274a5e3a6427f3b674f99ba">getSVFFun</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun)<span class="keyword"> const </span>{</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a547b3bc62de65b9dbfc6dee55c063dd7">getSVFFunction</a>(fun);</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; }</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PCG.html#a0a1d0abba4f0775a5d1e9b13aad2f2d0">mayHappenInParallel</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* i1, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* i2) <span class="keyword">const</span>;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PCG.html#a4cab54d7273424c8b26376d8daf15e06">mayHappenInParallelBetweenFunctions</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun1, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun2) <span class="keyword">const</span>;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="comment">//bool mayHappenInParallel(const Function* fun1, const Function* fun2) const;</span></div><div class="line"><a name="l00136"></a><span class="lineno"><a class="line" href="classSVF_1_1PCG.html#a3106e03b7df8b34f50c769e1417f341c"> 136</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> FunSet&amp; <a class="code" href="classSVF_1_1PCG.html#a3106e03b7df8b34f50c769e1417f341c">getMHPFunctions</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PCG.html#a96f91b051a8035b614e015bf4d5081e0">mhpfuns</a>;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; }</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PCG.html#a23752f0a9fe4f01698808d0a50ccc896">initFromThreadAPI</a>(<a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* module);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PCG.html#adff1702e1b0a902de7ded742846fe137">inferFromCallGraph</a>();</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PCG.html#aef06745128e4e99c8e3bab226a337041">collectSpawners</a>();</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PCG.html#a8cff88e2a6cee5f655e491f9f2967460">collectSpawnees</a>();</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PCG.html#a075370a557f111219530e166df745c15">collectFollowers</a>();</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PCG.html#ae5ee8cf8cfe42854407190f30f3b6c1b">identifyFollowers</a>();</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;</div><div class="line"><a name="l00155"></a><span class="lineno"><a class="line" href="classSVF_1_1PCG.html#a6efd56a0a1810cf9036dd9203ea5e71e"> 155</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> FunSet&amp; <a class="code" href="classSVF_1_1PCG.html#a6efd56a0a1810cf9036dd9203ea5e71e">getSpawners</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PCG.html#a3f7f0c7aaa768f7e834b4763b18d8223">spawners</a>;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; }</div><div class="line"><a name="l00159"></a><span class="lineno"><a class="line" href="classSVF_1_1PCG.html#a4aee985ede8e6ed6dd92574494101df9"> 159</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> FunSet&amp; <a class="code" href="classSVF_1_1PCG.html#a4aee985ede8e6ed6dd92574494101df9">getSpawnees</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PCG.html#a7191718edabfd8ce2df5bfbea683c1fa">spawnees</a>;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; }</div><div class="line"><a name="l00163"></a><span class="lineno"><a class="line" href="classSVF_1_1PCG.html#a1312d734609f82230d3c00a99b189db9"> 163</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> FunSet&amp; <a class="code" href="classSVF_1_1PCG.html#a1312d734609f82230d3c00a99b189db9">getFollowers</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PCG.html#ab3a3d18bac6e1f833583d41fa562caea">followers</a>;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; }</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;</div><div class="line"><a name="l00171"></a><span class="lineno"><a class="line" href="classSVF_1_1PCG.html#ab066a00bc693e20b18c4bf3cb90390fa"> 171</a></span>&#160; <span class="keyword">inline</span> FunSet::const_iterator <a class="code" href="classSVF_1_1PCG.html#ab066a00bc693e20b18c4bf3cb90390fa">spawnersBegin</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun)<span class="keyword"> const</span></div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="keywordflow">return</span> spawners.begin();</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; }</div><div class="line"><a name="l00175"></a><span class="lineno"><a class="line" href="classSVF_1_1PCG.html#ae0062860a89d191c2532834ac93c4c64"> 175</a></span>&#160; <span class="keyword">inline</span> FunSet::const_iterator <a class="code" href="classSVF_1_1PCG.html#ae0062860a89d191c2532834ac93c4c64">spawnersEnd</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun)<span class="keyword"> const</span></div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="keywordflow">return</span> spawners.end();</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; }</div><div class="line"><a name="l00179"></a><span class="lineno"><a class="line" href="classSVF_1_1PCG.html#a776beaeae8b6058f1f9c314a77e32083"> 179</a></span>&#160; <span class="keyword">inline</span> FunSet::const_iterator <a class="code" href="classSVF_1_1PCG.html#a776beaeae8b6058f1f9c314a77e32083">spawneesBegin</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun)<span class="keyword"> const</span></div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keywordflow">return</span> spawnees.begin();</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; }</div><div class="line"><a name="l00183"></a><span class="lineno"><a class="line" href="classSVF_1_1PCG.html#aa1c312e8ce499498358e7618cbdb6016"> 183</a></span>&#160; <span class="keyword">inline</span> FunSet::const_iterator <a class="code" href="classSVF_1_1PCG.html#aa1c312e8ce499498358e7618cbdb6016">spawneesEnd</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun)<span class="keyword"> const</span></div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keywordflow">return</span> spawnees.end();</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; }</div><div class="line"><a name="l00187"></a><span class="lineno"><a class="line" href="classSVF_1_1PCG.html#aa3d0ccb72cf83c7227dc975d71865f7d"> 187</a></span>&#160; <span class="keyword">inline</span> FunSet::const_iterator <a class="code" href="classSVF_1_1PCG.html#aa3d0ccb72cf83c7227dc975d71865f7d">followersBegin</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun)<span class="keyword"> const</span></div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="keywordflow">return</span> followers.begin();</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; }</div><div class="line"><a name="l00191"></a><span class="lineno"><a class="line" href="classSVF_1_1PCG.html#ad67d66001177055b0b534732d381afea"> 191</a></span>&#160; <span class="keyword">inline</span> FunSet::const_iterator <a class="code" href="classSVF_1_1PCG.html#ad67d66001177055b0b534732d381afea">followersEnd</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun)<span class="keyword"> const</span></div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keywordflow">return</span> followers.end();</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; }</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160;</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PCG.html#a057887f3d5fd3b9b414e573b3f9f4548">interferenceAnalysis</a>();</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PCG.html#ab8a16eb34da91f2b7cd5a456653b1da0">printResults</a>();</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PCG.html#af8af0a2a2159261bf05abe226c43006e">printTDFuns</a>();</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;};</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160;</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160;} <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160;</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* PCG_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="Andersen_8h_html"><div class="ttname"><a href="Andersen_8h.html">Andersen.h</a></div></div>
69
+ <a href="PCG_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">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * MHP.h</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * Created on: Jan 21, 2014</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * Author: Yulei Sui, Peng Di</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="preprocessor">#ifndef PCG_H_</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="preprocessor">#define PCG_H_</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="ThreadAPI_8h.html">Util/ThreadAPI.h</a>&quot;</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="PTACallGraph_8h.html">Graphs/PTACallGraph.h</a>&quot;</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="WorkList_8h.html">Util/WorkList.h</a>&quot;</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="Andersen_8h.html">WPA/Andersen.h</a>&quot;</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#include &lt;set&gt;</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</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="preprocessor">#include &quot;<a class="code" href="MHP_8h.html">MHP.h</a>&quot;</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;{</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno"><a class="line" href="classSVF_1_1PCG.html"> 28</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1PCG.html">PCG</a></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;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00032"></a><span class="lineno"><a class="line" href="classSVF_1_1PCG.html#a0dea1e31042fa960f7a259949e142bcf"> 32</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const Function*&gt;</a> <a class="code" href="classSVF_1_1PCG.html#a0dea1e31042fa960f7a259949e142bcf">FunSet</a>;</div><div class="line"><a name="l00033"></a><span class="lineno"><a class="line" href="classSVF_1_1PCG.html#aca2efdefda1f95a6450eca4a781cbefa"> 33</a></span>&#160; <span class="keyword">typedef</span> std::vector&lt;const Function*&gt; <a class="code" href="classSVF_1_1PCG.html#aca2efdefda1f95a6450eca4a781cbefa">FunVec</a>;</div><div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="classSVF_1_1PCG.html#a866cab5d550f60984d66068474755e2d"> 34</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const Instruction*&gt;</a> <a class="code" href="classSVF_1_1PCG.html#a866cab5d550f60984d66068474755e2d">CallInstSet</a>;</div><div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="classSVF_1_1PCG.html#a19fea9790fffea9861c0dc7817b60a3e"> 35</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1FIFOWorkList.html">FIFOWorkList&lt;const Function*&gt;</a> <a class="code" href="classSVF_1_1PCG.html#a19fea9790fffea9861c0dc7817b60a3e">FunWorkList</a>;</div><div class="line"><a name="l00036"></a><span class="lineno"><a class="line" href="classSVF_1_1PCG.html#a05759205f1362b6d72041cf669cf028d"> 36</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1FIFOWorkList.html">FIFOWorkList&lt;const BasicBlock*&gt;</a> <a class="code" href="classSVF_1_1PCG.html#a05759205f1362b6d72041cf669cf028d">BBWorkList</a>;</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">private</span>:</div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="classSVF_1_1PCG.html#a3f7f0c7aaa768f7e834b4763b18d8223"> 39</a></span>&#160; FunSet <a class="code" href="classSVF_1_1PCG.html#a3f7f0c7aaa768f7e834b4763b18d8223">spawners</a>;</div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="classSVF_1_1PCG.html#a7191718edabfd8ce2df5bfbea683c1fa"> 40</a></span>&#160; FunSet <a class="code" href="classSVF_1_1PCG.html#a7191718edabfd8ce2df5bfbea683c1fa">spawnees</a>;</div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="classSVF_1_1PCG.html#ab3a3d18bac6e1f833583d41fa562caea"> 41</a></span>&#160; FunSet <a class="code" href="classSVF_1_1PCG.html#ab3a3d18bac6e1f833583d41fa562caea">followers</a>;</div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="classSVF_1_1PCG.html#a96f91b051a8035b614e015bf4d5081e0"> 42</a></span>&#160; FunSet <a class="code" href="classSVF_1_1PCG.html#a96f91b051a8035b614e015bf4d5081e0">mhpfuns</a>;</div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="classSVF_1_1PCG.html#ae9026f717c442198ffa90ff66f482c92"> 43</a></span>&#160; <a class="code" href="classSVF_1_1PTACallGraph.html">PTACallGraph</a>* <a class="code" href="classSVF_1_1PCG.html#ae9026f717c442198ffa90ff66f482c92">callgraph</a>;</div><div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="classSVF_1_1PCG.html#a985b0c790c582d15e6242950ac66f574"> 44</a></span>&#160; <a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* <a class="code" href="classSVF_1_1PCG.html#a985b0c790c582d15e6242950ac66f574">mod</a>;</div><div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="classSVF_1_1PCG.html#adb917fc3adc3b0c3aedd57e9c77eae05"> 45</a></span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html">PointerAnalysis</a>* <a class="code" href="classSVF_1_1PCG.html#adb917fc3adc3b0c3aedd57e9c77eae05">pta</a>;</div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="classSVF_1_1PCG.html#a8215dc3643d1c4fb3d489e80cd3db336"> 46</a></span>&#160; <a class="code" href="classSVF_1_1ThreadAPI.html">ThreadAPI</a>* <a class="code" href="classSVF_1_1PCG.html#a8215dc3643d1c4fb3d489e80cd3db336">tdAPI</a>;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;</div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="classSVF_1_1PCG.html#a859545671beab2a85c721ce98b785452"> 49</a></span>&#160; CallInstSet <a class="code" href="classSVF_1_1PCG.html#a859545671beab2a85c721ce98b785452">spawnCallSites</a>;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</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"><a class="line" href="classSVF_1_1PCG.html#a13bfb66d3c02157cd3bebad1f829d704"> 53</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PCG.html#a13bfb66d3c02157cd3bebad1f829d704">isSpawnerFun</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun)<span class="keyword"> const</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keywordflow">return</span> spawners.find(fun) != spawners.end();</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; }</div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="classSVF_1_1PCG.html#a4196d5ffc1542288fd7df5daffaca894"> 57</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PCG.html#a4196d5ffc1542288fd7df5daffaca894">isSpawneeFun</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun)<span class="keyword"> const</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">return</span> spawnees.find(fun) != spawnees.end();</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; }</div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="classSVF_1_1PCG.html#a7531d638b4f8aca4f0a3af82391001d9"> 61</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PCG.html#a7531d638b4f8aca4f0a3af82391001d9">isFollowerFun</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun)<span class="keyword"> const</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordflow">return</span> followers.find(fun) != followers.end();</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"><a class="line" href="classSVF_1_1PCG.html#a11c45407138211987e5143d81ccceb95"> 65</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PCG.html#a11c45407138211987e5143d81ccceb95">addSpawnerFun</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun)</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; {</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">if</span> (fun-&gt;isDeclaration())</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordflow">return</span> spawners.insert(fun).second;</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"><a class="line" href="classSVF_1_1PCG.html#acc48f65798275f5443b34b84e4bb6eae"> 71</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PCG.html#acc48f65798275f5443b34b84e4bb6eae">addSpawneeFun</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun)</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; {</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordflow">if</span> (fun-&gt;isDeclaration())</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">return</span> spawnees.insert(fun).second;</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"><a class="line" href="classSVF_1_1PCG.html#a53e95f74121cd6e35b73f345139f6b00"> 77</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PCG.html#a53e95f74121cd6e35b73f345139f6b00">addFollowerFun</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun)</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; {</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordflow">if</span> (fun-&gt;isDeclaration())</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordflow">return</span> followers.insert(fun).second;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; }</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;</div><div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="classSVF_1_1PCG.html#a1d946482cce92f7b1718a2a8c178be0b"> 87</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PCG.html#a1d946482cce92f7b1718a2a8c178be0b">addSpawnsite</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* callInst)</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; {</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">return</span> spawnCallSites.insert(callInst).second;</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"><a class="line" href="classSVF_1_1PCG.html#ad7fa3ac0bd5820df718295f66dbf1edc"> 91</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PCG.html#ad7fa3ac0bd5820df718295f66dbf1edc">isSpawnsite</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* callInst)</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="keywordflow">return</span> spawnCallSites.find(callInst) != spawnCallSites.end();</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; }</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;</div><div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="classSVF_1_1PCG.html#a2a7319200ec2ec07e8b7976b4a876da8"> 98</a></span>&#160; <span class="keyword">inline</span> CallInstSet::const_iterator <a class="code" href="classSVF_1_1PCG.html#a2a7319200ec2ec07e8b7976b4a876da8">spawnSitesBegin</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keywordflow">return</span> spawnCallSites.begin();</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; }</div><div class="line"><a name="l00102"></a><span class="lineno"><a class="line" href="classSVF_1_1PCG.html#a8dcd94e8f996fdb2197159ea95226817"> 102</a></span>&#160; <span class="keyword">inline</span> CallInstSet::const_iterator <a class="code" href="classSVF_1_1PCG.html#a8dcd94e8f996fdb2197159ea95226817">spawnSitesEnd</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordflow">return</span> spawnCallSites.end();</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; }</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;</div><div class="line"><a name="l00111"></a><span class="lineno"><a class="line" href="classSVF_1_1PCG.html#a482925e80c66f258e0fb863ee6948081"> 111</a></span>&#160; <a class="code" href="classSVF_1_1PCG.html#a482925e80c66f258e0fb863ee6948081">PCG</a>(<a class="code" href="classSVF_1_1PointerAnalysis.html">PointerAnalysis</a>* an) : pta(an)</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; mod = pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#ad8b71cebf46deaf60e2cd4f6d6bb9433">getModule</a>();</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; tdAPI=<a class="code" href="classSVF_1_1ThreadAPI.html#a6852ff1eedc1117e95e45e4a90c80d53">ThreadAPI::getThreadAPI</a>();</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; callgraph = pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a7c9b7e5fe37ae31ba84d167945ca57df">getPTACallGraph</a>();</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; }</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PCG.html#a50b677ec622247a464cee7f0f45c5a53">analyze</a>();</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="classSVF_1_1PCG.html#a3986717a8a3e1515747c3ab2c3e93ca7"> 122</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1PCG.html#a3986717a8a3e1515747c3ab2c3e93ca7">~PCG</a>()</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; </div><div class="line"><a name="l00126"></a><span class="lineno"><a class="line" href="classSVF_1_1PCG.html#a48c51b626e516aa1c0768b57becb6f68"> 126</a></span>&#160; <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* <a class="code" href="classSVF_1_1PCG.html#a48c51b626e516aa1c0768b57becb6f68">getCallICFGNode</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst) {</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keywordflow">return</span> pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#ade879ee99cae01632d567d3736dcad9e">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#adc66b547720b9271e6805edea0b9d01f">getCallICFGNode</a>(inst);</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; }</div><div class="line"><a name="l00129"></a><span class="lineno"><a class="line" href="classSVF_1_1PCG.html#ac7dd2bbd4274a5e3a6427f3b674f99ba"> 129</a></span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* <a class="code" href="classSVF_1_1PCG.html#ac7dd2bbd4274a5e3a6427f3b674f99ba">getSVFFun</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun)<span class="keyword"> const </span>{</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a547b3bc62de65b9dbfc6dee55c063dd7">getSVFFunction</a>(fun);</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; }</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PCG.html#a0a1d0abba4f0775a5d1e9b13aad2f2d0">mayHappenInParallel</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* i1, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* i2) <span class="keyword">const</span>;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PCG.html#a4cab54d7273424c8b26376d8daf15e06">mayHappenInParallelBetweenFunctions</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun1, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun2) <span class="keyword">const</span>;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="comment">//bool mayHappenInParallel(const Function* fun1, const Function* fun2) const;</span></div><div class="line"><a name="l00136"></a><span class="lineno"><a class="line" href="classSVF_1_1PCG.html#a3106e03b7df8b34f50c769e1417f341c"> 136</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> FunSet&amp; <a class="code" href="classSVF_1_1PCG.html#a3106e03b7df8b34f50c769e1417f341c">getMHPFunctions</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PCG.html#a96f91b051a8035b614e015bf4d5081e0">mhpfuns</a>;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; }</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PCG.html#a23752f0a9fe4f01698808d0a50ccc896">initFromThreadAPI</a>(<a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* module);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PCG.html#adff1702e1b0a902de7ded742846fe137">inferFromCallGraph</a>();</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PCG.html#aef06745128e4e99c8e3bab226a337041">collectSpawners</a>();</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PCG.html#a8cff88e2a6cee5f655e491f9f2967460">collectSpawnees</a>();</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PCG.html#a075370a557f111219530e166df745c15">collectFollowers</a>();</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PCG.html#ae5ee8cf8cfe42854407190f30f3b6c1b">identifyFollowers</a>();</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;</div><div class="line"><a name="l00155"></a><span class="lineno"><a class="line" href="classSVF_1_1PCG.html#a6efd56a0a1810cf9036dd9203ea5e71e"> 155</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> FunSet&amp; <a class="code" href="classSVF_1_1PCG.html#a6efd56a0a1810cf9036dd9203ea5e71e">getSpawners</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PCG.html#a3f7f0c7aaa768f7e834b4763b18d8223">spawners</a>;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; }</div><div class="line"><a name="l00159"></a><span class="lineno"><a class="line" href="classSVF_1_1PCG.html#a4aee985ede8e6ed6dd92574494101df9"> 159</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> FunSet&amp; <a class="code" href="classSVF_1_1PCG.html#a4aee985ede8e6ed6dd92574494101df9">getSpawnees</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PCG.html#a7191718edabfd8ce2df5bfbea683c1fa">spawnees</a>;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; }</div><div class="line"><a name="l00163"></a><span class="lineno"><a class="line" href="classSVF_1_1PCG.html#a1312d734609f82230d3c00a99b189db9"> 163</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> FunSet&amp; <a class="code" href="classSVF_1_1PCG.html#a1312d734609f82230d3c00a99b189db9">getFollowers</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PCG.html#ab3a3d18bac6e1f833583d41fa562caea">followers</a>;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; }</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;</div><div class="line"><a name="l00171"></a><span class="lineno"><a class="line" href="classSVF_1_1PCG.html#ab066a00bc693e20b18c4bf3cb90390fa"> 171</a></span>&#160; <span class="keyword">inline</span> FunSet::const_iterator <a class="code" href="classSVF_1_1PCG.html#ab066a00bc693e20b18c4bf3cb90390fa">spawnersBegin</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun)<span class="keyword"> const</span></div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="keywordflow">return</span> spawners.begin();</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; }</div><div class="line"><a name="l00175"></a><span class="lineno"><a class="line" href="classSVF_1_1PCG.html#ae0062860a89d191c2532834ac93c4c64"> 175</a></span>&#160; <span class="keyword">inline</span> FunSet::const_iterator <a class="code" href="classSVF_1_1PCG.html#ae0062860a89d191c2532834ac93c4c64">spawnersEnd</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun)<span class="keyword"> const</span></div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="keywordflow">return</span> spawners.end();</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; }</div><div class="line"><a name="l00179"></a><span class="lineno"><a class="line" href="classSVF_1_1PCG.html#a776beaeae8b6058f1f9c314a77e32083"> 179</a></span>&#160; <span class="keyword">inline</span> FunSet::const_iterator <a class="code" href="classSVF_1_1PCG.html#a776beaeae8b6058f1f9c314a77e32083">spawneesBegin</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun)<span class="keyword"> const</span></div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keywordflow">return</span> spawnees.begin();</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; }</div><div class="line"><a name="l00183"></a><span class="lineno"><a class="line" href="classSVF_1_1PCG.html#aa1c312e8ce499498358e7618cbdb6016"> 183</a></span>&#160; <span class="keyword">inline</span> FunSet::const_iterator <a class="code" href="classSVF_1_1PCG.html#aa1c312e8ce499498358e7618cbdb6016">spawneesEnd</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun)<span class="keyword"> const</span></div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keywordflow">return</span> spawnees.end();</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; }</div><div class="line"><a name="l00187"></a><span class="lineno"><a class="line" href="classSVF_1_1PCG.html#aa3d0ccb72cf83c7227dc975d71865f7d"> 187</a></span>&#160; <span class="keyword">inline</span> FunSet::const_iterator <a class="code" href="classSVF_1_1PCG.html#aa3d0ccb72cf83c7227dc975d71865f7d">followersBegin</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun)<span class="keyword"> const</span></div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="keywordflow">return</span> followers.begin();</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; }</div><div class="line"><a name="l00191"></a><span class="lineno"><a class="line" href="classSVF_1_1PCG.html#ad67d66001177055b0b534732d381afea"> 191</a></span>&#160; <span class="keyword">inline</span> FunSet::const_iterator <a class="code" href="classSVF_1_1PCG.html#ad67d66001177055b0b534732d381afea">followersEnd</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun)<span class="keyword"> const</span></div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keywordflow">return</span> followers.end();</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; }</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160;</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PCG.html#a057887f3d5fd3b9b414e573b3f9f4548">interferenceAnalysis</a>();</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PCG.html#ab8a16eb34da91f2b7cd5a456653b1da0">printResults</a>();</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PCG.html#af8af0a2a2159261bf05abe226c43006e">printTDFuns</a>();</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;};</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160;</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160;} <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160;</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* PCG_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="Andersen_8h_html"><div class="ttname"><a href="Andersen_8h.html">Andersen.h</a></div></div>
70
70
  <div class="ttc" id="classSVF_1_1PCG_html_ae0062860a89d191c2532834ac93c4c64"><div class="ttname"><a href="classSVF_1_1PCG.html#ae0062860a89d191c2532834ac93c4c64">SVF::PCG::spawnersEnd</a></div><div class="ttdeci">FunSet::const_iterator spawnersEnd(const Function *fun) const</div><div class="ttdef"><b>Definition:</b> <a href="PCG_8h_source.html#l00175">PCG.h:175</a></div></div>
71
71
  <div class="ttc" id="classSVF_1_1PCG_html_ac7dd2bbd4274a5e3a6427f3b674f99ba"><div class="ttname"><a href="classSVF_1_1PCG.html#ac7dd2bbd4274a5e3a6427f3b674f99ba">SVF::PCG::getSVFFun</a></div><div class="ttdeci">const SVFFunction * getSVFFun(const Function *fun) const</div><div class="ttdef"><b>Definition:</b> <a href="PCG_8h_source.html#l00129">PCG.h:129</a></div></div>
72
72
  <div class="ttc" id="classSVF_1_1PCG_html_a7531d638b4f8aca4f0a3af82391001d9"><div class="ttname"><a href="classSVF_1_1PCG.html#a7531d638b4f8aca4f0a3af82391001d9">SVF::PCG::isFollowerFun</a></div><div class="ttdeci">bool isFollowerFun(const Function *fun) const</div><div class="ttdef"><b>Definition:</b> <a href="PCG_8h_source.html#l00061">PCG.h:61</a></div></div>
@@ -96,6 +96,7 @@ $(function() {
96
96
  <div class="ttc" id="classSVF_1_1PCG_html_a50b677ec622247a464cee7f0f45c5a53"><div class="ttname"><a href="classSVF_1_1PCG.html#a50b677ec622247a464cee7f0f45c5a53">SVF::PCG::analyze</a></div><div class="ttdeci">virtual bool analyze()</div><div class="ttdoc">We start the pass here. </div><div class="ttdef"><b>Definition:</b> <a href="PCG_8cpp_source.html#l00021">PCG.cpp:21</a></div></div>
97
97
  <div class="ttc" id="classSVF_1_1PCG_html_a8dcd94e8f996fdb2197159ea95226817"><div class="ttname"><a href="classSVF_1_1PCG.html#a8dcd94e8f996fdb2197159ea95226817">SVF::PCG::spawnSitesEnd</a></div><div class="ttdeci">CallInstSet::const_iterator spawnSitesEnd() const</div><div class="ttdef"><b>Definition:</b> <a href="PCG_8h_source.html#l00102">PCG.h:102</a></div></div>
98
98
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_ad8b71cebf46deaf60e2cd4f6d6bb9433"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#ad8b71cebf46deaf60e2cd4f6d6bb9433">SVF::PointerAnalysis::getModule</a></div><div class="ttdeci">SVFModule * getModule() const</div><div class="ttdoc">Module. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00217">PointerAnalysis.h:217</a></div></div>
99
+ <div class="ttc" id="classSVF_1_1ICFG_html_adc66b547720b9271e6805edea0b9d01f"><div class="ttname"><a href="classSVF_1_1ICFG.html#adc66b547720b9271e6805edea0b9d01f">SVF::ICFG::getCallICFGNode</a></div><div class="ttdeci">CallICFGNode * getCallICFGNode(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00209">ICFG.cpp:209</a></div></div>
99
100
  <div class="ttc" id="classSVF_1_1PCG_html_a96f91b051a8035b614e015bf4d5081e0"><div class="ttname"><a href="classSVF_1_1PCG.html#a96f91b051a8035b614e015bf4d5081e0">SVF::PCG::mhpfuns</a></div><div class="ttdeci">FunSet mhpfuns</div><div class="ttdef"><b>Definition:</b> <a href="PCG_8h_source.html#l00042">PCG.h:42</a></div></div>
100
101
  <div class="ttc" id="classSVF_1_1PCG_html_a859545671beab2a85c721ce98b785452"><div class="ttname"><a href="classSVF_1_1PCG.html#a859545671beab2a85c721ce98b785452">SVF::PCG::spawnCallSites</a></div><div class="ttdeci">CallInstSet spawnCallSites</div><div class="ttdoc">Callsites direct or Indirect call a function which spawn a thread. </div><div class="ttdef"><b>Definition:</b> <a href="PCG_8h_source.html#l00049">PCG.h:49</a></div></div>
101
102
  <div class="ttc" id="classSVF_1_1PCG_html_a0dea1e31042fa960f7a259949e142bcf"><div class="ttname"><a href="classSVF_1_1PCG.html#a0dea1e31042fa960f7a259949e142bcf">SVF::PCG::FunSet</a></div><div class="ttdeci">Set&lt; const Function * &gt; FunSet</div><div class="ttdef"><b>Definition:</b> <a href="PCG_8h_source.html#l00032">PCG.h:32</a></div></div>
@@ -128,11 +129,10 @@ $(function() {
128
129
  <div class="ttc" id="classSVF_1_1CallICFGNode_html"><div class="ttname"><a href="classSVF_1_1CallICFGNode.html">SVF::CallICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00364">ICFGNode.h:364</a></div></div>
129
130
  <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_acf40310917909e4234282c0695a43160"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">SVF::LLVMModuleSet::getLLVMModuleSet</a></div><div class="ttdeci">static LLVMModuleSet * getLLVMModuleSet()</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00069">LLVMModule.h:69</a></div></div>
130
131
  <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="ContextDDA_8h_source.html#l00016">ContextDDA.h:16</a></div></div>
131
- <div class="ttc" id="classSVF_1_1ICFG_html_a483e92e076a426ec8f177eab3b971723"><div class="ttname"><a href="classSVF_1_1ICFG.html#a483e92e076a426ec8f177eab3b971723">SVF::ICFG::getCallBlockNode</a></div><div class="ttdeci">CallICFGNode * getCallBlockNode(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00209">ICFG.cpp:209</a></div></div>
132
+ <div class="ttc" id="classSVF_1_1PCG_html_a48c51b626e516aa1c0768b57becb6f68"><div class="ttname"><a href="classSVF_1_1PCG.html#a48c51b626e516aa1c0768b57becb6f68">SVF::PCG::getCallICFGNode</a></div><div class="ttdeci">CallICFGNode * getCallICFGNode(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="PCG_8h_source.html#l00126">PCG.h:126</a></div></div>
132
133
  <div class="ttc" id="classSVF_1_1PCG_html_a057887f3d5fd3b9b414e573b3f9f4548"><div class="ttname"><a href="classSVF_1_1PCG.html#a057887f3d5fd3b9b414e573b3f9f4548">SVF::PCG::interferenceAnalysis</a></div><div class="ttdeci">void interferenceAnalysis()</div><div class="ttdoc">Thread interferenceAnalysis. </div><div class="ttdef"><b>Definition:</b> <a href="PCG_8cpp_source.html#l00277">PCG.cpp:277</a></div></div>
133
134
  <div class="ttc" id="WorkList_8h_html"><div class="ttname"><a href="WorkList_8h.html">WorkList.h</a></div></div>
134
135
  <div class="ttc" id="classSVF_1_1PCG_html_ad7fa3ac0bd5820df718295f66dbf1edc"><div class="ttname"><a href="classSVF_1_1PCG.html#ad7fa3ac0bd5820df718295f66dbf1edc">SVF::PCG::isSpawnsite</a></div><div class="ttdeci">bool isSpawnsite(const Instruction *callInst)</div><div class="ttdef"><b>Definition:</b> <a href="PCG_8h_source.html#l00091">PCG.h:91</a></div></div>
135
- <div class="ttc" id="classSVF_1_1PCG_html_ab0ab4b42b42b16dd75fc7db16a3df5a8"><div class="ttname"><a href="classSVF_1_1PCG.html#ab0ab4b42b42b16dd75fc7db16a3df5a8">SVF::PCG::getCallBlockNode</a></div><div class="ttdeci">CallICFGNode * getCallBlockNode(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="PCG_8h_source.html#l00126">PCG.h:126</a></div></div>
136
136
  <div class="ttc" id="classSVF_1_1PCG_html_ab3a3d18bac6e1f833583d41fa562caea"><div class="ttname"><a href="classSVF_1_1PCG.html#ab3a3d18bac6e1f833583d41fa562caea">SVF::PCG::followers</a></div><div class="ttdeci">FunSet followers</div><div class="ttdef"><b>Definition:</b> <a href="PCG_8h_source.html#l00041">PCG.h:41</a></div></div>
137
137
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_ade879ee99cae01632d567d3736dcad9e"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#ade879ee99cae01632d567d3736dcad9e">SVF::PointerAnalysis::getICFG</a></div><div class="ttdeci">ICFG * getICFG() const</div><div class="ttdoc">Get ICFG. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00169">PointerAnalysis.h:169</a></div></div>
138
138
  <div class="ttc" id="classSVF_1_1PCG_html_a19fea9790fffea9861c0dc7817b60a3e"><div class="ttname"><a href="classSVF_1_1PCG.html#a19fea9790fffea9861c0dc7817b60a3e">SVF::PCG::FunWorkList</a></div><div class="ttdeci">FIFOWorkList&lt; const Function * &gt; FunWorkList</div><div class="ttdef"><b>Definition:</b> <a href="PCG_8h_source.html#l00035">PCG.h:35</a></div></div>