svf-tools 1.0.362 → 1.0.366

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 (199) hide show
  1. package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +1 -1
  2. package/SVF-doxygen/html/html/Andersen_8h_source.html +1 -1
  3. package/SVF-doxygen/html/html/ConsGNode_8h_source.html +5 -5
  4. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +34 -32
  5. package/SVF-doxygen/html/html/ConsG_8h_source.html +20 -20
  6. package/SVF-doxygen/html/html/ContextDDA_8h_source.html +1 -1
  7. package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +2 -2
  8. package/SVF-doxygen/html/html/DDAClient_8h_source.html +1 -1
  9. package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +1 -1
  10. package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +1 -1
  11. package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +1 -1
  12. package/SVF-doxygen/html/html/FlowDDA_8h_source.html +1 -1
  13. package/SVF-doxygen/html/html/ICFG_8cpp_source.html +9 -9
  14. package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +1 -1
  15. package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +1 -1
  16. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +1 -1
  17. package/SVF-doxygen/html/html/PAGBuilderFromFile_8cpp_source.html +1 -1
  18. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +5 -5
  19. package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +1 -1
  20. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +13 -15
  21. package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +14 -14
  22. package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +2 -2
  23. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +4 -4
  24. package/SVF-doxygen/html/html/SVFG_8h_source.html +1 -1
  25. package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +12 -6
  26. package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +90 -84
  27. package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +43 -39
  28. package/SVF-doxygen/html/html/SVFIR_8h_source.html +41 -39
  29. package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +21 -20
  30. package/SVF-doxygen/html/html/SVFStatements_8h.html +2 -0
  31. package/SVF-doxygen/html/html/SVFStatements_8h_source.html +78 -62
  32. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +1 -1
  33. package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +13 -13
  34. package/SVF-doxygen/html/html/SymbolTableBuilder_8h_source.html +12 -12
  35. package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +1 -1
  36. package/SVF-doxygen/html/html/VFGNode_8h_source.html +5 -5
  37. package/SVF-doxygen/html/html/VFG_8cpp_source.html +42 -40
  38. package/SVF-doxygen/html/html/VFG_8h_source.html +26 -26
  39. package/SVF-doxygen/html/html/annotated.html +58 -57
  40. package/SVF-doxygen/html/html/classSVF_1_1AddrCGEdge.html +2 -2
  41. package/SVF-doxygen/html/html/classSVF_1_1AddrStmt-members.html +14 -13
  42. package/SVF-doxygen/html/html/classSVF_1_1AddrStmt.html +4 -3
  43. package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +1 -1
  44. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +3 -3
  45. package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +1 -1
  46. package/SVF-doxygen/html/html/classSVF_1_1ArgumentVFGNode.html +2 -2
  47. package/SVF-doxygen/html/html/classSVF_1_1AssignStmt-members.html +14 -13
  48. package/SVF-doxygen/html/html/classSVF_1_1AssignStmt.html +4 -3
  49. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +6 -6
  50. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt-members.html +30 -28
  51. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt.html +26 -22
  52. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +2 -2
  53. package/SVF-doxygen/html/html/classSVF_1_1BranchStmt-members.html +16 -15
  54. package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +41 -40
  55. package/SVF-doxygen/html/html/classSVF_1_1BranchVFGNode.html +4 -4
  56. package/SVF-doxygen/html/html/classSVF_1_1CallPE-members.html +14 -13
  57. package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +6 -5
  58. package/SVF-doxygen/html/html/classSVF_1_1CmpStmt-members.html +30 -28
  59. package/SVF-doxygen/html/html/classSVF_1_1CmpStmt.html +27 -23
  60. package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +2 -2
  61. package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +1 -1
  62. package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +79 -77
  63. package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode-members.html +26 -26
  64. package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode.html +43 -43
  65. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +1 -1
  66. package/SVF-doxygen/html/html/classSVF_1_1CopyStmt-members.html +14 -13
  67. package/SVF-doxygen/html/html/classSVF_1_1CopyStmt.html +4 -3
  68. package/SVF-doxygen/html/html/classSVF_1_1DDAClient.html +2 -2
  69. package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +3 -3
  70. package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +1 -1
  71. package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +3 -3
  72. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +1 -1
  73. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +1 -1
  74. package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient.html +1 -1
  75. package/SVF-doxygen/html/html/classSVF_1_1GenericNode.html +20 -21
  76. package/SVF-doxygen/html/html/classSVF_1_1GenericNode.png +0 -0
  77. package/SVF-doxygen/html/html/classSVF_1_1GepStmt-members.html +15 -14
  78. package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +6 -5
  79. package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +4 -5
  80. package/SVF-doxygen/html/html/classSVF_1_1LoadStmt-members.html +14 -13
  81. package/SVF-doxygen/html/html/classSVF_1_1LoadStmt.html +6 -5
  82. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +1 -1
  83. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +1 -1
  84. package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +1 -1
  85. package/SVF-doxygen/html/html/classSVF_1_1MultiOpndStmt-members.html +33 -31
  86. package/SVF-doxygen/html/html/classSVF_1_1MultiOpndStmt.html +66 -24
  87. package/SVF-doxygen/html/html/classSVF_1_1MultiOpndStmt.png +0 -0
  88. package/SVF-doxygen/html/html/classSVF_1_1OfflineConsG.html +4 -4
  89. package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +9 -10
  90. package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +2 -2
  91. package/SVF-doxygen/html/html/classSVF_1_1PhiStmt-members.html +21 -16
  92. package/SVF-doxygen/html/html/classSVF_1_1PhiStmt.html +186 -73
  93. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +38 -40
  94. package/SVF-doxygen/html/html/classSVF_1_1RetPE-members.html +14 -13
  95. package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +6 -5
  96. package/SVF-doxygen/html/html/classSVF_1_1SVFG-members.html +1 -1
  97. package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +10 -10
  98. package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +1 -1
  99. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT-members.html +1 -1
  100. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +8 -8
  101. package/SVF-doxygen/html/html/classSVF_1_1SVFIR-members.html +177 -176
  102. package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +160 -90
  103. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder-members.html +36 -34
  104. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +340 -223
  105. package/SVF-doxygen/html/html/classSVF_1_1SVFStmt-members.html +17 -16
  106. package/SVF-doxygen/html/html/classSVF_1_1SVFStmt.html +9 -5
  107. package/SVF-doxygen/html/html/classSVF_1_1SVFStmt.png +0 -0
  108. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +3 -3
  109. package/SVF-doxygen/html/html/classSVF_1_1SelectStmt-members.html +154 -0
  110. package/SVF-doxygen/html/html/classSVF_1_1SelectStmt.html +704 -0
  111. package/SVF-doxygen/html/html/classSVF_1_1SelectStmt.png +0 -0
  112. package/SVF-doxygen/html/html/classSVF_1_1StmtVFGNode.html +2 -2
  113. package/SVF-doxygen/html/html/classSVF_1_1StoreStmt-members.html +17 -16
  114. package/SVF-doxygen/html/html/classSVF_1_1StoreStmt.html +6 -5
  115. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +39 -39
  116. package/SVF-doxygen/html/html/classSVF_1_1TDForkPE-members.html +17 -16
  117. package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +15 -14
  118. package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE-members.html +17 -16
  119. package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +15 -14
  120. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +2 -2
  121. package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +1 -1
  122. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt-members.html +17 -16
  123. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt.html +29 -28
  124. package/SVF-doxygen/html/html/classSVF_1_1VFG-members.html +1 -1
  125. package/SVF-doxygen/html/html/classSVF_1_1VFG.html +61 -59
  126. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +1 -1
  127. package/SVF-doxygen/html/html/classes.html +70 -70
  128. package/SVF-doxygen/html/html/functions_a.html +12 -8
  129. package/SVF-doxygen/html/html/functions_b.html +4 -2
  130. package/SVF-doxygen/html/html/functions_c.html +31 -29
  131. package/SVF-doxygen/html/html/functions_eval_s.html +3 -0
  132. package/SVF-doxygen/html/html/functions_func.html +12 -8
  133. package/SVF-doxygen/html/html/functions_func_c.html +18 -17
  134. package/SVF-doxygen/html/html/functions_func_g.html +19 -6
  135. package/SVF-doxygen/html/html/functions_func_o.html +2 -1
  136. package/SVF-doxygen/html/html/functions_func_s.html +8 -5
  137. package/SVF-doxygen/html/html/functions_func_t.html +1 -0
  138. package/SVF-doxygen/html/html/functions_func_u.html +1 -0
  139. package/SVF-doxygen/html/html/functions_g.html +22 -9
  140. package/SVF-doxygen/html/html/functions_i.html +3 -3
  141. package/SVF-doxygen/html/html/functions_l.html +3 -3
  142. package/SVF-doxygen/html/html/functions_m.html +1 -1
  143. package/SVF-doxygen/html/html/functions_o.html +20 -13
  144. package/SVF-doxygen/html/html/functions_p.html +6 -6
  145. package/SVF-doxygen/html/html/functions_s.html +23 -17
  146. package/SVF-doxygen/html/html/functions_t.html +5 -4
  147. package/SVF-doxygen/html/html/functions_type_o.html +3 -0
  148. package/SVF-doxygen/html/html/functions_u.html +1 -0
  149. package/SVF-doxygen/html/html/functions_vars_c.html +3 -0
  150. package/SVF-doxygen/html/html/functions_vars_o.html +3 -0
  151. package/SVF-doxygen/html/html/hierarchy.html +55 -54
  152. package/SVF-doxygen/html/html/namespaceSVF.html +3 -1
  153. package/SVF-doxygen/html/html/search/all_1.js +4 -3
  154. package/SVF-doxygen/html/html/search/all_10.js +7 -7
  155. package/SVF-doxygen/html/html/search/all_12.js +1 -1
  156. package/SVF-doxygen/html/html/search/all_13.js +8 -6
  157. package/SVF-doxygen/html/html/search/all_14.js +4 -4
  158. package/SVF-doxygen/html/html/search/all_15.js +1 -1
  159. package/SVF-doxygen/html/html/search/all_16.js +1 -1
  160. package/SVF-doxygen/html/html/search/all_2.js +1 -1
  161. package/SVF-doxygen/html/html/search/all_3.js +3 -3
  162. package/SVF-doxygen/html/html/search/all_7.js +5 -1
  163. package/SVF-doxygen/html/html/search/all_9.js +1 -1
  164. package/SVF-doxygen/html/html/search/all_c.js +2 -2
  165. package/SVF-doxygen/html/html/search/all_d.js +1 -1
  166. package/SVF-doxygen/html/html/search/all_e.js +1 -1
  167. package/SVF-doxygen/html/html/search/all_f.js +3 -1
  168. package/SVF-doxygen/html/html/search/classes_f.js +1 -0
  169. package/SVF-doxygen/html/html/search/enumvalues_f.js +1 -0
  170. package/SVF-doxygen/html/html/search/functions_0.js +4 -3
  171. package/SVF-doxygen/html/html/search/functions_10.js +1 -0
  172. package/SVF-doxygen/html/html/search/functions_11.js +1 -1
  173. package/SVF-doxygen/html/html/search/functions_12.js +1 -1
  174. package/SVF-doxygen/html/html/search/functions_2.js +1 -1
  175. package/SVF-doxygen/html/html/search/functions_6.js +5 -1
  176. package/SVF-doxygen/html/html/search/functions_d.js +1 -1
  177. package/SVF-doxygen/html/html/search/functions_e.js +1 -1
  178. package/SVF-doxygen/html/html/search/typedefs_e.js +1 -0
  179. package/SVF-doxygen/html/html/search/variables_14.js +1 -1
  180. package/SVF-doxygen/html/html/search/variables_3.js +1 -0
  181. package/SVF-doxygen/html/html/search/variables_e.js +1 -1
  182. package/SVF-doxygen/html/html/search/variables_f.js +1 -0
  183. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +16 -16
  184. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html +16 -16
  185. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html +18 -18
  186. package/include/Graphs/VFG.h +1 -1
  187. package/include/MemoryModel/SVFIR.h +3 -1
  188. package/include/MemoryModel/SVFStatements.h +76 -4
  189. package/include/SVF-FE/SVFIRBuilder.h +12 -2
  190. package/lib/Graphs/ConsG.cpp +9 -0
  191. package/lib/Graphs/ICFG.cpp +12 -17
  192. package/lib/Graphs/VFG.cpp +9 -0
  193. package/lib/MemoryModel/PAGBuilderFromFile.cpp +3 -1
  194. package/lib/MemoryModel/PointerAnalysis.cpp +0 -3
  195. package/lib/MemoryModel/SVFIR.cpp +24 -3
  196. package/lib/MemoryModel/SVFStatements.cpp +14 -0
  197. package/lib/SVF-FE/SVFIRBuilder.cpp +55 -13
  198. package/lib/SVF-FE/SymbolTableBuilder.cpp +1 -0
  199. package/package.json +1 -1
@@ -1069,8 +1069,8 @@ Private Member Functions</h2></td></tr>
1069
1069
  </table>
1070
1070
  </div><div class="memdoc">
1071
1071
 
1072
- <p class="definition">Definition at line <a class="el" href="PointerAnalysis_8cpp_source.html#l00503">503</a> of file <a class="el" href="PointerAnalysis_8cpp_source.html">PointerAnalysis.cpp</a>.</p>
1073
- <div class="fragment"><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160;{</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; <span class="keywordflow">for</span> (VFunSet::const_iterator fit = vfns.begin(),</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; feit = vfns.end(); fit != feit; ++fit)</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; {</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* callee = *fit;</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; callee = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a142e650415cb81011eb59dadd3cb0637">getDefFunForMultipleModule</a>(callee-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>());</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointerAnalysis.html#a1ca30dfa42702071b65d363c76d25cbe">getIndCallMap</a>()[cs].count(callee) &gt; 0)</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a202de7ad2bea0311e2f75894c030e7a9">SVFUtil::getLLVMCallSite</a>(cs-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a674753d5ca0fbe28674acb25291f2bcf">getCallSite</a>()).arg_size() == callee-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#a3757cd3ae587eaca488fa4cd8ad3967d">arg_size</a>() ||</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a202de7ad2bea0311e2f75894c030e7a9">SVFUtil::getLLVMCallSite</a>(cs-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a674753d5ca0fbe28674acb25291f2bcf">getCallSite</a>()).getFunctionType()-&gt;isVarArg() &amp;&amp; callee-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#a3c1fa59deae39c75c72c97e47326d982">isVarArg</a>()))</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; {</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; newEdges[cs].insert(callee);</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a1ca30dfa42702071b65d363c76d25cbe">getIndCallMap</a>()[cs].insert(callee);</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* callBlockNode = <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#adc66b547720b9271e6805edea0b9d01f">getCallICFGNode</a>(cs-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a674753d5ca0fbe28674acb25291f2bcf">getCallSite</a>());</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#ad47b39252e02c68dfb466d4f42dc7ebe">ptaCallGraph</a>-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#a46416c668e2f0099394e79f685ede758">addIndirectCallGraphEdge</a>(callBlockNode, cs-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a18f4077d42b23c3fed35efc793b6102e">getCaller</a>(),callee);</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; }</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; }</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160;}</div><div class="ttc" id="classSVF_1_1PTACallGraph_html_a46416c668e2f0099394e79f685ede758"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#a46416c668e2f0099394e79f685ede758">SVF::PTACallGraph::addIndirectCallGraphEdge</a></div><div class="ttdeci">void addIndirectCallGraphEdge(const CallICFGNode *cs, const SVFFunction *callerFun, const SVFFunction *calleeFun)</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8cpp_source.html#l00185">PTACallGraph.cpp:185</a></div></div>
1072
+ <p class="definition">Definition at line <a class="el" href="PointerAnalysis_8cpp_source.html#l00500">500</a> of file <a class="el" href="PointerAnalysis_8cpp_source.html">PointerAnalysis.cpp</a>.</p>
1073
+ <div class="fragment"><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160;{</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; <span class="keywordflow">for</span> (VFunSet::const_iterator fit = vfns.begin(),</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; feit = vfns.end(); fit != feit; ++fit)</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; {</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* callee = *fit;</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; callee = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a142e650415cb81011eb59dadd3cb0637">getDefFunForMultipleModule</a>(callee-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>());</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointerAnalysis.html#a1ca30dfa42702071b65d363c76d25cbe">getIndCallMap</a>()[cs].count(callee) &gt; 0)</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a202de7ad2bea0311e2f75894c030e7a9">SVFUtil::getLLVMCallSite</a>(cs-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a674753d5ca0fbe28674acb25291f2bcf">getCallSite</a>()).arg_size() == callee-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#a3757cd3ae587eaca488fa4cd8ad3967d">arg_size</a>() ||</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a202de7ad2bea0311e2f75894c030e7a9">SVFUtil::getLLVMCallSite</a>(cs-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a674753d5ca0fbe28674acb25291f2bcf">getCallSite</a>()).getFunctionType()-&gt;isVarArg() &amp;&amp; callee-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#a3c1fa59deae39c75c72c97e47326d982">isVarArg</a>()))</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; {</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; newEdges[cs].insert(callee);</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a1ca30dfa42702071b65d363c76d25cbe">getIndCallMap</a>()[cs].insert(callee);</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* callBlockNode = <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#adc66b547720b9271e6805edea0b9d01f">getCallICFGNode</a>(cs-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a674753d5ca0fbe28674acb25291f2bcf">getCallSite</a>());</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#ad47b39252e02c68dfb466d4f42dc7ebe">ptaCallGraph</a>-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#a46416c668e2f0099394e79f685ede758">addIndirectCallGraphEdge</a>(callBlockNode, cs-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a18f4077d42b23c3fed35efc793b6102e">getCaller</a>(),callee);</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; }</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; }</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160;}</div><div class="ttc" id="classSVF_1_1PTACallGraph_html_a46416c668e2f0099394e79f685ede758"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#a46416c668e2f0099394e79f685ede758">SVF::PTACallGraph::addIndirectCallGraphEdge</a></div><div class="ttdeci">void addIndirectCallGraphEdge(const CallICFGNode *cs, const SVFFunction *callerFun, const SVFFunction *calleeFun)</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8cpp_source.html#l00185">PTACallGraph.cpp:185</a></div></div>
1074
1074
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a142e650415cb81011eb59dadd3cb0637"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a142e650415cb81011eb59dadd3cb0637">SVF::SVFUtil::getDefFunForMultipleModule</a></div><div class="ttdeci">const SVFFunction * getDefFunForMultipleModule(const Function *fun)</div><div class="ttdoc">Get the definition of a function across multiple modules. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00256">SVFUtil.h:256</a></div></div>
1075
1075
  <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="BasicTypes_8h_source.html#l00233">BasicTypes.h:233</a></div></div>
1076
1076
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_ad47b39252e02c68dfb466d4f42dc7ebe"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#ad47b39252e02c68dfb466d4f42dc7ebe">SVF::PointerAnalysis::ptaCallGraph</a></div><div class="ttdeci">PTACallGraph * ptaCallGraph</div><div class="ttdoc">Call graph used for pointer analysis. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00157">PointerAnalysis.h:157</a></div></div>
@@ -1257,8 +1257,8 @@ Private Member Functions</h2></td></tr>
1257
1257
  </table>
1258
1258
  </div><div class="memdoc">
1259
1259
 
1260
- <p class="definition">Definition at line <a class="el" href="PointerAnalysis_8cpp_source.html#l00263">263</a> of file <a class="el" href="PointerAnalysis_8cpp_source.html">PointerAnalysis.cpp</a>.</p>
1261
- <div class="fragment"><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160;{</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <span class="keywordflow">for</span> (OrderedNodeSet::iterator nIter = this-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a60b111647e000cc983aa52513f90afbc">getAllValidPtrs</a>().begin();</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; nIter != this-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a60b111647e000cc983aa52513f90afbc">getAllValidPtrs</a>().end(); ++nIter)</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; {</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* node = <a class="code" href="classSVF_1_1PointerAnalysis.html#a240219c2dc4f5cc5f85445e18c79b83b">getPAG</a>()-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(*nIter);</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;DummyObjVar&gt;(node) || SVFUtil::isa&lt;DummyValVar&gt;(node))</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160;</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;##&lt;&quot;</span> &lt;&lt; node-&gt;<a class="code" href="classSVF_1_1SVFVar.html#afaa33caa8d2a306f6741d9d066243e40">getValue</a>()-&gt;getName() &lt;&lt; <span class="stringliteral">&quot;&gt; &quot;</span>;</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;Source Loc: &quot;</span> &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">getSourceLoc</a>(node-&gt;<a class="code" href="classSVF_1_1SVFVar.html#afaa33caa8d2a306f6741d9d066243e40">getValue</a>());</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\nNodeID &quot;</span> &lt;&lt; node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160;</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* type = node-&gt;<a class="code" href="classSVF_1_1SVFVar.html#afaa33caa8d2a306f6741d9d066243e40">getValue</a>()-&gt;getType();</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#aa40ff2fcaba3d4297d63269b74738737">printFlattenFields</a>(type);</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>* ptType = SVFUtil::dyn_cast&lt;PointerType&gt;(type))</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#aa40ff2fcaba3d4297d63269b74738737">printFlattenFields</a>(ptType-&gt;getElementType());</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; }</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160;}</div><div class="ttc" id="classSVF_1_1PointerAnalysis_html_a60b111647e000cc983aa52513f90afbc"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a60b111647e000cc983aa52513f90afbc">SVF::PointerAnalysis::getAllValidPtrs</a></div><div class="ttdeci">OrderedNodeSet &amp; getAllValidPtrs()</div><div class="ttdoc">Get all Valid Pointers for resolution. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00222">PointerAnalysis.h:222</a></div></div>
1260
+ <p class="definition">Definition at line <a class="el" href="PointerAnalysis_8cpp_source.html#l00260">260</a> of file <a class="el" href="PointerAnalysis_8cpp_source.html">PointerAnalysis.cpp</a>.</p>
1261
+ <div class="fragment"><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160;{</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <span class="keywordflow">for</span> (OrderedNodeSet::iterator nIter = this-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a60b111647e000cc983aa52513f90afbc">getAllValidPtrs</a>().begin();</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; nIter != this-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a60b111647e000cc983aa52513f90afbc">getAllValidPtrs</a>().end(); ++nIter)</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; {</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* node = <a class="code" href="classSVF_1_1PointerAnalysis.html#a240219c2dc4f5cc5f85445e18c79b83b">getPAG</a>()-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(*nIter);</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;DummyObjVar&gt;(node) || SVFUtil::isa&lt;DummyValVar&gt;(node))</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160;</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;##&lt;&quot;</span> &lt;&lt; node-&gt;<a class="code" href="classSVF_1_1SVFVar.html#afaa33caa8d2a306f6741d9d066243e40">getValue</a>()-&gt;getName() &lt;&lt; <span class="stringliteral">&quot;&gt; &quot;</span>;</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;Source Loc: &quot;</span> &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">getSourceLoc</a>(node-&gt;<a class="code" href="classSVF_1_1SVFVar.html#afaa33caa8d2a306f6741d9d066243e40">getValue</a>());</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\nNodeID &quot;</span> &lt;&lt; node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160;</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* type = node-&gt;<a class="code" href="classSVF_1_1SVFVar.html#afaa33caa8d2a306f6741d9d066243e40">getValue</a>()-&gt;getType();</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#aa40ff2fcaba3d4297d63269b74738737">printFlattenFields</a>(type);</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>* ptType = SVFUtil::dyn_cast&lt;PointerType&gt;(type))</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#aa40ff2fcaba3d4297d63269b74738737">printFlattenFields</a>(ptType-&gt;getElementType());</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; }</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160;}</div><div class="ttc" id="classSVF_1_1PointerAnalysis_html_a60b111647e000cc983aa52513f90afbc"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a60b111647e000cc983aa52513f90afbc">SVF::PointerAnalysis::getAllValidPtrs</a></div><div class="ttdeci">OrderedNodeSet &amp; getAllValidPtrs()</div><div class="ttdoc">Get all Valid Pointers for resolution. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00222">PointerAnalysis.h:222</a></div></div>
1262
1262
  <div class="ttc" id="namespaceSVF_html_a1d008c0666c145622b81d427be64c52d"><div class="ttname"><a href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">SVF::Type</a></div><div class="ttdeci">llvm::Type Type</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00075">BasicTypes.h:75</a></div></div>
1263
1263
  <div class="ttc" id="namespaceSVF_html_aa962cc1d782cc46553251e96b64a754b"><div class="ttname"><a href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">SVF::PointerType</a></div><div class="ttdeci">llvm::PointerType PointerType</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00108">BasicTypes.h:108</a></div></div>
1264
1264
  <div class="ttc" id="classSVF_1_1SVFVar_html"><div class="ttname"><a href="classSVF_1_1SVFVar.html">SVF::SVFVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00046">SVFVariables.h:46</a></div></div>
@@ -1338,8 +1338,8 @@ Private Member Functions</h2></td></tr>
1338
1338
  <p>Dump points-to of top-level pointers (<a class="el" href="classSVF_1_1ValVar.html">ValVar</a>) </p>
1339
1339
  <p>print the points-to set of node which has the maximum pts size. </p>
1340
1340
 
1341
- <p class="definition">Definition at line <a class="el" href="PointerAnalysis_8cpp_source.html#l00286">286</a> of file <a class="el" href="PointerAnalysis_8cpp_source.html">PointerAnalysis.cpp</a>.</p>
1342
- <div class="fragment"><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160;{</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160;</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* node = <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(ptr);</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;DummyObjVar&gt; (node))</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; {</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;##&lt;Dummy Obj &gt; id:&quot;</span> &lt;&lt; node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; }</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!SVFUtil::isa&lt;DummyValVar&gt;(node) &amp;&amp; !<a class="code" href="classSVF_1_1SVFModule.html#a1357c876eccedd58b3abe68875b3a570">SVFModule::pagReadFromTXT</a>()) {</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <span class="keywordflow">if</span> (node-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a1ace69053c2c4436fd78d5624bd0086a">hasValue</a>()) {</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;##&lt;&quot;</span> &lt;&lt; node-&gt;<a class="code" href="classSVF_1_1SVFVar.html#afaa33caa8d2a306f6741d9d066243e40">getValue</a>()-&gt;getName() &lt;&lt; <span class="stringliteral">&quot;&gt; &quot;</span>;</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;Source Loc: &quot;</span> &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">getSourceLoc</a>(node-&gt;<a class="code" href="classSVF_1_1SVFVar.html#afaa33caa8d2a306f6741d9d066243e40">getValue</a>());</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; }</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; }</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\nPtr &quot;</span> &lt;&lt; node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>() &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160;</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <span class="keywordflow">if</span> (pts.<a class="code" href="classSVF_1_1PointsTo.html#ac4688413177b49b37dbbfd3ed188d59b">empty</a>())</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; {</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\t\tPointsTo: {empty}\n\n&quot;</span>;</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; }</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; {</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\t\tPointsTo: { &quot;</span>;</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html">PointsTo::iterator</a> it = pts.<a class="code" href="classSVF_1_1PointsTo.html#aa53962e561399bf493d1f2b9137356f6">begin</a>(), eit = pts.<a class="code" href="classSVF_1_1PointsTo.html#a8f741cdffbf3c5fe0f602cdca677dee6">end</a>(); it != eit;</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; ++it)</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; *it &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;}\n\n&quot;</span>;</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; }</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160;</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;&quot;</span>;</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160;</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html">PointsTo::iterator</a> it = pts.<a class="code" href="classSVF_1_1PointsTo.html#aa53962e561399bf493d1f2b9137356f6">begin</a>(), eit = pts.<a class="code" href="classSVF_1_1PointsTo.html#a8f741cdffbf3c5fe0f602cdca677dee6">end</a>(); it != eit; ++it)</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; {</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* node = <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(*it);</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;ObjVar&gt;(node) == <span class="keyword">false</span>)</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> ptd = node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;!!Target NodeID &quot;</span> &lt;&lt; ptd &lt;&lt; <span class="stringliteral">&quot;\t [&quot;</span>;</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* pagNode = <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(ptd);</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;DummyValVar&gt;(node))</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;DummyVal\n&quot;</span>;</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;DummyObjVar&gt;(node))</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;Dummy Obj id: &quot;</span> &lt;&lt; node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>() &lt;&lt; <span class="stringliteral">&quot;]\n&quot;</span>;</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1SVFModule.html#a1357c876eccedd58b3abe68875b3a570">SVFModule::pagReadFromTXT</a>()) {</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <span class="keywordflow">if</span> (node-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a1ace69053c2c4436fd78d5624bd0086a">hasValue</a>()) {</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;&lt;&quot;</span> &lt;&lt; pagNode-&gt;<a class="code" href="classSVF_1_1SVFVar.html#afaa33caa8d2a306f6741d9d066243e40">getValue</a>()-&gt;getName() &lt;&lt; <span class="stringliteral">&quot;&gt; &quot;</span>;</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;Source Loc: &quot;</span></div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">getSourceLoc</a>(pagNode-&gt;<a class="code" href="classSVF_1_1SVFVar.html#afaa33caa8d2a306f6741d9d066243e40">getValue</a>()) &lt;&lt; <span class="stringliteral">&quot;] \n&quot;</span>;</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; }</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; }</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; }</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; }</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_a43a65e0d33af3c743294f7a1139d2301"><div class="ttname"><a href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00018">MTAResultValidator.h:18</a></div></div>
1341
+ <p class="definition">Definition at line <a class="el" href="PointerAnalysis_8cpp_source.html#l00283">283</a> of file <a class="el" href="PointerAnalysis_8cpp_source.html">PointerAnalysis.cpp</a>.</p>
1342
+ <div class="fragment"><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160;{</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160;</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* node = <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(ptr);</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;DummyObjVar&gt; (node))</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; {</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;##&lt;Dummy Obj &gt; id:&quot;</span> &lt;&lt; node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; }</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!SVFUtil::isa&lt;DummyValVar&gt;(node) &amp;&amp; !<a class="code" href="classSVF_1_1SVFModule.html#a1357c876eccedd58b3abe68875b3a570">SVFModule::pagReadFromTXT</a>()) {</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <span class="keywordflow">if</span> (node-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a1ace69053c2c4436fd78d5624bd0086a">hasValue</a>()) {</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;##&lt;&quot;</span> &lt;&lt; node-&gt;<a class="code" href="classSVF_1_1SVFVar.html#afaa33caa8d2a306f6741d9d066243e40">getValue</a>()-&gt;getName() &lt;&lt; <span class="stringliteral">&quot;&gt; &quot;</span>;</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;Source Loc: &quot;</span> &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">getSourceLoc</a>(node-&gt;<a class="code" href="classSVF_1_1SVFVar.html#afaa33caa8d2a306f6741d9d066243e40">getValue</a>());</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; }</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; }</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\nPtr &quot;</span> &lt;&lt; node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>() &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160;</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <span class="keywordflow">if</span> (pts.<a class="code" href="classSVF_1_1PointsTo.html#ac4688413177b49b37dbbfd3ed188d59b">empty</a>())</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; {</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\t\tPointsTo: {empty}\n\n&quot;</span>;</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; }</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; {</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\t\tPointsTo: { &quot;</span>;</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html">PointsTo::iterator</a> it = pts.<a class="code" href="classSVF_1_1PointsTo.html#aa53962e561399bf493d1f2b9137356f6">begin</a>(), eit = pts.<a class="code" href="classSVF_1_1PointsTo.html#a8f741cdffbf3c5fe0f602cdca677dee6">end</a>(); it != eit;</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; ++it)</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; *it &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;}\n\n&quot;</span>;</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; }</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160;</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;&quot;</span>;</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160;</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html">PointsTo::iterator</a> it = pts.<a class="code" href="classSVF_1_1PointsTo.html#aa53962e561399bf493d1f2b9137356f6">begin</a>(), eit = pts.<a class="code" href="classSVF_1_1PointsTo.html#a8f741cdffbf3c5fe0f602cdca677dee6">end</a>(); it != eit; ++it)</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; {</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* node = <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(*it);</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;ObjVar&gt;(node) == <span class="keyword">false</span>)</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> ptd = node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;!!Target NodeID &quot;</span> &lt;&lt; ptd &lt;&lt; <span class="stringliteral">&quot;\t [&quot;</span>;</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* pagNode = <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(ptd);</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;DummyValVar&gt;(node))</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;DummyVal\n&quot;</span>;</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;DummyObjVar&gt;(node))</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;Dummy Obj id: &quot;</span> &lt;&lt; node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>() &lt;&lt; <span class="stringliteral">&quot;]\n&quot;</span>;</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1SVFModule.html#a1357c876eccedd58b3abe68875b3a570">SVFModule::pagReadFromTXT</a>()) {</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; <span class="keywordflow">if</span> (node-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a1ace69053c2c4436fd78d5624bd0086a">hasValue</a>()) {</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;&lt;&quot;</span> &lt;&lt; pagNode-&gt;<a class="code" href="classSVF_1_1SVFVar.html#afaa33caa8d2a306f6741d9d066243e40">getValue</a>()-&gt;getName() &lt;&lt; <span class="stringliteral">&quot;&gt; &quot;</span>;</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;Source Loc: &quot;</span></div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">getSourceLoc</a>(pagNode-&gt;<a class="code" href="classSVF_1_1SVFVar.html#afaa33caa8d2a306f6741d9d066243e40">getValue</a>()) &lt;&lt; <span class="stringliteral">&quot;] \n&quot;</span>;</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; }</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; }</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; }</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; }</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_a43a65e0d33af3c743294f7a1139d2301"><div class="ttname"><a href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00018">MTAResultValidator.h:18</a></div></div>
1343
1343
  <div class="ttc" id="classSVF_1_1PointsTo_1_1PointsToIterator_html"><div class="ttname"><a href="classSVF_1_1PointsTo_1_1PointsToIterator.html">SVF::PointsTo::PointsToIterator</a></div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8h_source.html#l00174">PointsTo.h:174</a></div></div>
1344
1344
  <div class="ttc" id="classSVF_1_1SVFVar_html"><div class="ttname"><a href="classSVF_1_1SVFVar.html">SVF::SVFVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00046">SVFVariables.h:46</a></div></div>
1345
1345
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a28c0ede7e4765d2a686fc8ae0f5641a4"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">SVF::SVFUtil::getSourceLoc</a></div><div class="ttdeci">std::string getSourceLoc(const Value *val)</div><div class="ttdoc">Return source code including line number and file name from debug information. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00269">SVFUtil.cpp:269</a></div></div>
@@ -1441,17 +1441,15 @@ Private Member Functions</h2></td></tr>
1441
1441
  <p>Reimplemented in <a class="el" href="classSVF_1_1CondPTAImpl.html#a9bdc3a50c695029a28371116ddc3ef8d">SVF::CondPTAImpl&lt; Cond &gt;</a>, <a class="el" href="classSVF_1_1CondPTAImpl.html#a9bdc3a50c695029a28371116ddc3ef8d">SVF::CondPTAImpl&lt; ContextCond &gt;</a>, <a class="el" href="classSVF_1_1Andersen.html#ad90c8cf193bd81870ce8dd88c9580e2c">SVF::Andersen</a>, <a class="el" href="classSVF_1_1BVDataPTAImpl.html#a57ff2bf45ede7a730a8adaba8e61179d">SVF::BVDataPTAImpl</a>, <a class="el" href="classSVF_1_1FlowSensitive.html#afed358369102f01f6fe88b1433e704c3">SVF::FlowSensitive</a>, <a class="el" href="classSVF_1_1AndersenBase.html#a28a1c3571cdee5e05004b29ace364e67">SVF::AndersenBase</a>, <a class="el" href="classSVF_1_1FlowDDA.html#a5abae08577ab24684653421dc712431a">SVF::FlowDDA</a>, <a class="el" href="classSVF_1_1TypeAnalysis.html#a8efef079c8b33e2215f92ac3629789e6">SVF::TypeAnalysis</a>, <a class="el" href="classSVF_1_1VersionedFlowSensitive.html#ad955fda89f4f749151a1bd14562b03f6">SVF::VersionedFlowSensitive</a>, <a class="el" href="classSVF_1_1FlowSensitiveTBHC.html#a3564d6ad7e12e0a833b4cea203a809e4">SVF::FlowSensitiveTBHC</a>, and <a class="el" href="classSVF_1_1ContextDDA.html#ae34cd06ee3b7d763c81ec418af76d244">SVF::ContextDDA</a>.</p>
1442
1442
 
1443
1443
  <p class="definition">Definition at line <a class="el" href="PointerAnalysis_8cpp_source.html#l00200">200</a> of file <a class="el" href="PointerAnalysis_8cpp_source.html">PointerAnalysis.cpp</a>.</p>
1444
- <div class="fragment"><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160;{</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#ab83b827ea42d3a61aad20b1a1485d866">dumpStat</a>();</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a> = <a class="code" href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362">SVFIR::getPAG</a>();</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="comment">// dump SVFIR</span></div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a3a20311c732fb391332ae0ee1cb450a0">Options::PAGDotGraph</a>)</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; pag-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a1cb32461439c4dc8d044c2bfadb11307">dump</a>(<span class="stringliteral">&quot;pag_final&quot;</span>);</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#ace0fa364337374ce75a58a9e2f229e24">Options::PTSPrint</a>)</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; {</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a627bdc95485fd65e8846fcaa5e89559f">dumpTopLevelPtsTo</a>();</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <span class="comment">//dumpAllPts();</span></div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="comment">//dumpCPts();</span></div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; }</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#affd0cb6e0cb91e096537a3d3198bf4e5">Options::TypePrint</a>)</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a08399de593c073b6dd848a8d849dad27">dumpAllTypes</a>();</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1Options.html#a113ee30422ef08b6790eed9a83277b9c">Options::PTSAllPrint</a>)</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a861554c2fdeaa406131c2c920b4c7908">dumpAllPts</a>();</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160;</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a14ceeb5d7de81a0946389159986e4955">Options::FuncPointerPrint</a>)</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a062f1f2d6d47694caa9ac64a9e68c7b3">printIndCSTargets</a>();</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160;</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a7c9b7e5fe37ae31ba84d167945ca57df">getPTACallGraph</a>()-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#ac695d78f0a78e2e5f1fb4f93264e52b8">verifyCallGraph</a>();</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160;</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a61c9d525088cc044f8937a39bb96aa93">Options::CallGraphDotGraph</a>)</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a7c9b7e5fe37ae31ba84d167945ca57df">getPTACallGraph</a>()-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#a841be22581a7896d8924564e7199f62b">dump</a>(<span class="stringliteral">&quot;callgraph_final&quot;</span>);</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <span class="comment">// FSTBHC has its own TBHC-specific test validation.</span></div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <span class="keywordflow">if</span>(!pag-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a41423da58a07b344bc7ca8dd96d48f98">isBuiltFromFile</a>() &amp;&amp; <a class="code" href="classSVF_1_1PointerAnalysis.html#aac1a133d478bd14c74309d9c4eaf0c8e">alias_validation</a></div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; &amp;&amp; !SVFUtil::isa&lt;FlowSensitiveTBHC&gt;(<span class="keyword">this</span>))</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a0454332c89e60729956bb7d69a1a24df">validateTests</a>();</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1Options.html#afb6fabc25c0d7f9e9d1708ce648797fc">Options::UsePreCompFieldSensitive</a>)</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a73fb8e595473e0c7df1dd0de4968ad13">resetObjFieldSensitive</a>();</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160;}</div><div class="ttc" id="classSVF_1_1Options_html_affd0cb6e0cb91e096537a3d3198bf4e5"><div class="ttname"><a href="classSVF_1_1Options.html#affd0cb6e0cb91e096537a3d3198bf4e5">SVF::Options::TypePrint</a></div><div class="ttdeci">static const llvm::cl::opt&lt; bool &gt; TypePrint</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00127">Options.h:127</a></div></div>
1444
+ <div class="fragment"><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160;{</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#ab83b827ea42d3a61aad20b1a1485d866">dumpStat</a>();</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a> = <a class="code" href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362">SVFIR::getPAG</a>();</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160;</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#ace0fa364337374ce75a58a9e2f229e24">Options::PTSPrint</a>)</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; {</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a627bdc95485fd65e8846fcaa5e89559f">dumpTopLevelPtsTo</a>();</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="comment">//dumpAllPts();</span></div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="comment">//dumpCPts();</span></div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; }</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#affd0cb6e0cb91e096537a3d3198bf4e5">Options::TypePrint</a>)</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a08399de593c073b6dd848a8d849dad27">dumpAllTypes</a>();</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1Options.html#a113ee30422ef08b6790eed9a83277b9c">Options::PTSAllPrint</a>)</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a861554c2fdeaa406131c2c920b4c7908">dumpAllPts</a>();</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a14ceeb5d7de81a0946389159986e4955">Options::FuncPointerPrint</a>)</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a062f1f2d6d47694caa9ac64a9e68c7b3">printIndCSTargets</a>();</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160;</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a7c9b7e5fe37ae31ba84d167945ca57df">getPTACallGraph</a>()-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#ac695d78f0a78e2e5f1fb4f93264e52b8">verifyCallGraph</a>();</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a61c9d525088cc044f8937a39bb96aa93">Options::CallGraphDotGraph</a>)</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a7c9b7e5fe37ae31ba84d167945ca57df">getPTACallGraph</a>()-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#a841be22581a7896d8924564e7199f62b">dump</a>(<span class="stringliteral">&quot;callgraph_final&quot;</span>);</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160;</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <span class="comment">// FSTBHC has its own TBHC-specific test validation.</span></div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <span class="keywordflow">if</span>(!pag-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a41423da58a07b344bc7ca8dd96d48f98">isBuiltFromFile</a>() &amp;&amp; <a class="code" href="classSVF_1_1PointerAnalysis.html#aac1a133d478bd14c74309d9c4eaf0c8e">alias_validation</a></div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; &amp;&amp; !SVFUtil::isa&lt;FlowSensitiveTBHC&gt;(<span class="keyword">this</span>))</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a0454332c89e60729956bb7d69a1a24df">validateTests</a>();</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160;</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1Options.html#afb6fabc25c0d7f9e9d1708ce648797fc">Options::UsePreCompFieldSensitive</a>)</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a73fb8e595473e0c7df1dd0de4968ad13">resetObjFieldSensitive</a>();</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;}</div><div class="ttc" id="classSVF_1_1Options_html_affd0cb6e0cb91e096537a3d3198bf4e5"><div class="ttname"><a href="classSVF_1_1Options.html#affd0cb6e0cb91e096537a3d3198bf4e5">SVF::Options::TypePrint</a></div><div class="ttdeci">static const llvm::cl::opt&lt; bool &gt; TypePrint</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00127">Options.h:127</a></div></div>
1445
1445
  <div class="ttc" id="classSVF_1_1Options_html_a113ee30422ef08b6790eed9a83277b9c"><div class="ttname"><a href="classSVF_1_1Options.html#a113ee30422ef08b6790eed9a83277b9c">SVF::Options::PTSAllPrint</a></div><div class="ttdeci">static const llvm::cl::opt&lt; bool &gt; PTSAllPrint</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00130">Options.h:130</a></div></div>
1446
1446
  <div class="ttc" id="classSVF_1_1Options_html_ace0fa364337374ce75a58a9e2f229e24"><div class="ttname"><a href="classSVF_1_1Options.html#ace0fa364337374ce75a58a9e2f229e24">SVF::Options::PTSPrint</a></div><div class="ttdeci">static const llvm::cl::opt&lt; bool &gt; PTSPrint</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00129">Options.h:129</a></div></div>
1447
- <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a062f1f2d6d47694caa9ac64a9e68c7b3"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a062f1f2d6d47694caa9ac64a9e68c7b3">SVF::PointerAnalysis::printIndCSTargets</a></div><div class="ttdeci">void printIndCSTargets()</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8cpp_source.html#l00374">PointerAnalysis.cpp:374</a></div></div>
1447
+ <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a062f1f2d6d47694caa9ac64a9e68c7b3"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a062f1f2d6d47694caa9ac64a9e68c7b3">SVF::PointerAnalysis::printIndCSTargets</a></div><div class="ttdeci">void printIndCSTargets()</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8cpp_source.html#l00371">PointerAnalysis.cpp:371</a></div></div>
1448
1448
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_ab83b827ea42d3a61aad20b1a1485d866"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#ab83b827ea42d3a61aad20b1a1485d866">SVF::PointerAnalysis::dumpStat</a></div><div class="ttdeci">void dumpStat()</div><div class="ttdoc">Dump the statistics. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8cpp_source.html#l00187">PointerAnalysis.cpp:187</a></div></div>
1449
- <div class="ttc" id="classSVF_1_1IRGraph_html_a1cb32461439c4dc8d044c2bfadb11307"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a1cb32461439c4dc8d044c2bfadb11307">SVF::IRGraph::dump</a></div><div class="ttdeci">void dump(std::string name)</div><div class="ttdoc">Dump SVFIR. </div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8cpp_source.html#l00101">IRGraph.cpp:101</a></div></div>
1450
1449
  <div class="ttc" id="classSVF_1_1IRGraph_html_a41423da58a07b344bc7ca8dd96d48f98"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a41423da58a07b344bc7ca8dd96d48f98">SVF::IRGraph::isBuiltFromFile</a></div><div class="ttdeci">bool isBuiltFromFile()</div><div class="ttdoc">Whether this SVFIR built from a txt file. </div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8h_source.html#l00103">IRGraph.h:103</a></div></div>
1451
1450
  <div class="ttc" id="classSVF_1_1PTACallGraph_html_a841be22581a7896d8924564e7199f62b"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#a841be22581a7896d8924564e7199f62b">SVF::PTACallGraph::dump</a></div><div class="ttdeci">void dump(const std::string &amp;filename)</div><div class="ttdoc">Dump the graph. </div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8cpp_source.html#l00314">PTACallGraph.cpp:314</a></div></div>
1452
- <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a0454332c89e60729956bb7d69a1a24df"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0454332c89e60729956bb7d69a1a24df">SVF::PointerAnalysis::validateTests</a></div><div class="ttdeci">virtual void validateTests()</div><div class="ttdoc">Alias check functions to verify correctness of pointer analysis. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8cpp_source.html#l00245">PointerAnalysis.cpp:245</a></div></div>
1451
+ <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a0454332c89e60729956bb7d69a1a24df"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0454332c89e60729956bb7d69a1a24df">SVF::PointerAnalysis::validateTests</a></div><div class="ttdeci">virtual void validateTests()</div><div class="ttdoc">Alias check functions to verify correctness of pointer analysis. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8cpp_source.html#l00242">PointerAnalysis.cpp:242</a></div></div>
1453
1452
  <div class="ttc" id="classSVF_1_1SVFIR_html_a37cfa2aa4e7b98ef9dc8179f581a2362"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362">SVF::SVFIR::getPAG</a></div><div class="ttdeci">static SVFIR * getPAG(bool buildFromFile=false)</div><div class="ttdoc">Singleton design here to make sure we only have one instance during any analysis. ...</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00106">SVFIR.h:106</a></div></div>
1454
- <div class="ttc" id="classSVF_1_1Options_html_a3a20311c732fb391332ae0ee1cb450a0"><div class="ttname"><a href="classSVF_1_1Options.html#a3a20311c732fb391332ae0ee1cb450a0">SVF::Options::PAGDotGraph</a></div><div class="ttdeci">static const llvm::cl::opt&lt; bool &gt; PAGDotGraph</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00133">Options.h:133</a></div></div>
1455
1453
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a7c9b7e5fe37ae31ba84d167945ca57df"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a7c9b7e5fe37ae31ba84d167945ca57df">SVF::PointerAnalysis::getPTACallGraph</a></div><div class="ttdeci">PTACallGraph * getPTACallGraph() const</div><div class="ttdoc">Return call graph. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00178">PointerAnalysis.h:178</a></div></div>
1456
1454
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a627bdc95485fd65e8846fcaa5e89559f"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a627bdc95485fd65e8846fcaa5e89559f">SVF::PointerAnalysis::dumpTopLevelPtsTo</a></div><div class="ttdeci">virtual void dumpTopLevelPtsTo()</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00270">PointerAnalysis.h:270</a></div></div>
1457
1455
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a861554c2fdeaa406131c2c920b4c7908"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a861554c2fdeaa406131c2c920b4c7908">SVF::PointerAnalysis::dumpAllPts</a></div><div class="ttdeci">virtual void dumpAllPts()</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00271">PointerAnalysis.h:271</a></div></div>
@@ -1463,7 +1461,7 @@ Private Member Functions</h2></td></tr>
1463
1461
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a73fb8e595473e0c7df1dd0de4968ad13"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a73fb8e595473e0c7df1dd0de4968ad13">SVF::PointerAnalysis::resetObjFieldSensitive</a></div><div class="ttdeci">void resetObjFieldSensitive()</div><div class="ttdoc">Reset all object node as field-sensitive. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8cpp_source.html#l00174">PointerAnalysis.cpp:174</a></div></div>
1464
1462
  <div class="ttc" id="classSVF_1_1SVFIR_html"><div class="ttname"><a href="classSVF_1_1SVFIR.html">SVF::SVFIR</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00043">SVFIR.h:43</a></div></div>
1465
1463
  <div class="ttc" id="classSVF_1_1PTACallGraph_html_ac695d78f0a78e2e5f1fb4f93264e52b8"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#ac695d78f0a78e2e5f1fb4f93264e52b8">SVF::PTACallGraph::verifyCallGraph</a></div><div class="ttdeci">void verifyCallGraph()</div><div class="ttdoc">Issue a warning if the function which has indirect call sites can not be reached from program entry...</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8cpp_source.html#l00263">PTACallGraph.cpp:263</a></div></div>
1466
- <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a08399de593c073b6dd848a8d849dad27"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a08399de593c073b6dd848a8d849dad27">SVF::PointerAnalysis::dumpAllTypes</a></div><div class="ttdeci">void dumpAllTypes()</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8cpp_source.html#l00263">PointerAnalysis.cpp:263</a></div></div>
1464
+ <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a08399de593c073b6dd848a8d849dad27"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a08399de593c073b6dd848a8d849dad27">SVF::PointerAnalysis::dumpAllTypes</a></div><div class="ttdeci">void dumpAllTypes()</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8cpp_source.html#l00260">PointerAnalysis.cpp:260</a></div></div>
1467
1465
  </div><!-- fragment -->
1468
1466
  </div>
1469
1467
  </div>
@@ -1494,7 +1492,7 @@ Private Member Functions</h2></td></tr>
1494
1492
  <p>Reimplemented in <a class="el" href="classSVF_1_1FlowSensitiveTBHC.html#a56dc95bb4b6d48f82c87c6280237990a">SVF::FlowSensitiveTBHC</a>.</p>
1495
1493
 
1496
1494
  <p class="definition">Definition at line <a class="el" href="PointerAnalysis_8h_source.html#l00358">358</a> of file <a class="el" href="PointerAnalysis_8h_source.html">PointerAnalysis.h</a>.</p>
1497
- <div class="fragment"><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; {</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a7276e82b4648ed0e1b3d1b8b37b24089">getAllFieldsObjVars</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; }</div><div class="ttc" id="classSVF_1_1SVFIR_html_a7276e82b4648ed0e1b3d1b8b37b24089"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a7276e82b4648ed0e1b3d1b8b37b24089">SVF::SVFIR::getAllFieldsObjVars</a></div><div class="ttdeci">NodeBS &amp; getAllFieldsObjVars(const MemObj *obj)</div><div class="ttdoc">Get all fields of an object. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00458">SVFIR.cpp:458</a></div></div>
1495
+ <div class="fragment"><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; {</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a7276e82b4648ed0e1b3d1b8b37b24089">getAllFieldsObjVars</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; }</div><div class="ttc" id="classSVF_1_1SVFIR_html_a7276e82b4648ed0e1b3d1b8b37b24089"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a7276e82b4648ed0e1b3d1b8b37b24089">SVF::SVFIR::getAllFieldsObjVars</a></div><div class="ttdeci">NodeBS &amp; getAllFieldsObjVars(const MemObj *obj)</div><div class="ttdoc">Get all fields of an object. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00479">SVFIR.cpp:479</a></div></div>
1498
1496
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_adc7f5c71efb9cd1bec4f5ca9127654c3"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">SVF::PointerAnalysis::pag</a></div><div class="ttdeci">static SVFIR * pag</div><div class="ttdoc">SVFIR. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00147">PointerAnalysis.h:147</a></div></div>
1499
1497
  </div><!-- fragment -->
1500
1498
  </div>
@@ -1780,7 +1778,7 @@ Private Member Functions</h2></td></tr>
1780
1778
 
1781
1779
  <p class="definition">Definition at line <a class="el" href="PointerAnalysis_8h_source.html#l00354">354</a> of file <a class="el" href="PointerAnalysis_8h_source.html">PointerAnalysis.h</a>.</p>
1782
1780
  <div class="fragment"><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; {</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a20c0c65af266ac876cb722aee6e87101">getGepObjVar</a>(<span class="keywordtype">id</span>,ls);</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; }</div><div class="ttc" id="classSVF_1_1PointerAnalysis_html_adc7f5c71efb9cd1bec4f5ca9127654c3"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">SVF::PointerAnalysis::pag</a></div><div class="ttdeci">static SVFIR * pag</div><div class="ttdoc">SVFIR. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00147">PointerAnalysis.h:147</a></div></div>
1783
- <div class="ttc" id="classSVF_1_1SVFIR_html_a20c0c65af266ac876cb722aee6e87101"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a20c0c65af266ac876cb722aee6e87101">SVF::SVFIR::getGepObjVar</a></div><div class="ttdeci">NodeID getGepObjVar(const MemObj *obj, const LocationSet &amp;ls)</div><div class="ttdoc">Get a field SVFIR Object node according to base mem obj and offset. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00405">SVFIR.cpp:405</a></div></div>
1781
+ <div class="ttc" id="classSVF_1_1SVFIR_html_a20c0c65af266ac876cb722aee6e87101"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a20c0c65af266ac876cb722aee6e87101">SVF::SVFIR::getGepObjVar</a></div><div class="ttdeci">NodeID getGepObjVar(const MemObj *obj, const LocationSet &amp;ls)</div><div class="ttdoc">Get a field SVFIR Object node according to base mem obj and offset. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00426">SVFIR.cpp:426</a></div></div>
1784
1782
  </div><!-- fragment -->
1785
1783
  </div>
1786
1784
  </div>
@@ -2202,8 +2200,8 @@ Private Member Functions</h2></td></tr>
2202
2200
  </table>
2203
2201
  </div><div class="memdoc">
2204
2202
 
2205
- <p class="definition">Definition at line <a class="el" href="PointerAnalysis_8cpp_source.html#l00468">468</a> of file <a class="el" href="PointerAnalysis_8cpp_source.html">PointerAnalysis.cpp</a>.</p>
2206
- <div class="fragment"><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160;{</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointerAnalysis.html#a0c0fce2539bb9ec6c824f6584a0f6b33">chgraph</a>-&gt;<a class="code" href="classSVF_1_1CommonCHGraph.html#a0ce9117288d9e0b498f128217fda0cca">csHasVFnsBasedonCHA</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a202de7ad2bea0311e2f75894c030e7a9">SVFUtil::getLLVMCallSite</a>(cs-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a674753d5ca0fbe28674acb25291f2bcf">getCallSite</a>())))</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; vfns = <a class="code" href="classSVF_1_1PointerAnalysis.html#a0c0fce2539bb9ec6c824f6584a0f6b33">chgraph</a>-&gt;<a class="code" href="classSVF_1_1CommonCHGraph.html#abe9232b9cada361e0434f7c4390a7864">getCSVFsBasedonCHA</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a202de7ad2bea0311e2f75894c030e7a9">SVFUtil::getLLVMCallSite</a>(cs-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a674753d5ca0fbe28674acb25291f2bcf">getCallSite</a>()));</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160;}</div><div class="ttc" id="classSVF_1_1CommonCHGraph_html_abe9232b9cada361e0434f7c4390a7864"><div class="ttname"><a href="classSVF_1_1CommonCHGraph.html#abe9232b9cada361e0434f7c4390a7864">SVF::CommonCHGraph::getCSVFsBasedonCHA</a></div><div class="ttdeci">virtual const VFunSet &amp; getCSVFsBasedonCHA(CallSite cs)=0</div></div>
2203
+ <p class="definition">Definition at line <a class="el" href="PointerAnalysis_8cpp_source.html#l00465">465</a> of file <a class="el" href="PointerAnalysis_8cpp_source.html">PointerAnalysis.cpp</a>.</p>
2204
+ <div class="fragment"><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160;{</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointerAnalysis.html#a0c0fce2539bb9ec6c824f6584a0f6b33">chgraph</a>-&gt;<a class="code" href="classSVF_1_1CommonCHGraph.html#a0ce9117288d9e0b498f128217fda0cca">csHasVFnsBasedonCHA</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a202de7ad2bea0311e2f75894c030e7a9">SVFUtil::getLLVMCallSite</a>(cs-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a674753d5ca0fbe28674acb25291f2bcf">getCallSite</a>())))</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; vfns = <a class="code" href="classSVF_1_1PointerAnalysis.html#a0c0fce2539bb9ec6c824f6584a0f6b33">chgraph</a>-&gt;<a class="code" href="classSVF_1_1CommonCHGraph.html#abe9232b9cada361e0434f7c4390a7864">getCSVFsBasedonCHA</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a202de7ad2bea0311e2f75894c030e7a9">SVFUtil::getLLVMCallSite</a>(cs-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a674753d5ca0fbe28674acb25291f2bcf">getCallSite</a>()));</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160;}</div><div class="ttc" id="classSVF_1_1CommonCHGraph_html_abe9232b9cada361e0434f7c4390a7864"><div class="ttname"><a href="classSVF_1_1CommonCHGraph.html#abe9232b9cada361e0434f7c4390a7864">SVF::CommonCHGraph::getCSVFsBasedonCHA</a></div><div class="ttdeci">virtual const VFunSet &amp; getCSVFsBasedonCHA(CallSite cs)=0</div></div>
2207
2205
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a0c0fce2539bb9ec6c824f6584a0f6b33"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0c0fce2539bb9ec6c824f6584a0f6b33">SVF::PointerAnalysis::chgraph</a></div><div class="ttdeci">CommonCHGraph * chgraph</div><div class="ttdoc">CHGraph. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00163">PointerAnalysis.h:163</a></div></div>
2208
2206
  <div class="ttc" id="classSVF_1_1CallICFGNode_html_a674753d5ca0fbe28674acb25291f2bcf"><div class="ttname"><a href="classSVF_1_1CallICFGNode.html#a674753d5ca0fbe28674acb25291f2bcf">SVF::CallICFGNode::getCallSite</a></div><div class="ttdeci">const Instruction * getCallSite() const</div><div class="ttdoc">Return callsite. </div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00381">ICFGNode.h:381</a></div></div>
2209
2207
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a202de7ad2bea0311e2f75894c030e7a9"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a202de7ad2bea0311e2f75894c030e7a9">SVF::SVFUtil::getLLVMCallSite</a></div><div class="ttdeci">CallSite getLLVMCallSite(const Instruction *inst)</div><div class="ttdoc">Return LLVM callsite given a instruction. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00219">SVFUtil.h:219</a></div></div>
@@ -2243,8 +2241,8 @@ Private Member Functions</h2></td></tr>
2243
2241
  </table>
2244
2242
  </div><div class="memdoc">
2245
2243
 
2246
- <p class="definition">Definition at line <a class="el" href="PointerAnalysis_8cpp_source.html#l00477">477</a> of file <a class="el" href="PointerAnalysis_8cpp_source.html">PointerAnalysis.cpp</a>.</p>
2247
- <div class="fragment"><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160;{</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160;</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointerAnalysis.html#a0c0fce2539bb9ec6c824f6584a0f6b33">chgraph</a>-&gt;<a class="code" href="classSVF_1_1CommonCHGraph.html#aff7363feebc20267dad7230666b583b1">csHasVtblsBasedonCHA</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a202de7ad2bea0311e2f75894c030e7a9">SVFUtil::getLLVMCallSite</a>(cs-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a674753d5ca0fbe28674acb25291f2bcf">getCallSite</a>())))</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; {</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const GlobalValue*&gt;</a> vtbls;</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a53511f619c06836ee85acf12153810e2">VTableSet</a> &amp;chaVtbls = <a class="code" href="classSVF_1_1PointerAnalysis.html#a0c0fce2539bb9ec6c824f6584a0f6b33">chgraph</a>-&gt;<a class="code" href="classSVF_1_1CommonCHGraph.html#ae90f9a2152ab07aa0df16badd733f1fd">getCSVtblsBasedonCHA</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a202de7ad2bea0311e2f75894c030e7a9">SVFUtil::getLLVMCallSite</a>(cs-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a674753d5ca0fbe28674acb25291f2bcf">getCallSite</a>()));</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html">PointsTo::iterator</a> it = target.<a class="code" href="classSVF_1_1PointsTo.html#aa53962e561399bf493d1f2b9137356f6">begin</a>(), eit = target.<a class="code" href="classSVF_1_1PointsTo.html#a8f741cdffbf3c5fe0f602cdca677dee6">end</a>(); it != eit; ++it)</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; {</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a> *ptdnode = <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(*it);</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; <span class="keywordflow">if</span> (ptdnode-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a1ace69053c2c4436fd78d5624bd0086a">hasValue</a>())</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; {</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a67f3f86344f028cacfbeb08caaf7bb0f">GlobalValue</a> *vtbl = SVFUtil::dyn_cast&lt;GlobalValue&gt;(ptdnode-&gt;<a class="code" href="classSVF_1_1SVFVar.html#afaa33caa8d2a306f6741d9d066243e40">getValue</a>()))</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; {</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; <span class="keywordflow">if</span> (chaVtbls.find(vtbl) != chaVtbls.end())</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; vtbls.insert(vtbl);</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; }</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; }</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; }</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a0c0fce2539bb9ec6c824f6584a0f6b33">chgraph</a>-&gt;<a class="code" href="classSVF_1_1CommonCHGraph.html#aae511b2ee7c2c7ea7be70c7884e92021">getVFnsFromVtbls</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a202de7ad2bea0311e2f75894c030e7a9">SVFUtil::getLLVMCallSite</a>(cs-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a674753d5ca0fbe28674acb25291f2bcf">getCallSite</a>()), vtbls, vfns);</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; }</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160;}</div><div class="ttc" id="classSVF_1_1PointsTo_1_1PointsToIterator_html"><div class="ttname"><a href="classSVF_1_1PointsTo_1_1PointsToIterator.html">SVF::PointsTo::PointsToIterator</a></div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8h_source.html#l00174">PointsTo.h:174</a></div></div>
2244
+ <p class="definition">Definition at line <a class="el" href="PointerAnalysis_8cpp_source.html#l00474">474</a> of file <a class="el" href="PointerAnalysis_8cpp_source.html">PointerAnalysis.cpp</a>.</p>
2245
+ <div class="fragment"><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160;{</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160;</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointerAnalysis.html#a0c0fce2539bb9ec6c824f6584a0f6b33">chgraph</a>-&gt;<a class="code" href="classSVF_1_1CommonCHGraph.html#aff7363feebc20267dad7230666b583b1">csHasVtblsBasedonCHA</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a202de7ad2bea0311e2f75894c030e7a9">SVFUtil::getLLVMCallSite</a>(cs-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a674753d5ca0fbe28674acb25291f2bcf">getCallSite</a>())))</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; {</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const GlobalValue*&gt;</a> vtbls;</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a53511f619c06836ee85acf12153810e2">VTableSet</a> &amp;chaVtbls = <a class="code" href="classSVF_1_1PointerAnalysis.html#a0c0fce2539bb9ec6c824f6584a0f6b33">chgraph</a>-&gt;<a class="code" href="classSVF_1_1CommonCHGraph.html#ae90f9a2152ab07aa0df16badd733f1fd">getCSVtblsBasedonCHA</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a202de7ad2bea0311e2f75894c030e7a9">SVFUtil::getLLVMCallSite</a>(cs-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a674753d5ca0fbe28674acb25291f2bcf">getCallSite</a>()));</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html">PointsTo::iterator</a> it = target.<a class="code" href="classSVF_1_1PointsTo.html#aa53962e561399bf493d1f2b9137356f6">begin</a>(), eit = target.<a class="code" href="classSVF_1_1PointsTo.html#a8f741cdffbf3c5fe0f602cdca677dee6">end</a>(); it != eit; ++it)</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; {</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a> *ptdnode = <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(*it);</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; <span class="keywordflow">if</span> (ptdnode-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a1ace69053c2c4436fd78d5624bd0086a">hasValue</a>())</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; {</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a67f3f86344f028cacfbeb08caaf7bb0f">GlobalValue</a> *vtbl = SVFUtil::dyn_cast&lt;GlobalValue&gt;(ptdnode-&gt;<a class="code" href="classSVF_1_1SVFVar.html#afaa33caa8d2a306f6741d9d066243e40">getValue</a>()))</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; {</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; <span class="keywordflow">if</span> (chaVtbls.find(vtbl) != chaVtbls.end())</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; vtbls.insert(vtbl);</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; }</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; }</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; }</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a0c0fce2539bb9ec6c824f6584a0f6b33">chgraph</a>-&gt;<a class="code" href="classSVF_1_1CommonCHGraph.html#aae511b2ee7c2c7ea7be70c7884e92021">getVFnsFromVtbls</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a202de7ad2bea0311e2f75894c030e7a9">SVFUtil::getLLVMCallSite</a>(cs-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a674753d5ca0fbe28674acb25291f2bcf">getCallSite</a>()), vtbls, vfns);</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; }</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160;}</div><div class="ttc" id="classSVF_1_1PointsTo_1_1PointsToIterator_html"><div class="ttname"><a href="classSVF_1_1PointsTo_1_1PointsToIterator.html">SVF::PointsTo::PointsToIterator</a></div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8h_source.html#l00174">PointsTo.h:174</a></div></div>
2248
2246
  <div class="ttc" id="classSVF_1_1SVFVar_html"><div class="ttname"><a href="classSVF_1_1SVFVar.html">SVF::SVFVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00046">SVFVariables.h:46</a></div></div>
2249
2247
  <div class="ttc" id="classSVF_1_1CommonCHGraph_html_ae90f9a2152ab07aa0df16badd733f1fd"><div class="ttname"><a href="classSVF_1_1CommonCHGraph.html#ae90f9a2152ab07aa0df16badd733f1fd">SVF::CommonCHGraph::getCSVtblsBasedonCHA</a></div><div class="ttdeci">virtual const VTableSet &amp; getCSVtblsBasedonCHA(CallSite cs)=0</div></div>
2250
2248
  <div class="ttc" id="classSVF_1_1CommonCHGraph_html_aae511b2ee7c2c7ea7be70c7884e92021"><div class="ttname"><a href="classSVF_1_1CommonCHGraph.html#aae511b2ee7c2c7ea7be70c7884e92021">SVF::CommonCHGraph::getVFnsFromVtbls</a></div><div class="ttdeci">virtual void getVFnsFromVtbls(CallSite cs, const VTableSet &amp;vtbls, VFunSet &amp;virtualFunctions)=0</div></div>
@@ -2676,8 +2674,8 @@ Private Member Functions</h2></td></tr>
2676
2674
  <p>Match arguments for callsite at caller and callee. </p>
2677
2675
  <p>Match arguments for callsite at caller and callee </p>
2678
2676
 
2679
- <p class="definition">Definition at line <a class="el" href="PointerAnalysis_8cpp_source.html#l00457">457</a> of file <a class="el" href="PointerAnalysis_8cpp_source.html">PointerAnalysis.cpp</a>.</p>
2680
- <div class="fragment"><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160;{</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ThreadAPI.html#a6852ff1eedc1117e95e45e4a90c80d53">ThreadAPI::getThreadAPI</a>()-&gt;isTDFork(cs-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a674753d5ca0fbe28674acb25291f2bcf">getCallSite</a>()))</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a202de7ad2bea0311e2f75894c030e7a9">SVFUtil::getLLVMCallSite</a>(cs-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a674753d5ca0fbe28674acb25291f2bcf">getCallSite</a>()).arg_size() == callee-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#a3757cd3ae587eaca488fa4cd8ad3967d">arg_size</a>();</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFFunction_html_a3757cd3ae587eaca488fa4cd8ad3967d"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#a3757cd3ae587eaca488fa4cd8ad3967d">SVF::SVFFunction::arg_size</a></div><div class="ttdeci">u32_t arg_size() const</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00265">BasicTypes.h:265</a></div></div>
2677
+ <p class="definition">Definition at line <a class="el" href="PointerAnalysis_8cpp_source.html#l00454">454</a> of file <a class="el" href="PointerAnalysis_8cpp_source.html">PointerAnalysis.cpp</a>.</p>
2678
+ <div class="fragment"><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160;{</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ThreadAPI.html#a6852ff1eedc1117e95e45e4a90c80d53">ThreadAPI::getThreadAPI</a>()-&gt;isTDFork(cs-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a674753d5ca0fbe28674acb25291f2bcf">getCallSite</a>()))</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a202de7ad2bea0311e2f75894c030e7a9">SVFUtil::getLLVMCallSite</a>(cs-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a674753d5ca0fbe28674acb25291f2bcf">getCallSite</a>()).arg_size() == callee-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#a3757cd3ae587eaca488fa4cd8ad3967d">arg_size</a>();</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFFunction_html_a3757cd3ae587eaca488fa4cd8ad3967d"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#a3757cd3ae587eaca488fa4cd8ad3967d">SVF::SVFFunction::arg_size</a></div><div class="ttdeci">u32_t arg_size() const</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00265">BasicTypes.h:265</a></div></div>
2681
2679
  <div class="ttc" id="classSVF_1_1ThreadAPI_html_a6852ff1eedc1117e95e45e4a90c80d53"><div class="ttname"><a href="classSVF_1_1ThreadAPI.html#a6852ff1eedc1117e95e45e4a90c80d53">SVF::ThreadAPI::getThreadAPI</a></div><div class="ttdeci">static ThreadAPI * getThreadAPI()</div><div class="ttdoc">Return a static reference. </div><div class="ttdef"><b>Definition:</b> <a href="ThreadAPI_8h_source.html#l00102">ThreadAPI.h:102</a></div></div>
2682
2680
  <div class="ttc" id="classSVF_1_1CallICFGNode_html_a674753d5ca0fbe28674acb25291f2bcf"><div class="ttname"><a href="classSVF_1_1CallICFGNode.html#a674753d5ca0fbe28674acb25291f2bcf">SVF::CallICFGNode::getCallSite</a></div><div class="ttdeci">const Instruction * getCallSite() const</div><div class="ttdoc">Return callsite. </div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00381">ICFGNode.h:381</a></div></div>
2683
2681
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a202de7ad2bea0311e2f75894c030e7a9"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a202de7ad2bea0311e2f75894c030e7a9">SVF::SVFUtil::getLLVMCallSite</a></div><div class="ttdeci">CallSite getLLVMCallSite(const Instruction *inst)</div><div class="ttdoc">Return LLVM callsite given a instruction. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00219">SVFUtil.h:219</a></div></div>
@@ -2713,8 +2711,8 @@ Private Member Functions</h2></td></tr>
2713
2711
  <p>Print targets of a function pointer. </p>
2714
2712
  <p>Print indirect call targets at an indirect callsite </p>
2715
2713
 
2716
- <p class="definition">Definition at line <a class="el" href="PointerAnalysis_8cpp_source.html#l00345">345</a> of file <a class="el" href="PointerAnalysis_8cpp_source.html">PointerAnalysis.cpp</a>.</p>
2717
- <div class="fragment"><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160;{</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\nNodeID: &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1PointerAnalysis.html#adbceaf90526e44192c2fa4aac5468f5f">getFunPtr</a>(cs);</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\nCallSite: &quot;</span>;</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; cs-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a674753d5ca0fbe28674acb25291f2bcf">getCallSite</a>()-&gt;print(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>());</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\tLocation: &quot;</span> &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">SVFUtil::getSourceLoc</a>(cs-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a674753d5ca0fbe28674acb25291f2bcf">getCallSite</a>());</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\t with Targets: &quot;</span>;</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160;</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <span class="keywordflow">if</span> (!targets.empty())</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; {</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; FunctionSet::const_iterator fit = targets.begin();</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; FunctionSet::const_iterator feit = targets.end();</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <span class="keywordflow">for</span> (; fit != feit; ++fit)</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; {</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* callee = *fit;</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\n\t&quot;</span> &lt;&lt; callee-&gt;<a class="code" href="classSVF_1_1SVFValue.html#adc15c1f7a77158142156fba7524e89c9">getName</a>();</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; }</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; }</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; {</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\n\tNo Targets!&quot;</span>;</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; }</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160;</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00233">BasicTypes.h:233</a></div></div>
2714
+ <p class="definition">Definition at line <a class="el" href="PointerAnalysis_8cpp_source.html#l00342">342</a> of file <a class="el" href="PointerAnalysis_8cpp_source.html">PointerAnalysis.cpp</a>.</p>
2715
+ <div class="fragment"><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160;{</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\nNodeID: &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1PointerAnalysis.html#adbceaf90526e44192c2fa4aac5468f5f">getFunPtr</a>(cs);</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\nCallSite: &quot;</span>;</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; cs-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a674753d5ca0fbe28674acb25291f2bcf">getCallSite</a>()-&gt;print(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>());</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\tLocation: &quot;</span> &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">SVFUtil::getSourceLoc</a>(cs-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a674753d5ca0fbe28674acb25291f2bcf">getCallSite</a>());</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\t with Targets: &quot;</span>;</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160;</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; <span class="keywordflow">if</span> (!targets.empty())</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; {</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; FunctionSet::const_iterator fit = targets.begin();</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; FunctionSet::const_iterator feit = targets.end();</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; <span class="keywordflow">for</span> (; fit != feit; ++fit)</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; {</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* callee = *fit;</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\n\t&quot;</span> &lt;&lt; callee-&gt;<a class="code" href="classSVF_1_1SVFValue.html#adc15c1f7a77158142156fba7524e89c9">getName</a>();</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; }</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; }</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; {</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\n\tNo Targets!&quot;</span>;</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; }</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160;</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00233">BasicTypes.h:233</a></div></div>
2718
2716
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a28c0ede7e4765d2a686fc8ae0f5641a4"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">SVF::SVFUtil::getSourceLoc</a></div><div class="ttdeci">std::string getSourceLoc(const Value *val)</div><div class="ttdoc">Return source code including line number and file name from debug information. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00269">SVFUtil.cpp:269</a></div></div>
2719
2717
  <div class="ttc" id="classSVF_1_1SVFValue_html_adc15c1f7a77158142156fba7524e89c9"><div class="ttname"><a href="classSVF_1_1SVFValue.html#adc15c1f7a77158142156fba7524e89c9">SVF::SVFValue::getName</a></div><div class="ttdeci">const llvm::StringRef getName() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00231">SVFBasicTypes.h:231</a></div></div>
2720
2718
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a85ab6b592fefc45a0674d3295e01638f"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVF::SVFUtil::outs</a></div><div class="ttdeci">raw_ostream &amp; outs()</div><div class="ttdoc">Overwrite llvm::outs() </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00049">SVFUtil.h:49</a></div></div>
@@ -2739,9 +2737,9 @@ Private Member Functions</h2></td></tr>
2739
2737
  </div><div class="memdoc">
2740
2738
  <p>Print all indirect callsites </p>
2741
2739
 
2742
- <p class="definition">Definition at line <a class="el" href="PointerAnalysis_8cpp_source.html#l00374">374</a> of file <a class="el" href="PointerAnalysis_8cpp_source.html">PointerAnalysis.cpp</a>.</p>
2743
- <div class="fragment"><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160;{</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;==================Function Pointer Targets==================\n&quot;</span>;</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a35bd5f0fb2c146199e9f1aa6a19b4062">CallEdgeMap</a>&amp; callEdges = <a class="code" href="classSVF_1_1PointerAnalysis.html#a1ca30dfa42702071b65d363c76d25cbe">getIndCallMap</a>();</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; CallEdgeMap::const_iterator it = callEdges.begin();</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; CallEdgeMap::const_iterator eit = callEdges.end();</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; <span class="keywordflow">for</span> (; it != eit; ++it)</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; {</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs = it-&gt;first;</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#ac1422cd8b449fdb4a1f7c539364e4c41">FunctionSet</a>&amp; targets = it-&gt;second;</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a062f1f2d6d47694caa9ac64a9e68c7b3">printIndCSTargets</a>(cs, targets);</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; }</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160;</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#ad95c842964e6ca46e51fb763fefec585">CallSiteToFunPtrMap</a>&amp; indCS = <a class="code" href="classSVF_1_1PointerAnalysis.html#a9d3e7753643166465b0d647a75bc145a">getIndirectCallsites</a>();</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; CallSiteToFunPtrMap::const_iterator csIt = indCS.begin();</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; CallSiteToFunPtrMap::const_iterator csEit = indCS.end();</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <span class="keywordflow">for</span> (; csIt != csEit; ++csIt)</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; {</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs = csIt-&gt;first;</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointerAnalysis.html#abdacd060691add054839aa183babe095">hasIndCSCallees</a>(cs) == <span class="keyword">false</span>)</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; {</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\nNodeID: &quot;</span> &lt;&lt; csIt-&gt;second;</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\nCallSite: &quot;</span>;</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; cs-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a674753d5ca0fbe28674acb25291f2bcf">getCallSite</a>()-&gt;print(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>());</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\tLocation: &quot;</span> &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">SVFUtil::getSourceLoc</a>(cs-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a674753d5ca0fbe28674acb25291f2bcf">getCallSite</a>());</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\n\t!!!has no targets!!!\n&quot;</span>;</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; }</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; }</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160;}</div><div class="ttc" id="classSVF_1_1PointerAnalysis_html_a9d3e7753643166465b0d647a75bc145a"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a9d3e7753643166465b0d647a75bc145a">SVF::PointerAnalysis::getIndirectCallsites</a></div><div class="ttdeci">const CallSiteToFunPtrMap &amp; getIndirectCallsites() const</div><div class="ttdoc">Return all indirect callsites. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00280">PointerAnalysis.h:280</a></div></div>
2744
- <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a062f1f2d6d47694caa9ac64a9e68c7b3"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a062f1f2d6d47694caa9ac64a9e68c7b3">SVF::PointerAnalysis::printIndCSTargets</a></div><div class="ttdeci">void printIndCSTargets()</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8cpp_source.html#l00374">PointerAnalysis.cpp:374</a></div></div>
2740
+ <p class="definition">Definition at line <a class="el" href="PointerAnalysis_8cpp_source.html#l00371">371</a> of file <a class="el" href="PointerAnalysis_8cpp_source.html">PointerAnalysis.cpp</a>.</p>
2741
+ <div class="fragment"><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160;{</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;==================Function Pointer Targets==================\n&quot;</span>;</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a35bd5f0fb2c146199e9f1aa6a19b4062">CallEdgeMap</a>&amp; callEdges = <a class="code" href="classSVF_1_1PointerAnalysis.html#a1ca30dfa42702071b65d363c76d25cbe">getIndCallMap</a>();</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; CallEdgeMap::const_iterator it = callEdges.begin();</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; CallEdgeMap::const_iterator eit = callEdges.end();</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; <span class="keywordflow">for</span> (; it != eit; ++it)</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; {</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs = it-&gt;first;</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#ac1422cd8b449fdb4a1f7c539364e4c41">FunctionSet</a>&amp; targets = it-&gt;second;</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a062f1f2d6d47694caa9ac64a9e68c7b3">printIndCSTargets</a>(cs, targets);</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; }</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160;</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#ad95c842964e6ca46e51fb763fefec585">CallSiteToFunPtrMap</a>&amp; indCS = <a class="code" href="classSVF_1_1PointerAnalysis.html#a9d3e7753643166465b0d647a75bc145a">getIndirectCallsites</a>();</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; CallSiteToFunPtrMap::const_iterator csIt = indCS.begin();</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; CallSiteToFunPtrMap::const_iterator csEit = indCS.end();</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <span class="keywordflow">for</span> (; csIt != csEit; ++csIt)</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; {</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs = csIt-&gt;first;</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointerAnalysis.html#abdacd060691add054839aa183babe095">hasIndCSCallees</a>(cs) == <span class="keyword">false</span>)</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; {</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\nNodeID: &quot;</span> &lt;&lt; csIt-&gt;second;</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\nCallSite: &quot;</span>;</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; cs-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a674753d5ca0fbe28674acb25291f2bcf">getCallSite</a>()-&gt;print(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>());</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\tLocation: &quot;</span> &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">SVFUtil::getSourceLoc</a>(cs-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a674753d5ca0fbe28674acb25291f2bcf">getCallSite</a>());</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\n\t!!!has no targets!!!\n&quot;</span>;</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; }</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; }</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160;}</div><div class="ttc" id="classSVF_1_1PointerAnalysis_html_a9d3e7753643166465b0d647a75bc145a"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a9d3e7753643166465b0d647a75bc145a">SVF::PointerAnalysis::getIndirectCallsites</a></div><div class="ttdeci">const CallSiteToFunPtrMap &amp; getIndirectCallsites() const</div><div class="ttdoc">Return all indirect callsites. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00280">PointerAnalysis.h:280</a></div></div>
2742
+ <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a062f1f2d6d47694caa9ac64a9e68c7b3"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a062f1f2d6d47694caa9ac64a9e68c7b3">SVF::PointerAnalysis::printIndCSTargets</a></div><div class="ttdeci">void printIndCSTargets()</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8cpp_source.html#l00371">PointerAnalysis.cpp:371</a></div></div>
2745
2743
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a28c0ede7e4765d2a686fc8ae0f5641a4"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">SVF::SVFUtil::getSourceLoc</a></div><div class="ttdeci">std::string getSourceLoc(const Value *val)</div><div class="ttdoc">Return source code including line number and file name from debug information. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00269">SVFUtil.cpp:269</a></div></div>
2746
2744
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_abdacd060691add054839aa183babe095"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#abdacd060691add054839aa183babe095">SVF::PointerAnalysis::hasIndCSCallees</a></div><div class="ttdeci">bool hasIndCSCallees(const CallICFGNode *cs) const</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00392">PointerAnalysis.h:392</a></div></div>
2747
2745
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a35bd5f0fb2c146199e9f1aa6a19b4062"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a35bd5f0fb2c146199e9f1aa6a19b4062">SVF::PointerAnalysis::CallEdgeMap</a></div><div class="ttdeci">OrderedMap&lt; const CallICFGNode *, FunctionSet &gt; CallEdgeMap</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00111">PointerAnalysis.h:111</a></div></div>
@@ -2892,16 +2890,16 @@ Private Member Functions</h2></td></tr>
2892
2890
 
2893
2891
  <p>Resolve cpp indirect call edges. </p>
2894
2892
 
2895
- <p class="definition">Definition at line <a class="el" href="PointerAnalysis_8cpp_source.html#l00525">525</a> of file <a class="el" href="PointerAnalysis_8cpp_source.html">PointerAnalysis.cpp</a>.</p>
2896
- <div class="fragment"><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160;{</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="namespaceSVF_1_1cppUtil.html#aca6465c72effcaddeb34f55da4555754">isVirtualCallSite</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a202de7ad2bea0311e2f75894c030e7a9">SVFUtil::getLLVMCallSite</a>(cs-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a674753d5ca0fbe28674acb25291f2bcf">getCallSite</a>())) &amp;&amp; <span class="stringliteral">&quot;not cpp virtual call&quot;</span>);</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160;</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; <a class="code" href="namespaceSVF.html#ad2b487757f1e1a1d81073120fc1d49c7">VFunSet</a> vfns;</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a485ec0be47c5e78bac4511d00687aee1">Options::ConnectVCallOnCHA</a>)</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#ade41f3562704d56c7490dcfc941b3437">getVFnsFromCHA</a>(cs, vfns);</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a011b8401f5ed5fdb6cd507053465a7a2">getVFnsFromPts</a>(cs, target, vfns);</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a6a5dec067fa2a1babc83f36daa8afcc3">connectVCallToVFns</a>(cs, vfns, newEdges);</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160;}</div><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#l00257">CPPUtil.cpp:257</a></div></div>
2893
+ <p class="definition">Definition at line <a class="el" href="PointerAnalysis_8cpp_source.html#l00522">522</a> of file <a class="el" href="PointerAnalysis_8cpp_source.html">PointerAnalysis.cpp</a>.</p>
2894
+ <div class="fragment"><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160;{</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="namespaceSVF_1_1cppUtil.html#aca6465c72effcaddeb34f55da4555754">isVirtualCallSite</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a202de7ad2bea0311e2f75894c030e7a9">SVFUtil::getLLVMCallSite</a>(cs-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a674753d5ca0fbe28674acb25291f2bcf">getCallSite</a>())) &amp;&amp; <span class="stringliteral">&quot;not cpp virtual call&quot;</span>);</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160;</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; <a class="code" href="namespaceSVF.html#ad2b487757f1e1a1d81073120fc1d49c7">VFunSet</a> vfns;</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a485ec0be47c5e78bac4511d00687aee1">Options::ConnectVCallOnCHA</a>)</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#ade41f3562704d56c7490dcfc941b3437">getVFnsFromCHA</a>(cs, vfns);</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a011b8401f5ed5fdb6cd507053465a7a2">getVFnsFromPts</a>(cs, target, vfns);</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a6a5dec067fa2a1babc83f36daa8afcc3">connectVCallToVFns</a>(cs, vfns, newEdges);</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160;}</div><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#l00257">CPPUtil.cpp:257</a></div></div>
2897
2895
  <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>
2898
- <div class="ttc" id="classSVF_1_1PointerAnalysis_html_ade41f3562704d56c7490dcfc941b3437"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#ade41f3562704d56c7490dcfc941b3437">SVF::PointerAnalysis::getVFnsFromCHA</a></div><div class="ttdeci">void getVFnsFromCHA(const CallICFGNode *cs, VFunSet &amp;vfns)</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8cpp_source.html#l00468">PointerAnalysis.cpp:468</a></div></div>
2896
+ <div class="ttc" id="classSVF_1_1PointerAnalysis_html_ade41f3562704d56c7490dcfc941b3437"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#ade41f3562704d56c7490dcfc941b3437">SVF::PointerAnalysis::getVFnsFromCHA</a></div><div class="ttdeci">void getVFnsFromCHA(const CallICFGNode *cs, VFunSet &amp;vfns)</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8cpp_source.html#l00465">PointerAnalysis.cpp:465</a></div></div>
2899
2897
  <div class="ttc" id="namespaceSVF_html_ad2b487757f1e1a1d81073120fc1d49c7"><div class="ttname"><a href="namespaceSVF.html#ad2b487757f1e1a1d81073120fc1d49c7">SVF::VFunSet</a></div><div class="ttdeci">Set&lt; const SVFFunction * &gt; VFunSet</div><div class="ttdef"><b>Definition:</b> <a href="CHG_8h_source.html#l00047">CHG.h:47</a></div></div>
2900
2898
  <div class="ttc" id="classSVF_1_1CallICFGNode_html_a674753d5ca0fbe28674acb25291f2bcf"><div class="ttname"><a href="classSVF_1_1CallICFGNode.html#a674753d5ca0fbe28674acb25291f2bcf">SVF::CallICFGNode::getCallSite</a></div><div class="ttdeci">const Instruction * getCallSite() const</div><div class="ttdoc">Return callsite. </div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00381">ICFGNode.h:381</a></div></div>
2901
2899
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a202de7ad2bea0311e2f75894c030e7a9"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a202de7ad2bea0311e2f75894c030e7a9">SVF::SVFUtil::getLLVMCallSite</a></div><div class="ttdeci">CallSite getLLVMCallSite(const Instruction *inst)</div><div class="ttdoc">Return LLVM callsite given a instruction. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00219">SVFUtil.h:219</a></div></div>
2902
2900
  <div class="ttc" id="classSVF_1_1Options_html_a485ec0be47c5e78bac4511d00687aee1"><div class="ttname"><a href="classSVF_1_1Options.html#a485ec0be47c5e78bac4511d00687aee1">SVF::Options::ConnectVCallOnCHA</a></div><div class="ttdeci">static const llvm::cl::opt&lt; bool &gt; ConnectVCallOnCHA</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00142">Options.h:142</a></div></div>
2903
- <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a6a5dec067fa2a1babc83f36daa8afcc3"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a6a5dec067fa2a1babc83f36daa8afcc3">SVF::PointerAnalysis::connectVCallToVFns</a></div><div class="ttdeci">void connectVCallToVFns(const CallICFGNode *cs, const VFunSet &amp;vfns, CallEdgeMap &amp;newEdges)</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8cpp_source.html#l00503">PointerAnalysis.cpp:503</a></div></div>
2904
- <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a011b8401f5ed5fdb6cd507053465a7a2"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a011b8401f5ed5fdb6cd507053465a7a2">SVF::PointerAnalysis::getVFnsFromPts</a></div><div class="ttdeci">void getVFnsFromPts(const CallICFGNode *cs, const PointsTo &amp;target, VFunSet &amp;vfns)</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8cpp_source.html#l00477">PointerAnalysis.cpp:477</a></div></div>
2901
+ <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a6a5dec067fa2a1babc83f36daa8afcc3"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a6a5dec067fa2a1babc83f36daa8afcc3">SVF::PointerAnalysis::connectVCallToVFns</a></div><div class="ttdeci">void connectVCallToVFns(const CallICFGNode *cs, const VFunSet &amp;vfns, CallEdgeMap &amp;newEdges)</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8cpp_source.html#l00500">PointerAnalysis.cpp:500</a></div></div>
2902
+ <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a011b8401f5ed5fdb6cd507053465a7a2"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a011b8401f5ed5fdb6cd507053465a7a2">SVF::PointerAnalysis::getVFnsFromPts</a></div><div class="ttdeci">void getVFnsFromPts(const CallICFGNode *cs, const PointsTo &amp;target, VFunSet &amp;vfns)</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8cpp_source.html#l00474">PointerAnalysis.cpp:474</a></div></div>
2905
2903
  </div><!-- fragment -->
2906
2904
  </div>
2907
2905
  </div>
@@ -2956,8 +2954,8 @@ Private Member Functions</h2></td></tr>
2956
2954
  <p>discover indirect pointer target</p>
2957
2955
  <p>if the arg size does not match then we do not need to connect this parameter even if the callee is a variadic function (the first parameter of variadic function is its paramter number) </p>
2958
2956
 
2959
- <p class="definition">Definition at line <a class="el" href="PointerAnalysis_8cpp_source.html#l00409">409</a> of file <a class="el" href="PointerAnalysis_8cpp_source.html">PointerAnalysis.cpp</a>.</p>
2960
- <div class="fragment"><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160;{</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160;</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a3dbe0b17694daa74f648a70e77efaf23">isIndirectCallSites</a>(cs) &amp;&amp; <span class="stringliteral">&quot;not an indirect callsite?&quot;</span>);</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html">PointsTo::iterator</a> ii = target.<a class="code" href="classSVF_1_1PointsTo.html#aa53962e561399bf493d1f2b9137356f6">begin</a>(), ie = target.<a class="code" href="classSVF_1_1PointsTo.html#a8f741cdffbf3c5fe0f602cdca677dee6">end</a>();</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; ii != ie; ii++)</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; {</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160;</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1PointerAnalysis.html#ad2c8654a6672472f9bf17681aa9b60bb">getNumOfResolvedIndCallEdge</a>() &gt;= <a class="code" href="classSVF_1_1Options.html#ad6c29b05188c9e06aa89623c61865ed8">Options::IndirectCallLimit</a>)</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; {</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a6c06020737f7dff22a666b75c28c5e7d">wrnMsg</a>(<span class="stringliteral">&quot;Resolved Indirect Call Edges are Out-Of-Budget, please increase the limit&quot;</span>);</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; }</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160;</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ObjVar.html">ObjVar</a>* objPN = SVFUtil::dyn_cast&lt;ObjVar&gt;(<a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(*ii)))</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; {</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* obj = <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a2dd4d5f704906270af13e7a07f900eb1">getObject</a>(objPN);</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160;</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; <span class="keywordflow">if</span>(obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#ae1d14e2bf0be36cdadebf119822f607b">isFunction</a>())</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; {</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* calleefun = SVFUtil::cast&lt;Function&gt;(obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#a4da54ef60231d2e6c26669226b99d2f3">getValue</a>());</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* callee = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a142e650415cb81011eb59dadd3cb0637">getDefFunForMultipleModule</a>(calleefun);</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160;</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1PointerAnalysis.html#ab541df6fc703c0b21c2c308584c0b7ff">matchArgs</a>(cs, callee) == <span class="keyword">false</span>)</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160;</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; <span class="keywordflow">if</span>(0 == <a class="code" href="classSVF_1_1PointerAnalysis.html#a1ca30dfa42702071b65d363c76d25cbe">getIndCallMap</a>()[cs].count(callee))</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; {</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; newEdges[cs].insert(callee);</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a1ca30dfa42702071b65d363c76d25cbe">getIndCallMap</a>()[cs].insert(callee);</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160;</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#ad47b39252e02c68dfb466d4f42dc7ebe">ptaCallGraph</a>-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#a46416c668e2f0099394e79f685ede758">addIndirectCallGraphEdge</a>(cs, cs-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a18f4077d42b23c3fed35efc793b6102e">getCaller</a>(), callee);</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; <span class="comment">// FIXME: do we need to update llvm call graph here?</span></div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; <span class="comment">// The indirect call is maintained by ourself, We may update llvm&#39;s when we need to</span></div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; <span class="comment">//CallGraphNode* callgraphNode = callgraph-&gt;getOrInsertFunction(cs.getCaller());</span></div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; <span class="comment">//callgraphNode-&gt;addCalledFunction(cs,callgraph-&gt;getOrInsertFunction(callee));</span></div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; }</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; }</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; }</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; }</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160;}</div><div class="ttc" id="classSVF_1_1MemObj_html"><div class="ttname"><a href="classSVF_1_1MemObj.html">SVF::MemObj</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00415">SymbolTableInfo.h:415</a></div></div>
2957
+ <p class="definition">Definition at line <a class="el" href="PointerAnalysis_8cpp_source.html#l00406">406</a> of file <a class="el" href="PointerAnalysis_8cpp_source.html">PointerAnalysis.cpp</a>.</p>
2958
+ <div class="fragment"><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160;{</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160;</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a3dbe0b17694daa74f648a70e77efaf23">isIndirectCallSites</a>(cs) &amp;&amp; <span class="stringliteral">&quot;not an indirect callsite?&quot;</span>);</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html">PointsTo::iterator</a> ii = target.<a class="code" href="classSVF_1_1PointsTo.html#aa53962e561399bf493d1f2b9137356f6">begin</a>(), ie = target.<a class="code" href="classSVF_1_1PointsTo.html#a8f741cdffbf3c5fe0f602cdca677dee6">end</a>();</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; ii != ie; ii++)</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; {</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160;</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1PointerAnalysis.html#ad2c8654a6672472f9bf17681aa9b60bb">getNumOfResolvedIndCallEdge</a>() &gt;= <a class="code" href="classSVF_1_1Options.html#ad6c29b05188c9e06aa89623c61865ed8">Options::IndirectCallLimit</a>)</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; {</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a6c06020737f7dff22a666b75c28c5e7d">wrnMsg</a>(<span class="stringliteral">&quot;Resolved Indirect Call Edges are Out-Of-Budget, please increase the limit&quot;</span>);</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; }</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160;</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ObjVar.html">ObjVar</a>* objPN = SVFUtil::dyn_cast&lt;ObjVar&gt;(<a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(*ii)))</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; {</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* obj = <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a2dd4d5f704906270af13e7a07f900eb1">getObject</a>(objPN);</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160;</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <span class="keywordflow">if</span>(obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#ae1d14e2bf0be36cdadebf119822f607b">isFunction</a>())</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; {</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* calleefun = SVFUtil::cast&lt;Function&gt;(obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#a4da54ef60231d2e6c26669226b99d2f3">getValue</a>());</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* callee = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a142e650415cb81011eb59dadd3cb0637">getDefFunForMultipleModule</a>(calleefun);</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160;</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1PointerAnalysis.html#ab541df6fc703c0b21c2c308584c0b7ff">matchArgs</a>(cs, callee) == <span class="keyword">false</span>)</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160;</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; <span class="keywordflow">if</span>(0 == <a class="code" href="classSVF_1_1PointerAnalysis.html#a1ca30dfa42702071b65d363c76d25cbe">getIndCallMap</a>()[cs].count(callee))</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; {</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; newEdges[cs].insert(callee);</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a1ca30dfa42702071b65d363c76d25cbe">getIndCallMap</a>()[cs].insert(callee);</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160;</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#ad47b39252e02c68dfb466d4f42dc7ebe">ptaCallGraph</a>-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#a46416c668e2f0099394e79f685ede758">addIndirectCallGraphEdge</a>(cs, cs-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a18f4077d42b23c3fed35efc793b6102e">getCaller</a>(), callee);</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; <span class="comment">// FIXME: do we need to update llvm call graph here?</span></div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; <span class="comment">// The indirect call is maintained by ourself, We may update llvm&#39;s when we need to</span></div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; <span class="comment">//CallGraphNode* callgraphNode = callgraph-&gt;getOrInsertFunction(cs.getCaller());</span></div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; <span class="comment">//callgraphNode-&gt;addCalledFunction(cs,callgraph-&gt;getOrInsertFunction(callee));</span></div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; }</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; }</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; }</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; }</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160;}</div><div class="ttc" id="classSVF_1_1MemObj_html"><div class="ttname"><a href="classSVF_1_1MemObj.html">SVF::MemObj</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00415">SymbolTableInfo.h:415</a></div></div>
2961
2959
  <div class="ttc" id="classSVF_1_1PTACallGraph_html_a46416c668e2f0099394e79f685ede758"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#a46416c668e2f0099394e79f685ede758">SVF::PTACallGraph::addIndirectCallGraphEdge</a></div><div class="ttdeci">void addIndirectCallGraphEdge(const CallICFGNode *cs, const SVFFunction *callerFun, const SVFFunction *calleeFun)</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8cpp_source.html#l00185">PTACallGraph.cpp:185</a></div></div>
2962
2960
  <div class="ttc" id="classSVF_1_1MemObj_html_ae1d14e2bf0be36cdadebf119822f607b"><div class="ttname"><a href="classSVF_1_1MemObj.html#ae1d14e2bf0be36cdadebf119822f607b">SVF::MemObj::isFunction</a></div><div class="ttdeci">bool isFunction() const</div><div class="ttdoc">object attributes methods </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00730">SymbolTableInfo.cpp:730</a></div></div>
2963
2961
  <div class="ttc" id="classSVF_1_1SVFIR_html_a3dbe0b17694daa74f648a70e77efaf23"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a3dbe0b17694daa74f648a70e77efaf23">SVF::SVFIR::isIndirectCallSites</a></div><div class="ttdeci">bool isIndirectCallSites(const CallICFGNode *cs) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00328">SVFIR.h:328</a></div></div>
@@ -2967,7 +2965,7 @@ Private Member Functions</h2></td></tr>
2967
2965
  <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="BasicTypes_8h_source.html#l00233">BasicTypes.h:233</a></div></div>
2968
2966
  <div class="ttc" id="classSVF_1_1Options_html_ad6c29b05188c9e06aa89623c61865ed8"><div class="ttname"><a href="classSVF_1_1Options.html#ad6c29b05188c9e06aa89623c61865ed8">SVF::Options::IndirectCallLimit</a></div><div class="ttdeci">static const llvm::cl::opt&lt; unsigned &gt; IndirectCallLimit</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00138">Options.h:138</a></div></div>
2969
2967
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_ad47b39252e02c68dfb466d4f42dc7ebe"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#ad47b39252e02c68dfb466d4f42dc7ebe">SVF::PointerAnalysis::ptaCallGraph</a></div><div class="ttdeci">PTACallGraph * ptaCallGraph</div><div class="ttdoc">Call graph used for pointer analysis. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00157">PointerAnalysis.h:157</a></div></div>
2970
- <div class="ttc" id="classSVF_1_1PointerAnalysis_html_ab541df6fc703c0b21c2c308584c0b7ff"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#ab541df6fc703c0b21c2c308584c0b7ff">SVF::PointerAnalysis::matchArgs</a></div><div class="ttdeci">bool matchArgs(const CallICFGNode *cs, const SVFFunction *callee)</div><div class="ttdoc">Match arguments for callsite at caller and callee. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8cpp_source.html#l00457">PointerAnalysis.cpp:457</a></div></div>
2968
+ <div class="ttc" id="classSVF_1_1PointerAnalysis_html_ab541df6fc703c0b21c2c308584c0b7ff"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#ab541df6fc703c0b21c2c308584c0b7ff">SVF::PointerAnalysis::matchArgs</a></div><div class="ttdeci">bool matchArgs(const CallICFGNode *cs, const SVFFunction *callee)</div><div class="ttdoc">Match arguments for callsite at caller and callee. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8cpp_source.html#l00454">PointerAnalysis.cpp:454</a></div></div>
2971
2969
  <div class="ttc" id="classSVF_1_1ObjVar_html"><div class="ttname"><a href="classSVF_1_1ObjVar.html">SVF::ObjVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00325">SVFVariables.h:325</a></div></div>
2972
2970
  <div class="ttc" id="classSVF_1_1PointsTo_html_aa53962e561399bf493d1f2b9137356f6"><div class="ttname"><a href="classSVF_1_1PointsTo.html#aa53962e561399bf493d1f2b9137356f6">SVF::PointsTo::begin</a></div><div class="ttdeci">const_iterator begin(void) const</div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8h_source.html#l00127">PointsTo.h:127</a></div></div>
2973
2971
  <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="BasicTypes_8h_source.html#l00076">BasicTypes.h:76</a></div></div>
@@ -3038,8 +3036,8 @@ Private Member Functions</h2></td></tr>
3038
3036
  </div><div class="memdoc">
3039
3037
  <p>Pointer analysis validator </p>
3040
3038
 
3041
- <p class="definition">Definition at line <a class="el" href="PointerAnalysis_8cpp_source.html#l00611">611</a> of file <a class="el" href="PointerAnalysis_8cpp_source.html">PointerAnalysis.cpp</a>.</p>
3042
- <div class="fragment"><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160;{</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160;</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* checkFun = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a4f457db1cfa0d4f94762a306c0ac3757">getFunction</a>(fun))</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; {</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; <span class="keywordflow">if</span>(!checkFun-&gt;getLLVMFun()-&gt;use_empty())</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;[&quot;</span> &lt;&lt; this-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#aed4e5066f6ddef83afaf60adbcc11de0">PTAName</a>() &lt;&lt; <span class="stringliteral">&quot;] Checking &quot;</span> &lt;&lt; fun &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160;</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; <span class="keywordflow">for</span> (Value::user_iterator i = checkFun-&gt;getLLVMFun()-&gt;user_begin(), e =</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; checkFun-&gt;getLLVMFun()-&gt;user_end(); i != e; ++i)</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">CallInst</a> *call = SVFUtil::dyn_cast&lt;CallInst&gt;(*i))</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; {</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(call-&gt;arg_size() == 2</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; &amp;&amp; <span class="stringliteral">&quot;arguments should be two pointers!!&quot;</span>);</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* V1 = call-&gt;getArgOperand(0);</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* V2 = call-&gt;getArgOperand(1);</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; <a class="code" href="namespaceSVF.html#ae941b2925716d8ebe14bf190aa8dfd06">AliasResult</a> aliasRes = <a class="code" href="classSVF_1_1PointerAnalysis.html#abd9da46106d820721a24201caaa164e1">alias</a>(V1, V2);</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160;</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; <span class="keywordtype">bool</span> expectedFailure = <span class="keyword">false</span>;</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; <span class="keywordflow">if</span> (fun == <a class="code" href="classSVF_1_1PointerAnalysis.html#a32c6f12ce8bc0554dbb6aafa36f9a235">aliasTestFailMayAlias</a> || fun == <a class="code" href="classSVF_1_1PointerAnalysis.html#a651cc82379c2d18cc2f69f25b2ae08db">aliasTestFailMayAliasMangled</a>)</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; {</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; <span class="comment">// change to must alias when our analysis support it</span></div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; <span class="keywordflow">if</span> (aliasRes == llvm::AliasResult::NoAlias)</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; expectedFailure = <span class="keyword">true</span>;</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; }</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (fun == <a class="code" href="classSVF_1_1PointerAnalysis.html#a18347e41bc66b16e3f42c7c52811ad42">aliasTestFailNoAlias</a> || fun == <a class="code" href="classSVF_1_1PointerAnalysis.html#aefd4e9ea66da5ad84a45efead823eb22">aliasTestFailNoAliasMangled</a>)</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; {</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; <span class="comment">// change to partial alias when our analysis support it</span></div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; <span class="keywordflow">if</span> (aliasRes == llvm::AliasResult::MayAlias || aliasRes == llvm::AliasResult::PartialAlias || aliasRes == llvm::AliasResult::MustAlias)</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; expectedFailure = <span class="keyword">true</span>;</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; }</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;not supported alias check!!&quot;</span>);</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160;</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> id1 = <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#abffddd41cc308b9b3bd5ad4a7f8f1624">getValueNode</a>(V1);</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> id2 = <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#abffddd41cc308b9b3bd5ad4a7f8f1624">getValueNode</a>(V2);</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160;</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; <span class="keywordflow">if</span> (expectedFailure)</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a6a55f1f8598998a3ffbbc67d32eaf8c4">sucMsg</a>(<span class="stringliteral">&quot;\t EXPECTED-FAILURE :&quot;</span>) &lt;&lt; fun &lt;&lt; <span class="stringliteral">&quot; check &lt;id:&quot;</span> &lt;&lt; id1 &lt;&lt; <span class="stringliteral">&quot;, id:&quot;</span> &lt;&lt; id2 &lt;&lt; <span class="stringliteral">&quot;&gt; at (&quot;</span></div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">getSourceLoc</a>(call) &lt;&lt; <span class="stringliteral">&quot;)\n&quot;</span>;</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; {</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#af0f447732c67402037a86ea29006efc2">SVFUtil::errs</a>() &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a5d4bb92f5df30417f414397f8e58cf01">errMsg</a>(<span class="stringliteral">&quot;\t UNEXPECTED FAILURE :&quot;</span>) &lt;&lt; fun &lt;&lt; <span class="stringliteral">&quot; check &lt;id:&quot;</span> &lt;&lt; id1 &lt;&lt; <span class="stringliteral">&quot;, id:&quot;</span> &lt;&lt; id2 &lt;&lt; <span class="stringliteral">&quot;&gt; at (&quot;</span></div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">getSourceLoc</a>(call) &lt;&lt; <span class="stringliteral">&quot;)\n&quot;</span>;</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;test case failed!&quot;</span>);</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; }</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; }</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;alias check functions not only used at callsite??&quot;</span>);</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; }</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_a43a65e0d33af3c743294f7a1139d2301"><div class="ttname"><a href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00018">MTAResultValidator.h:18</a></div></div>
3039
+ <p class="definition">Definition at line <a class="el" href="PointerAnalysis_8cpp_source.html#l00608">608</a> of file <a class="el" href="PointerAnalysis_8cpp_source.html">PointerAnalysis.cpp</a>.</p>
3040
+ <div class="fragment"><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160;{</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160;</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* checkFun = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a4f457db1cfa0d4f94762a306c0ac3757">getFunction</a>(fun))</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; {</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; <span class="keywordflow">if</span>(!checkFun-&gt;getLLVMFun()-&gt;use_empty())</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;[&quot;</span> &lt;&lt; this-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#aed4e5066f6ddef83afaf60adbcc11de0">PTAName</a>() &lt;&lt; <span class="stringliteral">&quot;] Checking &quot;</span> &lt;&lt; fun &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160;</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; <span class="keywordflow">for</span> (Value::user_iterator i = checkFun-&gt;getLLVMFun()-&gt;user_begin(), e =</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; checkFun-&gt;getLLVMFun()-&gt;user_end(); i != e; ++i)</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">CallInst</a> *call = SVFUtil::dyn_cast&lt;CallInst&gt;(*i))</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; {</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(call-&gt;arg_size() == 2</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; &amp;&amp; <span class="stringliteral">&quot;arguments should be two pointers!!&quot;</span>);</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* V1 = call-&gt;getArgOperand(0);</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* V2 = call-&gt;getArgOperand(1);</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; <a class="code" href="namespaceSVF.html#ae941b2925716d8ebe14bf190aa8dfd06">AliasResult</a> aliasRes = <a class="code" href="classSVF_1_1PointerAnalysis.html#abd9da46106d820721a24201caaa164e1">alias</a>(V1, V2);</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160;</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; <span class="keywordtype">bool</span> expectedFailure = <span class="keyword">false</span>;</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; <span class="keywordflow">if</span> (fun == <a class="code" href="classSVF_1_1PointerAnalysis.html#a32c6f12ce8bc0554dbb6aafa36f9a235">aliasTestFailMayAlias</a> || fun == <a class="code" href="classSVF_1_1PointerAnalysis.html#a651cc82379c2d18cc2f69f25b2ae08db">aliasTestFailMayAliasMangled</a>)</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; {</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; <span class="comment">// change to must alias when our analysis support it</span></div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; <span class="keywordflow">if</span> (aliasRes == llvm::AliasResult::NoAlias)</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; expectedFailure = <span class="keyword">true</span>;</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; }</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (fun == <a class="code" href="classSVF_1_1PointerAnalysis.html#a18347e41bc66b16e3f42c7c52811ad42">aliasTestFailNoAlias</a> || fun == <a class="code" href="classSVF_1_1PointerAnalysis.html#aefd4e9ea66da5ad84a45efead823eb22">aliasTestFailNoAliasMangled</a>)</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; {</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; <span class="comment">// change to partial alias when our analysis support it</span></div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; <span class="keywordflow">if</span> (aliasRes == llvm::AliasResult::MayAlias || aliasRes == llvm::AliasResult::PartialAlias || aliasRes == llvm::AliasResult::MustAlias)</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; expectedFailure = <span class="keyword">true</span>;</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; }</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;not supported alias check!!&quot;</span>);</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160;</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> id1 = <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#abffddd41cc308b9b3bd5ad4a7f8f1624">getValueNode</a>(V1);</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> id2 = <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#abffddd41cc308b9b3bd5ad4a7f8f1624">getValueNode</a>(V2);</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160;</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; <span class="keywordflow">if</span> (expectedFailure)</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a6a55f1f8598998a3ffbbc67d32eaf8c4">sucMsg</a>(<span class="stringliteral">&quot;\t EXPECTED-FAILURE :&quot;</span>) &lt;&lt; fun &lt;&lt; <span class="stringliteral">&quot; check &lt;id:&quot;</span> &lt;&lt; id1 &lt;&lt; <span class="stringliteral">&quot;, id:&quot;</span> &lt;&lt; id2 &lt;&lt; <span class="stringliteral">&quot;&gt; at (&quot;</span></div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">getSourceLoc</a>(call) &lt;&lt; <span class="stringliteral">&quot;)\n&quot;</span>;</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; {</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#af0f447732c67402037a86ea29006efc2">SVFUtil::errs</a>() &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a5d4bb92f5df30417f414397f8e58cf01">errMsg</a>(<span class="stringliteral">&quot;\t UNEXPECTED FAILURE :&quot;</span>) &lt;&lt; fun &lt;&lt; <span class="stringliteral">&quot; check &lt;id:&quot;</span> &lt;&lt; id1 &lt;&lt; <span class="stringliteral">&quot;, id:&quot;</span> &lt;&lt; id2 &lt;&lt; <span class="stringliteral">&quot;&gt; at (&quot;</span></div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">getSourceLoc</a>(call) &lt;&lt; <span class="stringliteral">&quot;)\n&quot;</span>;</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;test case failed!&quot;</span>);</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; }</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; }</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;alias check functions not only used at callsite??&quot;</span>);</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; }</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_a43a65e0d33af3c743294f7a1139d2301"><div class="ttname"><a href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00018">MTAResultValidator.h:18</a></div></div>
3043
3041
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a651cc82379c2d18cc2f69f25b2ae08db"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a651cc82379c2d18cc2f69f25b2ae08db">SVF::PointerAnalysis::aliasTestFailMayAliasMangled</a></div><div class="ttdeci">static const std::string aliasTestFailMayAliasMangled</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00126">PointerAnalysis.h:126</a></div></div>
3044
3042
  <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>
3045
3043
  <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="BasicTypes_8h_source.html#l00233">BasicTypes.h:233</a></div></div>
@@ -3087,8 +3085,8 @@ Private Member Functions</h2></td></tr>
3087
3085
  </div><div class="memdoc">
3088
3086
  <p>Find the alias check functions annotated in the C files check whether the alias analysis results consistent with the alias check function itself </p>
3089
3087
 
3090
- <p class="definition">Definition at line <a class="el" href="PointerAnalysis_8cpp_source.html#l00541">541</a> of file <a class="el" href="PointerAnalysis_8cpp_source.html">PointerAnalysis.cpp</a>.</p>
3091
- <div class="fragment"><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160;{</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160;</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; <span class="comment">// check for must alias cases, whether our alias analysis produce the correct results</span></div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* checkFun = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a4f457db1cfa0d4f94762a306c0ac3757">getFunction</a>(fun))</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; {</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; <span class="keywordflow">if</span>(!checkFun-&gt;getLLVMFun()-&gt;use_empty())</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;[&quot;</span> &lt;&lt; this-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#aed4e5066f6ddef83afaf60adbcc11de0">PTAName</a>() &lt;&lt; <span class="stringliteral">&quot;] Checking &quot;</span> &lt;&lt; fun &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160;</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; <span class="keywordflow">for</span> (Value::user_iterator i = checkFun-&gt;getLLVMFun()-&gt;user_begin(), e =</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; checkFun-&gt;getLLVMFun()-&gt;user_end(); i != e; ++i)</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a2e08ce822223842fa6a73fd659b1a526">SVFUtil::isCallSite</a>(*i))</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; {</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160;</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; <a class="code" href="classSVF_1_1CallSite.html">CallSite</a> cs(*i);</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(cs.getNumArgOperands() == 2</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; &amp;&amp; <span class="stringliteral">&quot;arguments should be two pointers!!&quot;</span>);</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* V1 = cs.getArgOperand(0);</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* V2 = cs.getArgOperand(1);</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; <a class="code" href="namespaceSVF.html#ae941b2925716d8ebe14bf190aa8dfd06">AliasResult</a> aliasRes = <a class="code" href="classSVF_1_1PointerAnalysis.html#abd9da46106d820721a24201caaa164e1">alias</a>(V1, V2);</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160;</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; <span class="keywordtype">bool</span> checkSuccessful = <span class="keyword">false</span>;</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; <span class="keywordflow">if</span> (fun == <a class="code" href="classSVF_1_1PointerAnalysis.html#a7648a0358e2c0798db1c547ec7aa7c64">aliasTestMayAlias</a> || fun == <a class="code" href="classSVF_1_1PointerAnalysis.html#a13ce6b930a35877f17bffd4b89e22654">aliasTestMayAliasMangled</a>)</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; {</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; <span class="keywordflow">if</span> (aliasRes == llvm::AliasResult::MayAlias || aliasRes == llvm::AliasResult::MustAlias)</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; checkSuccessful = <span class="keyword">true</span>;</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; }</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (fun == <a class="code" href="classSVF_1_1PointerAnalysis.html#ac353221cc7aced590dcf3550a24b1570">aliasTestNoAlias</a> || fun == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0e68883e2ee328315af29e59bb2008cd">aliasTestNoAliasMangled</a>)</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; {</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; <span class="keywordflow">if</span> (aliasRes == llvm::AliasResult::NoAlias)</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; checkSuccessful = <span class="keyword">true</span>;</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; }</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (fun == <a class="code" href="classSVF_1_1PointerAnalysis.html#a7477a4301d548b93958e57df389cbba0">aliasTestMustAlias</a> || fun == <a class="code" href="classSVF_1_1PointerAnalysis.html#aec884481726cfaf19c4ab8ec8d9195b7">aliasTestMustAliasMangled</a>)</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; {</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; <span class="comment">// change to must alias when our analysis support it</span></div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; <span class="keywordflow">if</span> (aliasRes == llvm::AliasResult::MayAlias || aliasRes == llvm::AliasResult::MustAlias)</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; checkSuccessful = <span class="keyword">true</span>;</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; }</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (fun == <a class="code" href="classSVF_1_1PointerAnalysis.html#a83b0a51d88fa7aadff6e9267765d07a5">aliasTestPartialAlias</a> || fun == <a class="code" href="classSVF_1_1PointerAnalysis.html#acbb517523fd30708ed1a93f306cd3545">aliasTestPartialAliasMangled</a>)</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; {</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; <span class="comment">// change to partial alias when our analysis support it</span></div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; <span class="keywordflow">if</span> (aliasRes == llvm::AliasResult::MayAlias)</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; checkSuccessful = <span class="keyword">true</span>;</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; }</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;not supported alias check!!&quot;</span>);</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160;</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> id1 = <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#abffddd41cc308b9b3bd5ad4a7f8f1624">getValueNode</a>(V1);</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> id2 = <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#abffddd41cc308b9b3bd5ad4a7f8f1624">getValueNode</a>(V2);</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160;</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; <span class="keywordflow">if</span> (checkSuccessful)</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a6a55f1f8598998a3ffbbc67d32eaf8c4">sucMsg</a>(<span class="stringliteral">&quot;\t SUCCESS :&quot;</span>) &lt;&lt; fun &lt;&lt; <span class="stringliteral">&quot; check &lt;id:&quot;</span> &lt;&lt; id1 &lt;&lt; <span class="stringliteral">&quot;, id:&quot;</span> &lt;&lt; id2 &lt;&lt; <span class="stringliteral">&quot;&gt; at (&quot;</span></div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">getSourceLoc</a>(*i) &lt;&lt; <span class="stringliteral">&quot;)\n&quot;</span>;</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; {</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#af0f447732c67402037a86ea29006efc2">SVFUtil::errs</a>() &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a5d4bb92f5df30417f414397f8e58cf01">errMsg</a>(<span class="stringliteral">&quot;\t FAILURE :&quot;</span>) &lt;&lt; fun</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; &lt;&lt; <span class="stringliteral">&quot; check &lt;id:&quot;</span> &lt;&lt; id1 &lt;&lt; <span class="stringliteral">&quot;, id:&quot;</span> &lt;&lt; id2</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; &lt;&lt; <span class="stringliteral">&quot;&gt; at (&quot;</span> &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">getSourceLoc</a>(*i) &lt;&lt; <span class="stringliteral">&quot;)\n&quot;</span>;</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;test case failed!&quot;</span>);</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; }</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; }</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;alias check functions not only used at callsite??&quot;</span>);</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160;</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; }</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160;}</div><div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a2e08ce822223842fa6a73fd659b1a526"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a2e08ce822223842fa6a73fd659b1a526">SVF::SVFUtil::isCallSite</a></div><div class="ttdeci">bool isCallSite(const Instruction *inst)</div><div class="ttdoc">Whether an instruction is a call or invoke instruction. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00193">SVFUtil.h:193</a></div></div>
3088
+ <p class="definition">Definition at line <a class="el" href="PointerAnalysis_8cpp_source.html#l00538">538</a> of file <a class="el" href="PointerAnalysis_8cpp_source.html">PointerAnalysis.cpp</a>.</p>
3089
+ <div class="fragment"><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160;{</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160;</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; <span class="comment">// check for must alias cases, whether our alias analysis produce the correct results</span></div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* checkFun = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a4f457db1cfa0d4f94762a306c0ac3757">getFunction</a>(fun))</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; {</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; <span class="keywordflow">if</span>(!checkFun-&gt;getLLVMFun()-&gt;use_empty())</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;[&quot;</span> &lt;&lt; this-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#aed4e5066f6ddef83afaf60adbcc11de0">PTAName</a>() &lt;&lt; <span class="stringliteral">&quot;] Checking &quot;</span> &lt;&lt; fun &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160;</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; <span class="keywordflow">for</span> (Value::user_iterator i = checkFun-&gt;getLLVMFun()-&gt;user_begin(), e =</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; checkFun-&gt;getLLVMFun()-&gt;user_end(); i != e; ++i)</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a2e08ce822223842fa6a73fd659b1a526">SVFUtil::isCallSite</a>(*i))</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; {</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160;</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; <a class="code" href="classSVF_1_1CallSite.html">CallSite</a> cs(*i);</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(cs.getNumArgOperands() == 2</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; &amp;&amp; <span class="stringliteral">&quot;arguments should be two pointers!!&quot;</span>);</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* V1 = cs.getArgOperand(0);</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* V2 = cs.getArgOperand(1);</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; <a class="code" href="namespaceSVF.html#ae941b2925716d8ebe14bf190aa8dfd06">AliasResult</a> aliasRes = <a class="code" href="classSVF_1_1PointerAnalysis.html#abd9da46106d820721a24201caaa164e1">alias</a>(V1, V2);</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160;</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; <span class="keywordtype">bool</span> checkSuccessful = <span class="keyword">false</span>;</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; <span class="keywordflow">if</span> (fun == <a class="code" href="classSVF_1_1PointerAnalysis.html#a7648a0358e2c0798db1c547ec7aa7c64">aliasTestMayAlias</a> || fun == <a class="code" href="classSVF_1_1PointerAnalysis.html#a13ce6b930a35877f17bffd4b89e22654">aliasTestMayAliasMangled</a>)</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; {</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; <span class="keywordflow">if</span> (aliasRes == llvm::AliasResult::MayAlias || aliasRes == llvm::AliasResult::MustAlias)</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; checkSuccessful = <span class="keyword">true</span>;</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; }</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (fun == <a class="code" href="classSVF_1_1PointerAnalysis.html#ac353221cc7aced590dcf3550a24b1570">aliasTestNoAlias</a> || fun == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0e68883e2ee328315af29e59bb2008cd">aliasTestNoAliasMangled</a>)</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; {</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; <span class="keywordflow">if</span> (aliasRes == llvm::AliasResult::NoAlias)</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; checkSuccessful = <span class="keyword">true</span>;</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; }</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (fun == <a class="code" href="classSVF_1_1PointerAnalysis.html#a7477a4301d548b93958e57df389cbba0">aliasTestMustAlias</a> || fun == <a class="code" href="classSVF_1_1PointerAnalysis.html#aec884481726cfaf19c4ab8ec8d9195b7">aliasTestMustAliasMangled</a>)</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; {</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; <span class="comment">// change to must alias when our analysis support it</span></div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; <span class="keywordflow">if</span> (aliasRes == llvm::AliasResult::MayAlias || aliasRes == llvm::AliasResult::MustAlias)</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; checkSuccessful = <span class="keyword">true</span>;</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; }</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (fun == <a class="code" href="classSVF_1_1PointerAnalysis.html#a83b0a51d88fa7aadff6e9267765d07a5">aliasTestPartialAlias</a> || fun == <a class="code" href="classSVF_1_1PointerAnalysis.html#acbb517523fd30708ed1a93f306cd3545">aliasTestPartialAliasMangled</a>)</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; {</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; <span class="comment">// change to partial alias when our analysis support it</span></div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; <span class="keywordflow">if</span> (aliasRes == llvm::AliasResult::MayAlias)</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; checkSuccessful = <span class="keyword">true</span>;</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; }</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;not supported alias check!!&quot;</span>);</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160;</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> id1 = <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#abffddd41cc308b9b3bd5ad4a7f8f1624">getValueNode</a>(V1);</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> id2 = <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#abffddd41cc308b9b3bd5ad4a7f8f1624">getValueNode</a>(V2);</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160;</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; <span class="keywordflow">if</span> (checkSuccessful)</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a6a55f1f8598998a3ffbbc67d32eaf8c4">sucMsg</a>(<span class="stringliteral">&quot;\t SUCCESS :&quot;</span>) &lt;&lt; fun &lt;&lt; <span class="stringliteral">&quot; check &lt;id:&quot;</span> &lt;&lt; id1 &lt;&lt; <span class="stringliteral">&quot;, id:&quot;</span> &lt;&lt; id2 &lt;&lt; <span class="stringliteral">&quot;&gt; at (&quot;</span></div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">getSourceLoc</a>(*i) &lt;&lt; <span class="stringliteral">&quot;)\n&quot;</span>;</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; {</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#af0f447732c67402037a86ea29006efc2">SVFUtil::errs</a>() &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a5d4bb92f5df30417f414397f8e58cf01">errMsg</a>(<span class="stringliteral">&quot;\t FAILURE :&quot;</span>) &lt;&lt; fun</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; &lt;&lt; <span class="stringliteral">&quot; check &lt;id:&quot;</span> &lt;&lt; id1 &lt;&lt; <span class="stringliteral">&quot;, id:&quot;</span> &lt;&lt; id2</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; &lt;&lt; <span class="stringliteral">&quot;&gt; at (&quot;</span> &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">getSourceLoc</a>(*i) &lt;&lt; <span class="stringliteral">&quot;)\n&quot;</span>;</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;test case failed!&quot;</span>);</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; }</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; }</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;alias check functions not only used at callsite??&quot;</span>);</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160;</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; }</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160;}</div><div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a2e08ce822223842fa6a73fd659b1a526"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a2e08ce822223842fa6a73fd659b1a526">SVF::SVFUtil::isCallSite</a></div><div class="ttdeci">bool isCallSite(const Instruction *inst)</div><div class="ttdoc">Whether an instruction is a call or invoke instruction. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00193">SVFUtil.h:193</a></div></div>
3092
3090
  <div class="ttc" id="namespaceSVF_html_a43a65e0d33af3c743294f7a1139d2301"><div class="ttname"><a href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00018">MTAResultValidator.h:18</a></div></div>
3093
3091
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_ac353221cc7aced590dcf3550a24b1570"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#ac353221cc7aced590dcf3550a24b1570">SVF::PointerAnalysis::aliasTestNoAlias</a></div><div class="ttdeci">static const std::string aliasTestNoAlias</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00119">PointerAnalysis.h:119</a></div></div>
3094
3092
  <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>
@@ -3142,12 +3140,12 @@ Private Member Functions</h2></td></tr>
3142
3140
  <p>Alias check functions to verify correctness of pointer analysis. </p>
3143
3141
  <p>Validate test cases </p>
3144
3142
 
3145
- <p class="definition">Definition at line <a class="el" href="PointerAnalysis_8cpp_source.html#l00245">245</a> of file <a class="el" href="PointerAnalysis_8cpp_source.html">PointerAnalysis.cpp</a>.</p>
3146
- <div class="fragment"><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160;{</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a7accf4e4db4001716e53d98ce5217ac8">validateSuccessTests</a>(<a class="code" href="classSVF_1_1PointerAnalysis.html#a7648a0358e2c0798db1c547ec7aa7c64">aliasTestMayAlias</a>);</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a7accf4e4db4001716e53d98ce5217ac8">validateSuccessTests</a>(<a class="code" href="classSVF_1_1PointerAnalysis.html#ac353221cc7aced590dcf3550a24b1570">aliasTestNoAlias</a>);</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a7accf4e4db4001716e53d98ce5217ac8">validateSuccessTests</a>(<a class="code" href="classSVF_1_1PointerAnalysis.html#a7477a4301d548b93958e57df389cbba0">aliasTestMustAlias</a>);</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a7accf4e4db4001716e53d98ce5217ac8">validateSuccessTests</a>(<a class="code" href="classSVF_1_1PointerAnalysis.html#a83b0a51d88fa7aadff6e9267765d07a5">aliasTestPartialAlias</a>);</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#ab982e6bbd99a2f9a0a3abbebeeb00dcc">validateExpectedFailureTests</a>(<a class="code" href="classSVF_1_1PointerAnalysis.html#a32c6f12ce8bc0554dbb6aafa36f9a235">aliasTestFailMayAlias</a>);</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#ab982e6bbd99a2f9a0a3abbebeeb00dcc">validateExpectedFailureTests</a>(<a class="code" href="classSVF_1_1PointerAnalysis.html#a18347e41bc66b16e3f42c7c52811ad42">aliasTestFailNoAlias</a>);</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160;</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a7accf4e4db4001716e53d98ce5217ac8">validateSuccessTests</a>(<a class="code" href="classSVF_1_1PointerAnalysis.html#a13ce6b930a35877f17bffd4b89e22654">aliasTestMayAliasMangled</a>);</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a7accf4e4db4001716e53d98ce5217ac8">validateSuccessTests</a>(<a class="code" href="classSVF_1_1PointerAnalysis.html#a0e68883e2ee328315af29e59bb2008cd">aliasTestNoAliasMangled</a>);</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a7accf4e4db4001716e53d98ce5217ac8">validateSuccessTests</a>(<a class="code" href="classSVF_1_1PointerAnalysis.html#aec884481726cfaf19c4ab8ec8d9195b7">aliasTestMustAliasMangled</a>);</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a7accf4e4db4001716e53d98ce5217ac8">validateSuccessTests</a>(<a class="code" href="classSVF_1_1PointerAnalysis.html#acbb517523fd30708ed1a93f306cd3545">aliasTestPartialAliasMangled</a>);</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#ab982e6bbd99a2f9a0a3abbebeeb00dcc">validateExpectedFailureTests</a>(<a class="code" href="classSVF_1_1PointerAnalysis.html#a651cc82379c2d18cc2f69f25b2ae08db">aliasTestFailMayAliasMangled</a>);</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#ab982e6bbd99a2f9a0a3abbebeeb00dcc">validateExpectedFailureTests</a>(<a class="code" href="classSVF_1_1PointerAnalysis.html#aefd4e9ea66da5ad84a45efead823eb22">aliasTestFailNoAliasMangled</a>);</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160;}</div><div class="ttc" id="classSVF_1_1PointerAnalysis_html_ab982e6bbd99a2f9a0a3abbebeeb00dcc"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#ab982e6bbd99a2f9a0a3abbebeeb00dcc">SVF::PointerAnalysis::validateExpectedFailureTests</a></div><div class="ttdeci">virtual void validateExpectedFailureTests(std::string fun)</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8cpp_source.html#l00611">PointerAnalysis.cpp:611</a></div></div>
3143
+ <p class="definition">Definition at line <a class="el" href="PointerAnalysis_8cpp_source.html#l00242">242</a> of file <a class="el" href="PointerAnalysis_8cpp_source.html">PointerAnalysis.cpp</a>.</p>
3144
+ <div class="fragment"><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160;{</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a7accf4e4db4001716e53d98ce5217ac8">validateSuccessTests</a>(<a class="code" href="classSVF_1_1PointerAnalysis.html#a7648a0358e2c0798db1c547ec7aa7c64">aliasTestMayAlias</a>);</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a7accf4e4db4001716e53d98ce5217ac8">validateSuccessTests</a>(<a class="code" href="classSVF_1_1PointerAnalysis.html#ac353221cc7aced590dcf3550a24b1570">aliasTestNoAlias</a>);</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a7accf4e4db4001716e53d98ce5217ac8">validateSuccessTests</a>(<a class="code" href="classSVF_1_1PointerAnalysis.html#a7477a4301d548b93958e57df389cbba0">aliasTestMustAlias</a>);</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a7accf4e4db4001716e53d98ce5217ac8">validateSuccessTests</a>(<a class="code" href="classSVF_1_1PointerAnalysis.html#a83b0a51d88fa7aadff6e9267765d07a5">aliasTestPartialAlias</a>);</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#ab982e6bbd99a2f9a0a3abbebeeb00dcc">validateExpectedFailureTests</a>(<a class="code" href="classSVF_1_1PointerAnalysis.html#a32c6f12ce8bc0554dbb6aafa36f9a235">aliasTestFailMayAlias</a>);</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#ab982e6bbd99a2f9a0a3abbebeeb00dcc">validateExpectedFailureTests</a>(<a class="code" href="classSVF_1_1PointerAnalysis.html#a18347e41bc66b16e3f42c7c52811ad42">aliasTestFailNoAlias</a>);</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a7accf4e4db4001716e53d98ce5217ac8">validateSuccessTests</a>(<a class="code" href="classSVF_1_1PointerAnalysis.html#a13ce6b930a35877f17bffd4b89e22654">aliasTestMayAliasMangled</a>);</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a7accf4e4db4001716e53d98ce5217ac8">validateSuccessTests</a>(<a class="code" href="classSVF_1_1PointerAnalysis.html#a0e68883e2ee328315af29e59bb2008cd">aliasTestNoAliasMangled</a>);</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a7accf4e4db4001716e53d98ce5217ac8">validateSuccessTests</a>(<a class="code" href="classSVF_1_1PointerAnalysis.html#aec884481726cfaf19c4ab8ec8d9195b7">aliasTestMustAliasMangled</a>);</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a7accf4e4db4001716e53d98ce5217ac8">validateSuccessTests</a>(<a class="code" href="classSVF_1_1PointerAnalysis.html#acbb517523fd30708ed1a93f306cd3545">aliasTestPartialAliasMangled</a>);</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#ab982e6bbd99a2f9a0a3abbebeeb00dcc">validateExpectedFailureTests</a>(<a class="code" href="classSVF_1_1PointerAnalysis.html#a651cc82379c2d18cc2f69f25b2ae08db">aliasTestFailMayAliasMangled</a>);</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#ab982e6bbd99a2f9a0a3abbebeeb00dcc">validateExpectedFailureTests</a>(<a class="code" href="classSVF_1_1PointerAnalysis.html#aefd4e9ea66da5ad84a45efead823eb22">aliasTestFailNoAliasMangled</a>);</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;}</div><div class="ttc" id="classSVF_1_1PointerAnalysis_html_ab982e6bbd99a2f9a0a3abbebeeb00dcc"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#ab982e6bbd99a2f9a0a3abbebeeb00dcc">SVF::PointerAnalysis::validateExpectedFailureTests</a></div><div class="ttdeci">virtual void validateExpectedFailureTests(std::string fun)</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8cpp_source.html#l00608">PointerAnalysis.cpp:608</a></div></div>
3147
3145
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a651cc82379c2d18cc2f69f25b2ae08db"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a651cc82379c2d18cc2f69f25b2ae08db">SVF::PointerAnalysis::aliasTestFailMayAliasMangled</a></div><div class="ttdeci">static const std::string aliasTestFailMayAliasMangled</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00126">PointerAnalysis.h:126</a></div></div>
3148
3146
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_ac353221cc7aced590dcf3550a24b1570"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#ac353221cc7aced590dcf3550a24b1570">SVF::PointerAnalysis::aliasTestNoAlias</a></div><div class="ttdeci">static const std::string aliasTestNoAlias</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00119">PointerAnalysis.h:119</a></div></div>
3149
3147
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a13ce6b930a35877f17bffd4b89e22654"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a13ce6b930a35877f17bffd4b89e22654">SVF::PointerAnalysis::aliasTestMayAliasMangled</a></div><div class="ttdeci">static const std::string aliasTestMayAliasMangled</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00118">PointerAnalysis.h:118</a></div></div>
3150
- <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a7accf4e4db4001716e53d98ce5217ac8"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a7accf4e4db4001716e53d98ce5217ac8">SVF::PointerAnalysis::validateSuccessTests</a></div><div class="ttdeci">virtual void validateSuccessTests(std::string fun)</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8cpp_source.html#l00541">PointerAnalysis.cpp:541</a></div></div>
3148
+ <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a7accf4e4db4001716e53d98ce5217ac8"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a7accf4e4db4001716e53d98ce5217ac8">SVF::PointerAnalysis::validateSuccessTests</a></div><div class="ttdeci">virtual void validateSuccessTests(std::string fun)</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8cpp_source.html#l00538">PointerAnalysis.cpp:538</a></div></div>
3151
3149
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a18347e41bc66b16e3f42c7c52811ad42"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a18347e41bc66b16e3f42c7c52811ad42">SVF::PointerAnalysis::aliasTestFailNoAlias</a></div><div class="ttdeci">static const std::string aliasTestFailNoAlias</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00127">PointerAnalysis.h:127</a></div></div>
3152
3150
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_aec884481726cfaf19c4ab8ec8d9195b7"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#aec884481726cfaf19c4ab8ec8d9195b7">SVF::PointerAnalysis::aliasTestMustAliasMangled</a></div><div class="ttdeci">static const std::string aliasTestMustAliasMangled</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00124">PointerAnalysis.h:124</a></div></div>
3153
3151
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a0e68883e2ee328315af29e59bb2008cd"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0e68883e2ee328315af29e59bb2008cd">SVF::PointerAnalysis::aliasTestNoAliasMangled</a></div><div class="ttdeci">static const std::string aliasTestNoAliasMangled</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00120">PointerAnalysis.h:120</a></div></div>