svf-tools 1.0.474 → 1.0.475

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 (198) hide show
  1. package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +1 -1
  2. package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +8 -7
  3. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +2 -2
  4. package/SVF-doxygen/html/html/Andersen_8h_source.html +1 -1
  5. package/SVF-doxygen/html/html/CFLAlias_8h_source.html +2 -2
  6. package/SVF-doxygen/html/html/CHGBuilder_8cpp.html +2 -2
  7. package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +20 -19
  8. package/SVF-doxygen/html/html/CHGBuilder_8h_source.html +15 -15
  9. package/SVF-doxygen/html/html/CPPUtil_8cpp_source.html +2 -2
  10. package/SVF-doxygen/html/html/Casting_8h_source.html +1 -1
  11. package/SVF-doxygen/html/html/ConsG_8h_source.html +1 -1
  12. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +2 -2
  13. package/SVF-doxygen/html/html/ContextDDA_8h_source.html +1 -1
  14. package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +1 -1
  15. package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +1 -1
  16. package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +1 -1
  17. package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +4 -4
  18. package/SVF-doxygen/html/html/ExeState_8cpp_source.html +3 -3
  19. package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +1 -1
  20. package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +1 -1
  21. package/SVF-doxygen/html/html/FlowDDA_8h_source.html +2 -2
  22. package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +11 -10
  23. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +1 -1
  24. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +1 -1
  25. package/SVF-doxygen/html/html/Graph2Json_8cpp_source.html +1 -1
  26. package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +11 -10
  27. package/SVF-doxygen/html/html/ICFGBuilder_8h_source.html +7 -7
  28. package/SVF-doxygen/html/html/ICFG_8cpp_source.html +2 -2
  29. package/SVF-doxygen/html/html/IRGraph_8h_source.html +3 -3
  30. package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +24 -24
  31. package/SVF-doxygen/html/html/LLVMUtil_8h.html +111 -111
  32. package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +41 -40
  33. package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +11 -10
  34. package/SVF-doxygen/html/html/LeakChecker_8h_source.html +8 -8
  35. package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +14 -13
  36. package/SVF-doxygen/html/html/LocationSet_8h_source.html +9 -9
  37. package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +31 -30
  38. package/SVF-doxygen/html/html/LockAnalysis_8h_source.html +23 -23
  39. package/SVF-doxygen/html/html/MHP_8h_source.html +2 -2
  40. package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +1 -1
  41. package/SVF-doxygen/html/html/MTA_8cpp_source.html +2 -2
  42. package/SVF-doxygen/html/html/MemPartition_8cpp_source.html +1 -1
  43. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +35 -34
  44. package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +28 -27
  45. package/SVF-doxygen/html/html/MemSSA_8h_source.html +19 -19
  46. package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +14 -14
  47. package/SVF-doxygen/html/html/PathCondAllocator_8cpp_source.html +26 -25
  48. package/SVF-doxygen/html/html/PathCondAllocator_8h_source.html +22 -22
  49. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +5 -5
  50. package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +2 -2
  51. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +27 -26
  52. package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +24 -24
  53. package/SVF-doxygen/html/html/ProgSlice_8h_source.html +3 -3
  54. package/SVF-doxygen/html/html/SVFBasicTypes_8h_source.html +1 -1
  55. package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +3 -3
  56. package/SVF-doxygen/html/html/SVFGStat_8cpp_source.html +7 -7
  57. package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +17 -16
  58. package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +37 -37
  59. package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +6 -6
  60. package/SVF-doxygen/html/html/SVFIR_8h_source.html +3 -3
  61. package/SVF-doxygen/html/html/SVFModule_8cpp_source.html +2 -2
  62. package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +1 -1
  63. package/SVF-doxygen/html/html/SVFVariables_8h_source.html +3 -3
  64. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +2 -2
  65. package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +1 -1
  66. package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +40 -39
  67. package/SVF-doxygen/html/html/SymbolTableBuilder_8h_source.html +16 -16
  68. package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +58 -57
  69. package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +24 -24
  70. package/SVF-doxygen/html/html/TCT_8h_source.html +2 -2
  71. package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +1 -1
  72. package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +1 -1
  73. package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +1 -1
  74. package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +2 -2
  75. package/SVF-doxygen/html/html/WPAStat_8h_source.html +5 -5
  76. package/SVF-doxygen/html/html/cfl_8cpp.html +3 -3
  77. package/SVF-doxygen/html/html/cfl_8cpp_source.html +3 -3
  78. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +3 -3
  79. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +1 -1
  80. package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +14 -14
  81. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +6 -6
  82. package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +2 -2
  83. package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.html +3 -3
  84. package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +48 -48
  85. package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +4 -4
  86. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +3 -3
  87. package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +4 -4
  88. package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +1 -1
  89. package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +1 -1
  90. package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG.html +2 -2
  91. package/SVF-doxygen/html/html/classSVF_1_1ExeState.html +3 -3
  92. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +1 -1
  93. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +3 -3
  94. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +4 -4
  95. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +23 -23
  96. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +1 -1
  97. package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +2 -2
  98. package/SVF-doxygen/html/html/classSVF_1_1FunExitICFGNode.html +4 -4
  99. package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient.html +1 -1
  100. package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +3 -3
  101. package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +2 -2
  102. package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +23 -23
  103. package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter.html +1 -1
  104. package/SVF-doxygen/html/html/classSVF_1_1IRGraph.html +3 -3
  105. package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG.html +2 -2
  106. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +22 -22
  107. package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +28 -28
  108. package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +78 -78
  109. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +100 -100
  110. package/SVF-doxygen/html/html/classSVF_1_1MTA.html +2 -2
  111. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +1 -1
  112. package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +4 -4
  113. package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +54 -54
  114. package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +56 -56
  115. package/SVF-doxygen/html/html/classSVF_1_1MemSSAStat.html +7 -7
  116. package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo.html +8 -8
  117. package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +1 -1
  118. package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +15 -15
  119. package/SVF-doxygen/html/html/classSVF_1_1PathCondAllocator.html +71 -71
  120. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +59 -59
  121. package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +3 -3
  122. package/SVF-doxygen/html/html/classSVF_1_1RaceValidator.html +7 -7
  123. package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +3 -3
  124. package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +9 -9
  125. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +148 -148
  126. package/SVF-doxygen/html/html/classSVF_1_1SVFModule.html +1 -1
  127. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +2 -2
  128. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +2 -2
  129. package/SVF-doxygen/html/html/classSVF_1_1StInfo.html +4 -4
  130. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +88 -88
  131. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +65 -65
  132. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +1 -1
  133. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +2 -2
  134. package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +1 -1
  135. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +1 -1
  136. package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +4 -4
  137. package/SVF-doxygen/html/html/dda_8cpp.html +2 -2
  138. package/SVF-doxygen/html/html/dda_8cpp_source.html +2 -2
  139. package/SVF-doxygen/html/html/mta_8cpp.html +2 -2
  140. package/SVF-doxygen/html/html/mta_8cpp_source.html +2 -2
  141. package/SVF-doxygen/html/html/namespaceSVF.html +4 -2
  142. package/SVF-doxygen/html/html/namespaceSVF_1_1LLVMUtil.html +1452 -0
  143. package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +41 -1409
  144. package/SVF-doxygen/html/html/namespaceSVF_1_1cppUtil.html +4 -4
  145. package/SVF-doxygen/html/html/namespacemembers.html +3 -3
  146. package/SVF-doxygen/html/html/namespacemembers_f.html +1 -1
  147. package/SVF-doxygen/html/html/namespacemembers_func.html +39 -39
  148. package/SVF-doxygen/html/html/namespacemembers_g.html +14 -14
  149. package/SVF-doxygen/html/html/namespacemembers_i.html +18 -18
  150. package/SVF-doxygen/html/html/namespacemembers_p.html +1 -1
  151. package/SVF-doxygen/html/html/namespacemembers_s.html +2 -2
  152. package/SVF-doxygen/html/html/namespaces.html +2 -1
  153. package/SVF-doxygen/html/html/saber_8cpp.html +2 -2
  154. package/SVF-doxygen/html/html/saber_8cpp_source.html +2 -2
  155. package/SVF-doxygen/html/html/search/all_1.js +3 -3
  156. package/SVF-doxygen/html/html/search/all_10.js +1 -1
  157. package/SVF-doxygen/html/html/search/all_13.js +3 -2
  158. package/SVF-doxygen/html/html/search/all_6.js +1 -1
  159. package/SVF-doxygen/html/html/search/all_7.js +14 -14
  160. package/SVF-doxygen/html/html/search/all_9.js +18 -18
  161. package/SVF-doxygen/html/html/search/functions_0.js +3 -3
  162. package/SVF-doxygen/html/html/search/functions_11.js +2 -2
  163. package/SVF-doxygen/html/html/search/functions_5.js +1 -1
  164. package/SVF-doxygen/html/html/search/functions_6.js +14 -14
  165. package/SVF-doxygen/html/html/search/functions_8.js +18 -18
  166. package/SVF-doxygen/html/html/search/functions_f.js +1 -1
  167. package/SVF-doxygen/html/html/search/namespaces_1.js +1 -0
  168. package/SVF-doxygen/html/html/svf-ex_8cpp.html +3 -3
  169. package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +3 -3
  170. package/SVF-doxygen/html/html/wpa_8cpp.html +2 -2
  171. package/SVF-doxygen/html/html/wpa_8cpp_source.html +2 -2
  172. package/include/MTA/MHP.h +1 -1
  173. package/include/SVF-FE/LLVMUtil.h +7 -7
  174. package/lib/Graphs/ICFG.cpp +2 -2
  175. package/lib/MSSA/MemRegion.cpp +1 -0
  176. package/lib/MSSA/MemSSA.cpp +1 -0
  177. package/lib/MTA/LockAnalysis.cpp +1 -0
  178. package/lib/MemoryModel/LocationSet.cpp +1 -0
  179. package/lib/MemoryModel/PointerAnalysis.cpp +1 -0
  180. package/lib/MemoryModel/SVFIR.cpp +1 -1
  181. package/lib/MemoryModel/SymbolTableInfo.cpp +1 -0
  182. package/lib/SABER/LeakChecker.cpp +1 -0
  183. package/lib/SABER/PathCondAllocator.cpp +1 -0
  184. package/lib/SVF-FE/CHGBuilder.cpp +1 -0
  185. package/lib/SVF-FE/CPPUtil.cpp +2 -2
  186. package/lib/SVF-FE/ICFGBuilder.cpp +1 -0
  187. package/lib/SVF-FE/LLVMUtil.cpp +32 -32
  188. package/lib/SVF-FE/SVFIRBuilder.cpp +2 -1
  189. package/lib/SVF-FE/SymbolTableBuilder.cpp +8 -7
  190. package/lib/WPA/AndersenStat.cpp +1 -0
  191. package/lib/WPA/FlowSensitiveStat.cpp +1 -0
  192. package/package.json +1 -1
  193. package/tools/CFL/cfl.cpp +1 -1
  194. package/tools/DDA/dda.cpp +1 -1
  195. package/tools/Example/svf-ex.cpp +1 -1
  196. package/tools/MTA/mta.cpp +1 -1
  197. package/tools/SABER/saber.cpp +1 -1
  198. package/tools/WPA/wpa.cpp +1 -1
@@ -610,8 +610,8 @@ Additional Inherited Members</h2></td></tr>
610
610
 
611
611
  <p>Implements <a class="el" href="classSVF_1_1SrcSnkDDA.html#a0f6cfa30c346aab1fb03a44e47c32559">SVF::SrcSnkDDA</a>.</p>
612
612
 
613
- <p class="definition">Definition at line <a class="el" href="LeakChecker_8cpp_source.html#l00107">107</a> of file <a class="el" href="LeakChecker_8cpp_source.html">LeakChecker.cpp</a>.</p>
614
- <div class="fragment"><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;{</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* pag = <a class="code" href="classSVF_1_1SrcSnkDDA.html#a4f37c66db2588cd691353a9ad1a4d5b1">getPAG</a>();</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keywordflow">for</span>(SVFIR::CSToArgsListMap::iterator it = pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a346b9300ad16ef65e3ab4e11f88193a7">getCallSiteArgsMap</a>().begin(),</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; eit = pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a346b9300ad16ef65e3ab4e11f88193a7">getCallSiteArgsMap</a>().end(); it!=eit; ++it)</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; {</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <a class="code" href="classSVF_1_1PTACallGraph.html#a5f5a5ec7e707a21994d301cc07d32a5a">PTACallGraph::FunctionSet</a> callees;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <a class="code" href="classSVF_1_1SrcSnkDDA.html#ad445032e9b2027b3c990ce2a250257f8">getCallgraph</a>()-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#a317e09edb29b110cf4273009551d31ec">getCallees</a>(it-&gt;first,callees);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordflow">for</span>(PTACallGraph::FunctionSet::const_iterator cit = callees.begin(), ecit = callees.end(); cit!=ecit; cit++)</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; {</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun = *cit;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1LeakChecker.html#aa45d35a0dc5162e8cef8b27b92ff243d">isSinkLikeFun</a>(fun))</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; {</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html#a64939d7ecfd8e2cf862782954a56596b">SVFIR::SVFVarList</a> &amp;arglist = it-&gt;second;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(!arglist.empty() &amp;&amp; <span class="stringliteral">&quot;no actual parameter at deallocation site?&quot;</span>);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keywordflow">for</span> (SVFIR::SVFVarList::const_iterator ait = arglist.begin(),</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; aeit = arglist.end(); ait != aeit; ++ait)</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; {</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a> *pagNode = *ait;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keywordflow">if</span> (pagNode-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a3b61042079a6c9dc395f38925c6a1271">isPointer</a>())</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; {</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a> *snk = <a class="code" href="classSVF_1_1SrcSnkDDA.html#a529b40c870c74309440f025e490bb161">getSVFG</a>()-&gt;<a class="code" href="classSVF_1_1VFG.html#a6bbfe457dcc7104e6928323499ea964e">getActualParmVFGNode</a>(pagNode, it-&gt;first);</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <a class="code" href="classSVF_1_1SrcSnkDDA.html#a9c276e24d13cd1e8e5fbad10b46047f8">addToSinks</a>(snk);</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="comment">// For any multi-level pointer e.g., XFree(void** pagNode) that passed into a ExtAPI::EFT_FREE_MULTILEVEL function (e.g., XFree),</span></div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="comment">// we will add the DstNode of a load edge, i.e., dummy = *pagNode</span></div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; loads = <span class="keyword">const_cast&lt;</span><a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>*<span class="keyword">&gt;</span>(pagNode)-&gt;getOutgoingEdges(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a62ac8480c43fcc657c631ec0003b15d5">SVFStmt::Load</a>);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>* ld : loads)</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; {</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;DummyValVar&gt;(ld-&gt;getDstNode()))</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <a class="code" href="classSVF_1_1SrcSnkDDA.html#a9c276e24d13cd1e8e5fbad10b46047f8">addToSinks</a>(<a class="code" href="classSVF_1_1SrcSnkDDA.html#a529b40c870c74309440f025e490bb161">getSVFG</a>()-&gt;getStmtVFGNode(ld));</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; }</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; }</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; }</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; }</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; }</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; }</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFIR_html_a64939d7ecfd8e2cf862782954a56596b"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a64939d7ecfd8e2cf862782954a56596b">SVF::SVFIR::SVFVarList</a></div><div class="ttdeci">std::vector&lt; const SVFVar * &gt; SVFVarList</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00057">SVFIR.h:57</a></div></div>
613
+ <p class="definition">Definition at line <a class="el" href="LeakChecker_8cpp_source.html#l00108">108</a> of file <a class="el" href="LeakChecker_8cpp_source.html">LeakChecker.cpp</a>.</p>
614
+ <div class="fragment"><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;{</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* pag = <a class="code" href="classSVF_1_1SrcSnkDDA.html#a4f37c66db2588cd691353a9ad1a4d5b1">getPAG</a>();</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keywordflow">for</span>(SVFIR::CSToArgsListMap::iterator it = pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a346b9300ad16ef65e3ab4e11f88193a7">getCallSiteArgsMap</a>().begin(),</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; eit = pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a346b9300ad16ef65e3ab4e11f88193a7">getCallSiteArgsMap</a>().end(); it!=eit; ++it)</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; {</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <a class="code" href="classSVF_1_1PTACallGraph.html#a5f5a5ec7e707a21994d301cc07d32a5a">PTACallGraph::FunctionSet</a> callees;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <a class="code" href="classSVF_1_1SrcSnkDDA.html#ad445032e9b2027b3c990ce2a250257f8">getCallgraph</a>()-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#a317e09edb29b110cf4273009551d31ec">getCallees</a>(it-&gt;first,callees);</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordflow">for</span>(PTACallGraph::FunctionSet::const_iterator cit = callees.begin(), ecit = callees.end(); cit!=ecit; cit++)</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; {</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun = *cit;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1LeakChecker.html#aa45d35a0dc5162e8cef8b27b92ff243d">isSinkLikeFun</a>(fun))</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; {</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html#a64939d7ecfd8e2cf862782954a56596b">SVFIR::SVFVarList</a> &amp;arglist = it-&gt;second;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(!arglist.empty() &amp;&amp; <span class="stringliteral">&quot;no actual parameter at deallocation site?&quot;</span>);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keywordflow">for</span> (SVFIR::SVFVarList::const_iterator ait = arglist.begin(),</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; aeit = arglist.end(); ait != aeit; ++ait)</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; {</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a> *pagNode = *ait;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keywordflow">if</span> (pagNode-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a3b61042079a6c9dc395f38925c6a1271">isPointer</a>())</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; {</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a> *snk = <a class="code" href="classSVF_1_1SrcSnkDDA.html#a529b40c870c74309440f025e490bb161">getSVFG</a>()-&gt;<a class="code" href="classSVF_1_1VFG.html#a6bbfe457dcc7104e6928323499ea964e">getActualParmVFGNode</a>(pagNode, it-&gt;first);</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <a class="code" href="classSVF_1_1SrcSnkDDA.html#a9c276e24d13cd1e8e5fbad10b46047f8">addToSinks</a>(snk);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="comment">// For any multi-level pointer e.g., XFree(void** pagNode) that passed into a ExtAPI::EFT_FREE_MULTILEVEL function (e.g., XFree),</span></div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="comment">// we will add the DstNode of a load edge, i.e., dummy = *pagNode</span></div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; loads = <span class="keyword">const_cast&lt;</span><a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>*<span class="keyword">&gt;</span>(pagNode)-&gt;getOutgoingEdges(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a62ac8480c43fcc657c631ec0003b15d5">SVFStmt::Load</a>);</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>* ld : loads)</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; {</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;DummyValVar&gt;(ld-&gt;getDstNode()))</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <a class="code" href="classSVF_1_1SrcSnkDDA.html#a9c276e24d13cd1e8e5fbad10b46047f8">addToSinks</a>(<a class="code" href="classSVF_1_1SrcSnkDDA.html#a529b40c870c74309440f025e490bb161">getSVFG</a>()-&gt;getStmtVFGNode(ld));</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; }</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; }</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; }</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; }</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; }</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; }</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFIR_html_a64939d7ecfd8e2cf862782954a56596b"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a64939d7ecfd8e2cf862782954a56596b">SVF::SVFIR::SVFVarList</a></div><div class="ttdeci">std::vector&lt; const SVFVar * &gt; SVFVarList</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00057">SVFIR.h:57</a></div></div>
615
615
  <div class="ttc" id="classSVF_1_1SVFStmt_html_a0ab8621e75e75f03425c323b3ed62ce9a62ac8480c43fcc657c631ec0003b15d5"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a62ac8480c43fcc657c631ec0003b15d5">SVF::SVFStmt::Load</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00056">SVFStatements.h:56</a></div></div>
616
616
  <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>
617
617
  <div class="ttc" id="classSVF_1_1PTACallGraph_html_a5f5a5ec7e707a21994d301cc07d32a5a"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#a5f5a5ec7e707a21994d301cc07d32a5a">SVF::PTACallGraph::FunctionSet</a></div><div class="ttdeci">Set&lt; const SVFFunction * &gt; FunctionSet</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00228">PTACallGraph.h:228</a></div></div>
@@ -663,8 +663,8 @@ Additional Inherited Members</h2></td></tr>
663
663
 
664
664
  <p>Implements <a class="el" href="classSVF_1_1SrcSnkDDA.html#a1c8f91ffa0b9f01d51c8cd5e14f076d5">SVF::SrcSnkDDA</a>.</p>
665
665
 
666
- <p class="definition">Definition at line <a class="el" href="LeakChecker_8cpp_source.html#l00041">41</a> of file <a class="el" href="LeakChecker_8cpp_source.html">LeakChecker.cpp</a>.</p>
667
- <div class="fragment"><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;{</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* pag = <a class="code" href="classSVF_1_1SrcSnkDDA.html#a4f37c66db2588cd691353a9ad1a4d5b1">getPAG</a>();</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <a class="code" href="classSVF_1_1ICFG.html">ICFG</a>* icfg = pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>();</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordflow">for</span>(SVFIR::CSToRetMap::iterator it = pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a650b3931af337a92ffcb5dad5ab47b22">getCallSiteRets</a>().begin(),</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; eit = pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a650b3931af337a92ffcb5dad5ab47b22">getCallSiteRets</a>().end(); it!=eit; ++it)</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1RetICFGNode.html">RetICFGNode</a>* cs = it-&gt;first;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a4dcfe3e66a16813350ec8dffd47c5644">isPtrInDeadFunction</a>(cs-&gt;<a class="code" href="classSVF_1_1RetICFGNode.html#a8f0490ea9491afdf81641e9928f5a5f7">getCallSite</a>()) || !cs-&gt;<a class="code" href="classSVF_1_1RetICFGNode.html#a8f0490ea9491afdf81641e9928f5a5f7">getCallSite</a>()-&gt;getType()-&gt;isPointerTy())</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <a class="code" href="classSVF_1_1PTACallGraph.html#a5f5a5ec7e707a21994d301cc07d32a5a">PTACallGraph::FunctionSet</a> callees;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <a class="code" href="classSVF_1_1SrcSnkDDA.html#ad445032e9b2027b3c990ce2a250257f8">getCallgraph</a>()-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#a317e09edb29b110cf4273009551d31ec">getCallees</a>(cs-&gt;<a class="code" href="classSVF_1_1RetICFGNode.html#a98c5e8394aa337e53a5ba8f4b0a245d4">getCallICFGNode</a>(),callees);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordflow">for</span>(PTACallGraph::FunctionSet::const_iterator cit = callees.begin(), ecit = callees.end(); cit!=ecit; cit++)</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; {</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun = *cit;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1LeakChecker.html#afeee30f5f0c08d9aed59be3064bcc134">isSourceLikeFun</a>(fun))</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; {</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <a class="code" href="classSVF_1_1LeakChecker.html#aa0d4c66929f8ae39cf5efc77e873f642">CSWorkList</a> <a class="code" href="classSVF_1_1GraphReachSolver.html#a5032d3988dbce5a29274c55dc4dbe6bc">worklist</a>;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <a class="code" href="classSVF_1_1LeakChecker.html#a65b05e30410e40fe64d41f71516cd367">SVFGNodeBS</a> visited;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; worklist.push(it-&gt;first-&gt;getCallICFGNode());</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordflow">while</span> (!worklist.empty())</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; {</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs = worklist.pop();</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1RetICFGNode.html">RetICFGNode</a>* retBlockNode = icfg-&gt;<a class="code" href="classSVF_1_1ICFG.html#a66cb50d8c176f800f06d9cb8924eb896">getRetICFGNode</a>(cs-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a674753d5ca0fbe28674acb25291f2bcf">getCallSite</a>());</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* pagNode = pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a3145677c7a3763fc0d6aa7e21b264ab6">getCallSiteRet</a>(retBlockNode);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node = <a class="code" href="classSVF_1_1SrcSnkDDA.html#a529b40c870c74309440f025e490bb161">getSVFG</a>()-&gt;<a class="code" href="classSVF_1_1SVFG.html#a8e7a945f4266e8dc7dcfff2ad6494bfb">getDefSVFGNode</a>(pagNode);</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">if</span> (visited.test(node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>()) == 0)</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; visited.set(node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>());</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <a class="code" href="classSVF_1_1SrcSnkDDA.html#a47a4be28c625bf4d079a04ac24132165">CallSiteSet</a> csSet;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="comment">// if this node is in an allocation wrapper, find all its call nodes</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SrcSnkDDA.html#afc75e55af839ef535d80555fd422342c">isInAWrapper</a>(node, csSet))</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; {</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordflow">for</span> (CallSiteSet::iterator it = csSet.begin(), eit =</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; csSet.end(); it != eit; ++it)</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; {</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; worklist.push(*it);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; }</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; }</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="comment">// otherwise, this is the source we are interested</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; {</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="comment">// exclude sources in dead functions</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a4dcfe3e66a16813350ec8dffd47c5644">isPtrInDeadFunction</a>(cs-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a674753d5ca0fbe28674acb25291f2bcf">getCallSite</a>()) == <span class="keyword">false</span>)</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; {</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <a class="code" href="classSVF_1_1SrcSnkDDA.html#acdffb63fd5ae67306640bfe2fcfc3a79">addToSources</a>(node);</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <a class="code" href="classSVF_1_1LeakChecker.html#a155da7c60f3232b43a3996313b0496c7">addSrcToCSID</a>(node, cs);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; }</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; }</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; }</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; }</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; }</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;}</div><div class="ttc" id="classSVF_1_1SrcSnkDDA_html_acdffb63fd5ae67306640bfe2fcfc3a79"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#acdffb63fd5ae67306640bfe2fcfc3a79">SVF::SrcSnkDDA::addToSources</a></div><div class="ttdeci">void addToSources(const SVFGNode *node)</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00213">SrcSnkDDA.h:213</a></div></div>
666
+ <p class="definition">Definition at line <a class="el" href="LeakChecker_8cpp_source.html#l00042">42</a> of file <a class="el" href="LeakChecker_8cpp_source.html">LeakChecker.cpp</a>.</p>
667
+ <div class="fragment"><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;{</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* pag = <a class="code" href="classSVF_1_1SrcSnkDDA.html#a4f37c66db2588cd691353a9ad1a4d5b1">getPAG</a>();</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <a class="code" href="classSVF_1_1ICFG.html">ICFG</a>* icfg = pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>();</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordflow">for</span>(SVFIR::CSToRetMap::iterator it = pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a650b3931af337a92ffcb5dad5ab47b22">getCallSiteRets</a>().begin(),</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; eit = pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a650b3931af337a92ffcb5dad5ab47b22">getCallSiteRets</a>().end(); it!=eit; ++it)</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; {</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1RetICFGNode.html">RetICFGNode</a>* cs = it-&gt;first;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a0649699433c2fe299ecde41c93f3e4bf">isPtrInDeadFunction</a>(cs-&gt;<a class="code" href="classSVF_1_1RetICFGNode.html#a8f0490ea9491afdf81641e9928f5a5f7">getCallSite</a>()) || !cs-&gt;<a class="code" href="classSVF_1_1RetICFGNode.html#a8f0490ea9491afdf81641e9928f5a5f7">getCallSite</a>()-&gt;getType()-&gt;isPointerTy())</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <a class="code" href="classSVF_1_1PTACallGraph.html#a5f5a5ec7e707a21994d301cc07d32a5a">PTACallGraph::FunctionSet</a> callees;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <a class="code" href="classSVF_1_1SrcSnkDDA.html#ad445032e9b2027b3c990ce2a250257f8">getCallgraph</a>()-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#a317e09edb29b110cf4273009551d31ec">getCallees</a>(cs-&gt;<a class="code" href="classSVF_1_1RetICFGNode.html#a98c5e8394aa337e53a5ba8f4b0a245d4">getCallICFGNode</a>(),callees);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">for</span>(PTACallGraph::FunctionSet::const_iterator cit = callees.begin(), ecit = callees.end(); cit!=ecit; cit++)</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; {</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun = *cit;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1LeakChecker.html#afeee30f5f0c08d9aed59be3064bcc134">isSourceLikeFun</a>(fun))</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; {</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <a class="code" href="classSVF_1_1LeakChecker.html#aa0d4c66929f8ae39cf5efc77e873f642">CSWorkList</a> <a class="code" href="classSVF_1_1GraphReachSolver.html#a5032d3988dbce5a29274c55dc4dbe6bc">worklist</a>;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <a class="code" href="classSVF_1_1LeakChecker.html#a65b05e30410e40fe64d41f71516cd367">SVFGNodeBS</a> visited;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; worklist.push(it-&gt;first-&gt;getCallICFGNode());</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">while</span> (!worklist.empty())</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; {</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs = worklist.pop();</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1RetICFGNode.html">RetICFGNode</a>* retBlockNode = icfg-&gt;<a class="code" href="classSVF_1_1ICFG.html#a66cb50d8c176f800f06d9cb8924eb896">getRetICFGNode</a>(cs-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a674753d5ca0fbe28674acb25291f2bcf">getCallSite</a>());</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* pagNode = pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a3145677c7a3763fc0d6aa7e21b264ab6">getCallSiteRet</a>(retBlockNode);</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node = <a class="code" href="classSVF_1_1SrcSnkDDA.html#a529b40c870c74309440f025e490bb161">getSVFG</a>()-&gt;<a class="code" href="classSVF_1_1SVFG.html#a8e7a945f4266e8dc7dcfff2ad6494bfb">getDefSVFGNode</a>(pagNode);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordflow">if</span> (visited.test(node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>()) == 0)</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; visited.set(node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>());</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <a class="code" href="classSVF_1_1SrcSnkDDA.html#a47a4be28c625bf4d079a04ac24132165">CallSiteSet</a> csSet;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="comment">// if this node is in an allocation wrapper, find all its call nodes</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SrcSnkDDA.html#afc75e55af839ef535d80555fd422342c">isInAWrapper</a>(node, csSet))</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; {</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordflow">for</span> (CallSiteSet::iterator it = csSet.begin(), eit =</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; csSet.end(); it != eit; ++it)</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; {</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; worklist.push(*it);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; }</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; }</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="comment">// otherwise, this is the source we are interested</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; {</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="comment">// exclude sources in dead functions</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a0649699433c2fe299ecde41c93f3e4bf">isPtrInDeadFunction</a>(cs-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a674753d5ca0fbe28674acb25291f2bcf">getCallSite</a>()) == <span class="keyword">false</span>)</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; {</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <a class="code" href="classSVF_1_1SrcSnkDDA.html#acdffb63fd5ae67306640bfe2fcfc3a79">addToSources</a>(node);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <a class="code" href="classSVF_1_1LeakChecker.html#a155da7c60f3232b43a3996313b0496c7">addSrcToCSID</a>(node, cs);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; }</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; }</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; }</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; }</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; }</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;}</div><div class="ttc" id="classSVF_1_1SrcSnkDDA_html_acdffb63fd5ae67306640bfe2fcfc3a79"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#acdffb63fd5ae67306640bfe2fcfc3a79">SVF::SrcSnkDDA::addToSources</a></div><div class="ttdeci">void addToSources(const SVFGNode *node)</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00213">SrcSnkDDA.h:213</a></div></div>
668
668
  <div class="ttc" id="classSVF_1_1RetICFGNode_html_a8f0490ea9491afdf81641e9928f5a5f7"><div class="ttname"><a href="classSVF_1_1RetICFGNode.html#a8f0490ea9491afdf81641e9928f5a5f7">SVF::RetICFGNode::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#l00474">ICFGNode.h:474</a></div></div>
669
669
  <div class="ttc" id="classSVF_1_1SVFG_html_a8e7a945f4266e8dc7dcfff2ad6494bfb"><div class="ttname"><a href="classSVF_1_1SVFG.html#a8e7a945f4266e8dc7dcfff2ad6494bfb">SVF::SVFG::getDefSVFGNode</a></div><div class="ttdeci">const SVFGNode * getDefSVFGNode(const PAGNode *pagNode) const</div><div class="ttdoc">Given a pagNode, return its definition site. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00171">SVFG.h:171</a></div></div>
670
670
  <div class="ttc" id="classSVF_1_1PTACallGraph_html_a5f5a5ec7e707a21994d301cc07d32a5a"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#a5f5a5ec7e707a21994d301cc07d32a5a">SVF::PTACallGraph::FunctionSet</a></div><div class="ttdeci">Set&lt; const SVFFunction * &gt; FunctionSet</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00228">PTACallGraph.h:228</a></div></div>
@@ -675,8 +675,8 @@ Additional Inherited Members</h2></td></tr>
675
675
  <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#l00045">SVFVariables.h:45</a></div></div>
676
676
  <div class="ttc" id="classSVF_1_1LeakChecker_html_aa0d4c66929f8ae39cf5efc77e873f642"><div class="ttname"><a href="classSVF_1_1LeakChecker.html#aa0d4c66929f8ae39cf5efc77e873f642">SVF::LeakChecker::CSWorkList</a></div><div class="ttdeci">FIFOWorkList&lt; const CallICFGNode * &gt; CSWorkList</div><div class="ttdef"><b>Definition:</b> <a href="LeakChecker_8h_source.html#l00047">LeakChecker.h:47</a></div></div>
677
677
  <div class="ttc" id="classSVF_1_1LeakChecker_html_afeee30f5f0c08d9aed59be3064bcc134"><div class="ttname"><a href="classSVF_1_1LeakChecker.html#afeee30f5f0c08d9aed59be3064bcc134">SVF::LeakChecker::isSourceLikeFun</a></div><div class="ttdeci">virtual bool isSourceLikeFun(const SVFFunction *fun) override</div><div class="ttdoc">Whether the function is a heap allocator/reallocator (allocate memory) </div><div class="ttdef"><b>Definition:</b> <a href="LeakChecker_8h_source.html#l00081">LeakChecker.h:81</a></div></div>
678
+ <div class="ttc" id="namespaceSVF_1_1LLVMUtil_html_a0649699433c2fe299ecde41c93f3e4bf"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a0649699433c2fe299ecde41c93f3e4bf">SVF::LLVMUtil::isPtrInDeadFunction</a></div><div class="ttdeci">bool isPtrInDeadFunction(const Value *value)</div><div class="ttdoc">Return true if this is value in a dead function (function without any caller) </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00193">LLVMUtil.cpp:193</a></div></div>
678
679
  <div class="ttc" id="classSVF_1_1RetICFGNode_html"><div class="ttname"><a href="classSVF_1_1RetICFGNode.html">SVF::RetICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00458">ICFGNode.h:458</a></div></div>
679
- <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a4dcfe3e66a16813350ec8dffd47c5644"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a4dcfe3e66a16813350ec8dffd47c5644">SVF::SVFUtil::isPtrInDeadFunction</a></div><div class="ttdeci">bool isPtrInDeadFunction(const Value *value)</div><div class="ttdoc">Return true if this is value in a dead function (function without any caller) </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00193">LLVMUtil.cpp:193</a></div></div>
680
680
  <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_a529b40c870c74309440f025e490bb161"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a529b40c870c74309440f025e490bb161">SVF::SrcSnkDDA::getSVFG</a></div><div class="ttdeci">const SVFG * getSVFG() const</div><div class="ttdoc">Get SVFG. </div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00121">SrcSnkDDA.h:121</a></div></div>
681
681
  <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_a47a4be28c625bf4d079a04ac24132165"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a47a4be28c625bf4d079a04ac24132165">SVF::SrcSnkDDA::CallSiteSet</a></div><div class="ttdeci">Set&lt; const CallICFGNode * &gt; CallSiteSet</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00057">SrcSnkDDA.h:57</a></div></div>
682
682
  <div class="ttc" id="classSVF_1_1LeakChecker_html_a155da7c60f3232b43a3996313b0496c7"><div class="ttname"><a href="classSVF_1_1LeakChecker.html#a155da7c60f3232b43a3996313b0496c7">SVF::LeakChecker::addSrcToCSID</a></div><div class="ttdeci">void addSrcToCSID(const SVFGNode *src, const CallICFGNode *cs)</div><div class="ttdoc">Record a source to its callsite. </div><div class="ttdef"><b>Definition:</b> <a href="LeakChecker_8h_source.html#l00107">LeakChecker.h:107</a></div></div>
@@ -799,13 +799,13 @@ Additional Inherited Members</h2></td></tr>
799
799
 
800
800
  <p>Reimplemented in <a class="el" href="classSVF_1_1FileChecker.html#a88ffc46ca954b77463de4c94c4eace54">SVF::FileChecker</a>, and <a class="el" href="classSVF_1_1DoubleFreeChecker.html#aa6bde3be780876317dcdcdf26d2ece2a">SVF::DoubleFreeChecker</a>.</p>
801
801
 
802
- <p class="definition">Definition at line <a class="el" href="LeakChecker_8cpp_source.html#l00165">165</a> of file <a class="el" href="LeakChecker_8cpp_source.html">LeakChecker.cpp</a>.</p>
803
- <div class="fragment"><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;{</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SrcSnkDDA.html#a6ae0d47bac09163e90b8b2e773ad69f0">isAllPathReachable</a>() == <span class="keyword">false</span> &amp;&amp; <a class="code" href="classSVF_1_1SrcSnkDDA.html#a19ab6f6df2a67b294268cfe7f4287fd7">isSomePathReachable</a>() == <span class="keyword">false</span>)</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; {</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <a class="code" href="classSVF_1_1LeakChecker.html#a7b6710c3b56141a249bfc29fb6181583">reportNeverFree</a>(slice-&gt;<a class="code" href="classSVF_1_1ProgSlice.html#ac1dc48ea64a89ce37394a22e609a0cd0">getSource</a>());</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; }</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SrcSnkDDA.html#a6ae0d47bac09163e90b8b2e773ad69f0">isAllPathReachable</a>() == <span class="keyword">false</span> &amp;&amp; <a class="code" href="classSVF_1_1SrcSnkDDA.html#a19ab6f6df2a67b294268cfe7f4287fd7">isSomePathReachable</a>() == <span class="keyword">true</span>)</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; {</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <a class="code" href="classSVF_1_1LeakChecker.html#a93486083c0f186b91e655cbef2382634">reportPartialLeak</a>(slice-&gt;<a class="code" href="classSVF_1_1ProgSlice.html#ac1dc48ea64a89ce37394a22e609a0cd0">getSource</a>());</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVFUtil::errs</a>() &lt;&lt; <span class="stringliteral">&quot;\t\t conditional free path: \n&quot;</span> &lt;&lt; slice-&gt;<a class="code" href="classSVF_1_1ProgSlice.html#afac06b0be2b04cb8a65af21fd697b756">evalFinalCond</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; slice-&gt;<a class="code" href="classSVF_1_1ProgSlice.html#ab1fdec8d39c9890324718607d7464eab">annotatePaths</a>();</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; }</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1Options.html#aec491143ded97649da1ed61b8fda796c">Options::ValidateTests</a>)</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <a class="code" href="classSVF_1_1LeakChecker.html#aaf5d098e0d08929a108fb59bff46e424">testsValidation</a>(slice);</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;}</div><div class="ttc" id="classSVF_1_1ProgSlice_html_ac1dc48ea64a89ce37394a22e609a0cd0"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#ac1dc48ea64a89ce37394a22e609a0cd0">SVF::ProgSlice::getSource</a></div><div class="ttdeci">const SVFGNode * getSource() const</div><div class="ttdoc">root and sink operations </div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00112">ProgSlice.h:112</a></div></div>
802
+ <p class="definition">Definition at line <a class="el" href="LeakChecker_8cpp_source.html#l00166">166</a> of file <a class="el" href="LeakChecker_8cpp_source.html">LeakChecker.cpp</a>.</p>
803
+ <div class="fragment"><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;{</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SrcSnkDDA.html#a6ae0d47bac09163e90b8b2e773ad69f0">isAllPathReachable</a>() == <span class="keyword">false</span> &amp;&amp; <a class="code" href="classSVF_1_1SrcSnkDDA.html#a19ab6f6df2a67b294268cfe7f4287fd7">isSomePathReachable</a>() == <span class="keyword">false</span>)</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; {</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <a class="code" href="classSVF_1_1LeakChecker.html#a7b6710c3b56141a249bfc29fb6181583">reportNeverFree</a>(slice-&gt;<a class="code" href="classSVF_1_1ProgSlice.html#ac1dc48ea64a89ce37394a22e609a0cd0">getSource</a>());</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; }</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SrcSnkDDA.html#a6ae0d47bac09163e90b8b2e773ad69f0">isAllPathReachable</a>() == <span class="keyword">false</span> &amp;&amp; <a class="code" href="classSVF_1_1SrcSnkDDA.html#a19ab6f6df2a67b294268cfe7f4287fd7">isSomePathReachable</a>() == <span class="keyword">true</span>)</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; {</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <a class="code" href="classSVF_1_1LeakChecker.html#a93486083c0f186b91e655cbef2382634">reportPartialLeak</a>(slice-&gt;<a class="code" href="classSVF_1_1ProgSlice.html#ac1dc48ea64a89ce37394a22e609a0cd0">getSource</a>());</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVFUtil::errs</a>() &lt;&lt; <span class="stringliteral">&quot;\t\t conditional free path: \n&quot;</span> &lt;&lt; slice-&gt;<a class="code" href="classSVF_1_1ProgSlice.html#afac06b0be2b04cb8a65af21fd697b756">evalFinalCond</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; slice-&gt;<a class="code" href="classSVF_1_1ProgSlice.html#ab1fdec8d39c9890324718607d7464eab">annotatePaths</a>();</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; }</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1Options.html#aec491143ded97649da1ed61b8fda796c">Options::ValidateTests</a>)</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <a class="code" href="classSVF_1_1LeakChecker.html#aaf5d098e0d08929a108fb59bff46e424">testsValidation</a>(slice);</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;}</div><div class="ttc" id="classSVF_1_1ProgSlice_html_ac1dc48ea64a89ce37394a22e609a0cd0"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#ac1dc48ea64a89ce37394a22e609a0cd0">SVF::ProgSlice::getSource</a></div><div class="ttdeci">const SVFGNode * getSource() const</div><div class="ttdoc">root and sink operations </div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00112">ProgSlice.h:112</a></div></div>
804
804
  <div class="ttc" id="classSVF_1_1ProgSlice_html_afac06b0be2b04cb8a65af21fd697b756"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#afac06b0be2b04cb8a65af21fd697b756">SVF::ProgSlice::evalFinalCond</a></div><div class="ttdeci">std::string evalFinalCond() const</div><div class="ttdoc">Evaluate final condition. </div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8cpp_source.html#l00160">ProgSlice.cpp:160</a></div></div>
805
- <div class="ttc" id="classSVF_1_1LeakChecker_html_a7b6710c3b56141a249bfc29fb6181583"><div class="ttname"><a href="classSVF_1_1LeakChecker.html#a7b6710c3b56141a249bfc29fb6181583">SVF::LeakChecker::reportNeverFree</a></div><div class="ttdeci">void reportNeverFree(const SVFGNode *src)</div><div class="ttdef"><b>Definition:</b> <a href="LeakChecker_8cpp_source.html#l00151">LeakChecker.cpp:151</a></div></div>
805
+ <div class="ttc" id="classSVF_1_1LeakChecker_html_a7b6710c3b56141a249bfc29fb6181583"><div class="ttname"><a href="classSVF_1_1LeakChecker.html#a7b6710c3b56141a249bfc29fb6181583">SVF::LeakChecker::reportNeverFree</a></div><div class="ttdeci">void reportNeverFree(const SVFGNode *src)</div><div class="ttdef"><b>Definition:</b> <a href="LeakChecker_8cpp_source.html#l00152">LeakChecker.cpp:152</a></div></div>
806
806
  <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_a19ab6f6df2a67b294268cfe7f4287fd7"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a19ab6f6df2a67b294268cfe7f4287fd7">SVF::SrcSnkDDA::isSomePathReachable</a></div><div class="ttdeci">virtual bool isSomePathReachable()</div><div class="ttdoc">Whether it is some path reachable from a source. </div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00302">SrcSnkDDA.h:302</a></div></div>
807
- <div class="ttc" id="classSVF_1_1LeakChecker_html_a93486083c0f186b91e655cbef2382634"><div class="ttname"><a href="classSVF_1_1LeakChecker.html#a93486083c0f186b91e655cbef2382634">SVF::LeakChecker::reportPartialLeak</a></div><div class="ttdeci">void reportPartialLeak(const SVFGNode *src)</div><div class="ttdef"><b>Definition:</b> <a href="LeakChecker_8cpp_source.html#l00158">LeakChecker.cpp:158</a></div></div>
808
- <div class="ttc" id="classSVF_1_1LeakChecker_html_aaf5d098e0d08929a108fb59bff46e424"><div class="ttname"><a href="classSVF_1_1LeakChecker.html#aaf5d098e0d08929a108fb59bff46e424">SVF::LeakChecker::testsValidation</a></div><div class="ttdeci">void testsValidation(const ProgSlice *slice)</div><div class="ttdoc">Validate test cases for regression test purpose. </div><div class="ttdef"><b>Definition:</b> <a href="LeakChecker_8cpp_source.html#l00187">LeakChecker.cpp:187</a></div></div>
807
+ <div class="ttc" id="classSVF_1_1LeakChecker_html_a93486083c0f186b91e655cbef2382634"><div class="ttname"><a href="classSVF_1_1LeakChecker.html#a93486083c0f186b91e655cbef2382634">SVF::LeakChecker::reportPartialLeak</a></div><div class="ttdeci">void reportPartialLeak(const SVFGNode *src)</div><div class="ttdef"><b>Definition:</b> <a href="LeakChecker_8cpp_source.html#l00159">LeakChecker.cpp:159</a></div></div>
808
+ <div class="ttc" id="classSVF_1_1LeakChecker_html_aaf5d098e0d08929a108fb59bff46e424"><div class="ttname"><a href="classSVF_1_1LeakChecker.html#aaf5d098e0d08929a108fb59bff46e424">SVF::LeakChecker::testsValidation</a></div><div class="ttdeci">void testsValidation(const ProgSlice *slice)</div><div class="ttdoc">Validate test cases for regression test purpose. </div><div class="ttdef"><b>Definition:</b> <a href="LeakChecker_8cpp_source.html#l00188">LeakChecker.cpp:188</a></div></div>
809
809
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_ab65033f068bfbeb0a1c52dcec3beb6bc"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVF::SVFUtil::errs</a></div><div class="ttdeci">std::ostream &amp; errs()</div><div class="ttdoc">Overwrite llvm::errs() </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00055">SVFUtil.h:55</a></div></div>
810
810
  <div class="ttc" id="classSVF_1_1Options_html_aec491143ded97649da1ed61b8fda796c"><div class="ttname"><a href="classSVF_1_1Options.html#aec491143ded97649da1ed61b8fda796c">SVF::Options::ValidateTests</a></div><div class="ttdeci">static const llvm::cl::opt&lt; bool &gt; ValidateTests</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00198">Options.h:198</a></div></div>
811
811
  <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_a6ae0d47bac09163e90b8b2e773ad69f0"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a6ae0d47bac09163e90b8b2e773ad69f0">SVF::SrcSnkDDA::isAllPathReachable</a></div><div class="ttdeci">virtual bool isAllPathReachable()</div><div class="ttdoc">Whether it is all path reachable from a source. </div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00297">SrcSnkDDA.h:297</a></div></div>
@@ -837,8 +837,8 @@ Additional Inherited Members</h2></td></tr>
837
837
  </table>
838
838
  </div><div class="memdoc">
839
839
 
840
- <p class="definition">Definition at line <a class="el" href="LeakChecker_8cpp_source.html#l00151">151</a> of file <a class="el" href="LeakChecker_8cpp_source.html">LeakChecker.cpp</a>.</p>
841
- <div class="fragment"><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;{</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs = <a class="code" href="classSVF_1_1LeakChecker.html#a8cc561fddf3435b3b40ff4aace23b846">getSrcCSID</a>(src);</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVFUtil::errs</a>() &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#af6c66553e2559eebfe4f98c0c7ec4b08">bugMsg1</a>(<span class="stringliteral">&quot;\t NeverFree :&quot;</span>) &lt;&lt; <span class="stringliteral">&quot; memory allocation at : (&quot;</span></div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">getSourceLoc</a>(cs-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a674753d5ca0fbe28674acb25291f2bcf">getCallSite</a>()) &lt;&lt; <span class="stringliteral">&quot;)\n&quot;</span>;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;}</div><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#l00268">SVFUtil.cpp:268</a></div></div>
840
+ <p class="definition">Definition at line <a class="el" href="LeakChecker_8cpp_source.html#l00152">152</a> of file <a class="el" href="LeakChecker_8cpp_source.html">LeakChecker.cpp</a>.</p>
841
+ <div class="fragment"><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;{</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs = <a class="code" href="classSVF_1_1LeakChecker.html#a8cc561fddf3435b3b40ff4aace23b846">getSrcCSID</a>(src);</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVFUtil::errs</a>() &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#af6c66553e2559eebfe4f98c0c7ec4b08">bugMsg1</a>(<span class="stringliteral">&quot;\t NeverFree :&quot;</span>) &lt;&lt; <span class="stringliteral">&quot; memory allocation at : (&quot;</span></div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">getSourceLoc</a>(cs-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a674753d5ca0fbe28674acb25291f2bcf">getCallSite</a>()) &lt;&lt; <span class="stringliteral">&quot;)\n&quot;</span>;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;}</div><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#l00268">SVFUtil.cpp:268</a></div></div>
842
842
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_ab65033f068bfbeb0a1c52dcec3beb6bc"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVF::SVFUtil::errs</a></div><div class="ttdeci">std::ostream &amp; errs()</div><div class="ttdoc">Overwrite llvm::errs() </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00055">SVFUtil.h:55</a></div></div>
843
843
  <div class="ttc" id="classSVF_1_1LeakChecker_html_a8cc561fddf3435b3b40ff4aace23b846"><div class="ttname"><a href="classSVF_1_1LeakChecker.html#a8cc561fddf3435b3b40ff4aace23b846">SVF::LeakChecker::getSrcCSID</a></div><div class="ttdeci">const CallICFGNode * getSrcCSID(const SVFGNode *src)</div><div class="ttdef"><b>Definition:</b> <a href="LeakChecker_8h_source.html#l00111">LeakChecker.h:111</a></div></div>
844
844
  <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#l00380">ICFGNode.h:380</a></div></div>
@@ -871,8 +871,8 @@ Additional Inherited Members</h2></td></tr>
871
871
  </table>
872
872
  </div><div class="memdoc">
873
873
 
874
- <p class="definition">Definition at line <a class="el" href="LeakChecker_8cpp_source.html#l00158">158</a> of file <a class="el" href="LeakChecker_8cpp_source.html">LeakChecker.cpp</a>.</p>
875
- <div class="fragment"><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;{</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs = <a class="code" href="classSVF_1_1LeakChecker.html#a8cc561fddf3435b3b40ff4aace23b846">getSrcCSID</a>(src);</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVFUtil::errs</a>() &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a054c3e668ce8b265bbc5d923f6243ce7">bugMsg2</a>(<span class="stringliteral">&quot;\t PartialLeak :&quot;</span>) &lt;&lt; <span class="stringliteral">&quot; memory allocation at : (&quot;</span></div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">getSourceLoc</a>(cs-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a674753d5ca0fbe28674acb25291f2bcf">getCallSite</a>()) &lt;&lt; <span class="stringliteral">&quot;)\n&quot;</span>;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;}</div><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#l00268">SVFUtil.cpp:268</a></div></div>
874
+ <p class="definition">Definition at line <a class="el" href="LeakChecker_8cpp_source.html#l00159">159</a> of file <a class="el" href="LeakChecker_8cpp_source.html">LeakChecker.cpp</a>.</p>
875
+ <div class="fragment"><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;{</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs = <a class="code" href="classSVF_1_1LeakChecker.html#a8cc561fddf3435b3b40ff4aace23b846">getSrcCSID</a>(src);</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVFUtil::errs</a>() &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a054c3e668ce8b265bbc5d923f6243ce7">bugMsg2</a>(<span class="stringliteral">&quot;\t PartialLeak :&quot;</span>) &lt;&lt; <span class="stringliteral">&quot; memory allocation at : (&quot;</span></div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">getSourceLoc</a>(cs-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a674753d5ca0fbe28674acb25291f2bcf">getCallSite</a>()) &lt;&lt; <span class="stringliteral">&quot;)\n&quot;</span>;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;}</div><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#l00268">SVFUtil.cpp:268</a></div></div>
876
876
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a054c3e668ce8b265bbc5d923f6243ce7"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a054c3e668ce8b265bbc5d923f6243ce7">SVF::SVFUtil::bugMsg2</a></div><div class="ttdeci">std::string bugMsg2(std::string msg)</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00087">SVFUtil.cpp:87</a></div></div>
877
877
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_ab65033f068bfbeb0a1c52dcec3beb6bc"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVF::SVFUtil::errs</a></div><div class="ttdeci">std::ostream &amp; errs()</div><div class="ttdoc">Overwrite llvm::errs() </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00055">SVFUtil.h:55</a></div></div>
878
878
  <div class="ttc" id="classSVF_1_1LeakChecker_html_a8cc561fddf3435b3b40ff4aace23b846"><div class="ttname"><a href="classSVF_1_1LeakChecker.html#a8cc561fddf3435b3b40ff4aace23b846">SVF::LeakChecker::getSrcCSID</a></div><div class="ttdeci">const CallICFGNode * getSrcCSID(const SVFGNode *src)</div><div class="ttdef"><b>Definition:</b> <a href="LeakChecker_8h_source.html#l00111">LeakChecker.h:111</a></div></div>
@@ -942,12 +942,12 @@ Additional Inherited Members</h2></td></tr>
942
942
  <p>Validate test cases for regression test purpose. </p>
943
943
  <p>Validate test cases for regression test purpose </p>
944
944
 
945
- <p class="definition">Definition at line <a class="el" href="LeakChecker_8cpp_source.html#l00187">187</a> of file <a class="el" href="LeakChecker_8cpp_source.html">LeakChecker.cpp</a>.</p>
946
- <div class="fragment"><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;{</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* source = slice-&gt;<a class="code" href="classSVF_1_1ProgSlice.html#ac1dc48ea64a89ce37394a22e609a0cd0">getSource</a>();</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs = <a class="code" href="classSVF_1_1LeakChecker.html#a8cc561fddf3435b3b40ff4aace23b846">getSrcCSID</a>(source);</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d">getCallee</a>(cs-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a674753d5ca0fbe28674acb25291f2bcf">getCallSite</a>());</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="keywordflow">if</span>(fun==<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <a class="code" href="classSVF_1_1LeakChecker.html#a0aa051a956b61cad9ec5419f33829e6a">validateSuccessTests</a>(source,fun);</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <a class="code" href="classSVF_1_1LeakChecker.html#af098d01a353a217bd54a90f92f62a45f">validateExpectedFailureTests</a>(source,fun);</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;}</div><div class="ttc" id="classSVF_1_1ProgSlice_html_ac1dc48ea64a89ce37394a22e609a0cd0"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#ac1dc48ea64a89ce37394a22e609a0cd0">SVF::ProgSlice::getSource</a></div><div class="ttdeci">const SVFGNode * getSource() const</div><div class="ttdoc">root and sink operations </div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00112">ProgSlice.h:112</a></div></div>
947
- <div class="ttc" id="classSVF_1_1LeakChecker_html_af098d01a353a217bd54a90f92f62a45f"><div class="ttname"><a href="classSVF_1_1LeakChecker.html#af098d01a353a217bd54a90f92f62a45f">SVF::LeakChecker::validateExpectedFailureTests</a></div><div class="ttdeci">void validateExpectedFailureTests(const SVFGNode *source, const SVFFunction *fun)</div><div class="ttdef"><b>Definition:</b> <a href="LeakChecker_8cpp_source.html#l00255">LeakChecker.cpp:255</a></div></div>
945
+ <p class="definition">Definition at line <a class="el" href="LeakChecker_8cpp_source.html#l00188">188</a> of file <a class="el" href="LeakChecker_8cpp_source.html">LeakChecker.cpp</a>.</p>
946
+ <div class="fragment"><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;{</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* source = slice-&gt;<a class="code" href="classSVF_1_1ProgSlice.html#ac1dc48ea64a89ce37394a22e609a0cd0">getSource</a>();</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs = <a class="code" href="classSVF_1_1LeakChecker.html#a8cc561fddf3435b3b40ff4aace23b846">getSrcCSID</a>(source);</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d">getCallee</a>(cs-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a674753d5ca0fbe28674acb25291f2bcf">getCallSite</a>());</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keywordflow">if</span>(fun==<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <a class="code" href="classSVF_1_1LeakChecker.html#a0aa051a956b61cad9ec5419f33829e6a">validateSuccessTests</a>(source,fun);</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <a class="code" href="classSVF_1_1LeakChecker.html#af098d01a353a217bd54a90f92f62a45f">validateExpectedFailureTests</a>(source,fun);</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;}</div><div class="ttc" id="classSVF_1_1ProgSlice_html_ac1dc48ea64a89ce37394a22e609a0cd0"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#ac1dc48ea64a89ce37394a22e609a0cd0">SVF::ProgSlice::getSource</a></div><div class="ttdeci">const SVFGNode * getSource() const</div><div class="ttdoc">root and sink operations </div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00112">ProgSlice.h:112</a></div></div>
947
+ <div class="ttc" id="classSVF_1_1LeakChecker_html_af098d01a353a217bd54a90f92f62a45f"><div class="ttname"><a href="classSVF_1_1LeakChecker.html#af098d01a353a217bd54a90f92f62a45f">SVF::LeakChecker::validateExpectedFailureTests</a></div><div class="ttdeci">void validateExpectedFailureTests(const SVFGNode *source, const SVFFunction *fun)</div><div class="ttdef"><b>Definition:</b> <a href="LeakChecker_8cpp_source.html#l00256">LeakChecker.cpp:256</a></div></div>
948
948
  <div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00127">BasicTypes.h:127</a></div></div>
949
949
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a145abbd2958629718fbca41d25c3124d"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d">SVF::SVFUtil::getCallee</a></div><div class="ttdeci">const SVFFunction * getCallee(const CallSite cs)</div><div class="ttdoc">Return callee of a callsite. Return null if this is an indirect call. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00281">SVFUtil.h:281</a></div></div>
950
- <div class="ttc" id="classSVF_1_1LeakChecker_html_a0aa051a956b61cad9ec5419f33829e6a"><div class="ttname"><a href="classSVF_1_1LeakChecker.html#a0aa051a956b61cad9ec5419f33829e6a">SVF::LeakChecker::validateSuccessTests</a></div><div class="ttdeci">void validateSuccessTests(const SVFGNode *source, const SVFFunction *fun)</div><div class="ttdef"><b>Definition:</b> <a href="LeakChecker_8cpp_source.html#l00200">LeakChecker.cpp:200</a></div></div>
950
+ <div class="ttc" id="classSVF_1_1LeakChecker_html_a0aa051a956b61cad9ec5419f33829e6a"><div class="ttname"><a href="classSVF_1_1LeakChecker.html#a0aa051a956b61cad9ec5419f33829e6a">SVF::LeakChecker::validateSuccessTests</a></div><div class="ttdeci">void validateSuccessTests(const SVFGNode *source, const SVFFunction *fun)</div><div class="ttdef"><b>Definition:</b> <a href="LeakChecker_8cpp_source.html#l00201">LeakChecker.cpp:201</a></div></div>
951
951
  <div class="ttc" id="classSVF_1_1LeakChecker_html_a8cc561fddf3435b3b40ff4aace23b846"><div class="ttname"><a href="classSVF_1_1LeakChecker.html#a8cc561fddf3435b3b40ff4aace23b846">SVF::LeakChecker::getSrcCSID</a></div><div class="ttdeci">const CallICFGNode * getSrcCSID(const SVFGNode *src)</div><div class="ttdef"><b>Definition:</b> <a href="LeakChecker_8h_source.html#l00111">LeakChecker.h:111</a></div></div>
952
952
  <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#l00380">ICFGNode.h:380</a></div></div>
953
953
  <div class="ttc" id="classSVF_1_1CallICFGNode_html"><div class="ttname"><a href="classSVF_1_1CallICFGNode.html">SVF::CallICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00363">ICFGNode.h:363</a></div></div>
@@ -989,8 +989,8 @@ Additional Inherited Members</h2></td></tr>
989
989
  </table>
990
990
  </div><div class="memdoc">
991
991
 
992
- <p class="definition">Definition at line <a class="el" href="LeakChecker_8cpp_source.html#l00255">255</a> of file <a class="el" href="LeakChecker_8cpp_source.html">LeakChecker.cpp</a>.</p>
993
- <div class="fragment"><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;{</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs = <a class="code" href="classSVF_1_1LeakChecker.html#a8cc561fddf3435b3b40ff4aace23b846">getSrcCSID</a>(source);</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <span class="keywordtype">bool</span> expectedFailure = <span class="keyword">false</span>;</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160;</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <span class="keywordflow">if</span>(fun-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a2409c01221b9a6632655cee43d1b35e4">getName</a>() == <span class="stringliteral">&quot;NFRLEAKFP&quot;</span>)</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; {</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SrcSnkDDA.html#a6ae0d47bac09163e90b8b2e773ad69f0">isAllPathReachable</a>() == <span class="keyword">false</span> &amp;&amp; <a class="code" href="classSVF_1_1SrcSnkDDA.html#a19ab6f6df2a67b294268cfe7f4287fd7">isSomePathReachable</a>() == <span class="keyword">false</span>)</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; expectedFailure = <span class="keyword">true</span>;</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; }</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(fun-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a2409c01221b9a6632655cee43d1b35e4">getName</a>() == <span class="stringliteral">&quot;PLKLEAKFP&quot;</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; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SrcSnkDDA.html#a6ae0d47bac09163e90b8b2e773ad69f0">isAllPathReachable</a>() == <span class="keyword">false</span> &amp;&amp; <a class="code" href="classSVF_1_1SrcSnkDDA.html#a19ab6f6df2a67b294268cfe7f4287fd7">isSomePathReachable</a>() == <span class="keyword">true</span>)</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; expectedFailure = <span class="keyword">true</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; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(fun-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a2409c01221b9a6632655cee43d1b35e4">getName</a>() == <span class="stringliteral">&quot;LEAKFN&quot;</span>)</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; {</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SrcSnkDDA.html#a6ae0d47bac09163e90b8b2e773ad69f0">isAllPathReachable</a>() == <span class="keyword">true</span> &amp;&amp; <a class="code" href="classSVF_1_1SrcSnkDDA.html#a19ab6f6df2a67b294268cfe7f4287fd7">isSomePathReachable</a>() == <span class="keyword">true</span>)</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; expectedFailure = <span class="keyword">true</span>;</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; }</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(fun-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a2409c01221b9a6632655cee43d1b35e4">getName</a>() == <span class="stringliteral">&quot;SAFEMALLOC&quot;</span> || fun-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a2409c01221b9a6632655cee43d1b35e4">getName</a>() == <span class="stringliteral">&quot;NFRMALLOC&quot;</span></div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; || fun-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a2409c01221b9a6632655cee43d1b35e4">getName</a>() == <span class="stringliteral">&quot;PLKMALLOC&quot;</span> || fun-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a2409c01221b9a6632655cee43d1b35e4">getName</a>() == <span class="stringliteral">&quot;CLKLEAKFN&quot;</span>)</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; {</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; }</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; {</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">writeWrnMsg</a>(<span class="stringliteral">&quot;\t can not validate, check function not found, please put it at the right place!!&quot;</span>);</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; }</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160;</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; std::string funName = source-&gt;<a class="code" href="classSVF_1_1VFGNode.html#ab98e74dfd4756e70e3e3c5b7d5e5ae27">getFun</a>()-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a2409c01221b9a6632655cee43d1b35e4">getName</a>();</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; <span class="keywordflow">if</span> (expectedFailure)</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; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">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; funName &lt;&lt; <span class="stringliteral">&quot; check &lt;src id:&quot;</span> &lt;&lt; source-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>()</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; &lt;&lt; <span class="stringliteral">&quot;, cs id:&quot;</span> &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">SVFUtil::value2String</a>(<a class="code" href="classSVF_1_1LeakChecker.html#a8cc561fddf3435b3b40ff4aace23b846">getSrcCSID</a>(source)-&gt;getCallSite()) &lt;&lt; <span class="stringliteral">&quot;&gt; at (&quot;</span></div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">getSourceLoc</a>(cs-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a674753d5ca0fbe28674acb25291f2bcf">getCallSite</a>()) &lt;&lt; <span class="stringliteral">&quot;)\n&quot;</span>;</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; }</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <span class="keywordflow">else</span></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#ab65033f068bfbeb0a1c52dcec3beb6bc">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; funName</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; &lt;&lt; <span class="stringliteral">&quot; check &lt;src id:&quot;</span> &lt;&lt; source-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>()</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; &lt;&lt; <span class="stringliteral">&quot;, cs id:&quot;</span> &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">SVFUtil::value2String</a>(<a class="code" href="classSVF_1_1LeakChecker.html#a8cc561fddf3435b3b40ff4aace23b846">getSrcCSID</a>(source)-&gt;getCallSite()) &lt;&lt; <span class="stringliteral">&quot;&gt; at (&quot;</span></div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">getSourceLoc</a>(cs-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a674753d5ca0fbe28674acb25291f2bcf">getCallSite</a>()) &lt;&lt; <span class="stringliteral">&quot;)\n&quot;</span>;</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</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="l00303"></a><span class="lineno"> 303</span>&#160; }</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160;}</div><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>
992
+ <p class="definition">Definition at line <a class="el" href="LeakChecker_8cpp_source.html#l00256">256</a> of file <a class="el" href="LeakChecker_8cpp_source.html">LeakChecker.cpp</a>.</p>
993
+ <div class="fragment"><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;{</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160;</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs = <a class="code" href="classSVF_1_1LeakChecker.html#a8cc561fddf3435b3b40ff4aace23b846">getSrcCSID</a>(source);</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160;</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <span class="keywordtype">bool</span> expectedFailure = <span class="keyword">false</span>;</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160;</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <span class="keywordflow">if</span>(fun-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a2409c01221b9a6632655cee43d1b35e4">getName</a>() == <span class="stringliteral">&quot;NFRLEAKFP&quot;</span>)</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="keywordflow">if</span>(<a class="code" href="classSVF_1_1SrcSnkDDA.html#a6ae0d47bac09163e90b8b2e773ad69f0">isAllPathReachable</a>() == <span class="keyword">false</span> &amp;&amp; <a class="code" href="classSVF_1_1SrcSnkDDA.html#a19ab6f6df2a67b294268cfe7f4287fd7">isSomePathReachable</a>() == <span class="keyword">false</span>)</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; expectedFailure = <span class="keyword">true</span>;</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="keywordflow">else</span> <span class="keywordflow">if</span>(fun-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a2409c01221b9a6632655cee43d1b35e4">getName</a>() == <span class="stringliteral">&quot;PLKLEAKFP&quot;</span>)</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; {</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SrcSnkDDA.html#a6ae0d47bac09163e90b8b2e773ad69f0">isAllPathReachable</a>() == <span class="keyword">false</span> &amp;&amp; <a class="code" href="classSVF_1_1SrcSnkDDA.html#a19ab6f6df2a67b294268cfe7f4287fd7">isSomePathReachable</a>() == <span class="keyword">true</span>)</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; expectedFailure = <span class="keyword">true</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; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(fun-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a2409c01221b9a6632655cee43d1b35e4">getName</a>() == <span class="stringliteral">&quot;LEAKFN&quot;</span>)</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; {</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SrcSnkDDA.html#a6ae0d47bac09163e90b8b2e773ad69f0">isAllPathReachable</a>() == <span class="keyword">true</span> &amp;&amp; <a class="code" href="classSVF_1_1SrcSnkDDA.html#a19ab6f6df2a67b294268cfe7f4287fd7">isSomePathReachable</a>() == <span class="keyword">true</span>)</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; expectedFailure = <span class="keyword">true</span>;</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; }</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(fun-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a2409c01221b9a6632655cee43d1b35e4">getName</a>() == <span class="stringliteral">&quot;SAFEMALLOC&quot;</span> || fun-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a2409c01221b9a6632655cee43d1b35e4">getName</a>() == <span class="stringliteral">&quot;NFRMALLOC&quot;</span></div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; || fun-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a2409c01221b9a6632655cee43d1b35e4">getName</a>() == <span class="stringliteral">&quot;PLKMALLOC&quot;</span> || fun-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a2409c01221b9a6632655cee43d1b35e4">getName</a>() == <span class="stringliteral">&quot;CLKLEAKFN&quot;</span>)</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; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; }</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; {</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">writeWrnMsg</a>(<span class="stringliteral">&quot;\t can not validate, check function not found, please put it at the right place!!&quot;</span>);</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; }</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160;</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; std::string funName = source-&gt;<a class="code" href="classSVF_1_1VFGNode.html#ab98e74dfd4756e70e3e3c5b7d5e5ae27">getFun</a>()-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a2409c01221b9a6632655cee43d1b35e4">getName</a>();</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160;</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="keywordflow">if</span> (expectedFailure)</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#aed0b0b9f035057552a6a82154fd88e61">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; funName &lt;&lt; <span class="stringliteral">&quot; check &lt;src id:&quot;</span> &lt;&lt; source-&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; &lt;&lt; <span class="stringliteral">&quot;, cs id:&quot;</span> &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">SVFUtil::value2String</a>(<a class="code" href="classSVF_1_1LeakChecker.html#a8cc561fddf3435b3b40ff4aace23b846">getSrcCSID</a>(source)-&gt;getCallSite()) &lt;&lt; <span class="stringliteral">&quot;&gt; at (&quot;</span></div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">getSourceLoc</a>(cs-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a674753d5ca0fbe28674acb25291f2bcf">getCallSite</a>()) &lt;&lt; <span class="stringliteral">&quot;)\n&quot;</span>;</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; <span class="keywordflow">else</span></div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; {</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">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; funName</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; &lt;&lt; <span class="stringliteral">&quot; check &lt;src id:&quot;</span> &lt;&lt; source-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>()</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; &lt;&lt; <span class="stringliteral">&quot;, cs id:&quot;</span> &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">SVFUtil::value2String</a>(<a class="code" href="classSVF_1_1LeakChecker.html#a8cc561fddf3435b3b40ff4aace23b846">getSrcCSID</a>(source)-&gt;getCallSite()) &lt;&lt; <span class="stringliteral">&quot;&gt; at (&quot;</span></div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">getSourceLoc</a>(cs-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a674753d5ca0fbe28674acb25291f2bcf">getCallSite</a>()) &lt;&lt; <span class="stringliteral">&quot;)\n&quot;</span>;</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</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="l00304"></a><span class="lineno"> 304</span>&#160; }</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160;}</div><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>
994
994
  <div class="ttc" id="classSVF_1_1VFGNode_html_ab98e74dfd4756e70e3e3c5b7d5e5ae27"><div class="ttname"><a href="classSVF_1_1VFGNode.html#ab98e74dfd4756e70e3e3c5b7d5e5ae27">SVF::VFGNode::getFun</a></div><div class="ttdeci">virtual const SVFFunction * getFun() const</div><div class="ttdoc">Get the function of this SVFGNode. </div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00084">VFGNode.h:84</a></div></div>
995
995
  <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#l00268">SVFUtil.cpp:268</a></div></div>
996
996
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a6a55f1f8598998a3ffbbc67d32eaf8c4"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a6a55f1f8598998a3ffbbc67d32eaf8c4">SVF::SVFUtil::sucMsg</a></div><div class="ttdeci">std::string sucMsg(std::string msg)</div><div class="ttdoc">Returns successful message by converting a string into green string output. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00055">SVFUtil.cpp:55</a></div></div>
@@ -1043,8 +1043,8 @@ Additional Inherited Members</h2></td></tr>
1043
1043
  </table>
1044
1044
  </div><div class="memdoc">
1045
1045
 
1046
- <p class="definition">Definition at line <a class="el" href="LeakChecker_8cpp_source.html#l00200">200</a> of file <a class="el" href="LeakChecker_8cpp_source.html">LeakChecker.cpp</a>.</p>
1047
- <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="l00203"></a><span class="lineno"> 203</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs = <a class="code" href="classSVF_1_1LeakChecker.html#a8cc561fddf3435b3b40ff4aace23b846">getSrcCSID</a>(source);</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="keywordtype">bool</span> success = <span class="keyword">false</span>;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="keywordflow">if</span>(fun-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a2409c01221b9a6632655cee43d1b35e4">getName</a>() == <span class="stringliteral">&quot;SAFEMALLOC&quot;</span>)</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</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_1SrcSnkDDA.html#a6ae0d47bac09163e90b8b2e773ad69f0">isAllPathReachable</a>() == <span class="keyword">true</span> &amp;&amp; <a class="code" href="classSVF_1_1SrcSnkDDA.html#a19ab6f6df2a67b294268cfe7f4287fd7">isSomePathReachable</a>() == <span class="keyword">true</span>)</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; success = <span class="keyword">true</span>;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; }</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(fun-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a2409c01221b9a6632655cee43d1b35e4">getName</a>() == <span class="stringliteral">&quot;NFRMALLOC&quot;</span>)</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; {</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SrcSnkDDA.html#a6ae0d47bac09163e90b8b2e773ad69f0">isAllPathReachable</a>() == <span class="keyword">false</span> &amp;&amp; <a class="code" href="classSVF_1_1SrcSnkDDA.html#a19ab6f6df2a67b294268cfe7f4287fd7">isSomePathReachable</a>() == <span class="keyword">false</span>)</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; success = <span class="keyword">true</span>;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; }</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(fun-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a2409c01221b9a6632655cee43d1b35e4">getName</a>() == <span class="stringliteral">&quot;PLKMALLOC&quot;</span>)</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_1SrcSnkDDA.html#a6ae0d47bac09163e90b8b2e773ad69f0">isAllPathReachable</a>() == <span class="keyword">false</span> &amp;&amp; <a class="code" href="classSVF_1_1SrcSnkDDA.html#a19ab6f6df2a67b294268cfe7f4287fd7">isSomePathReachable</a>() == <span class="keyword">true</span>)</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; success = <span class="keyword">true</span>;</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">else</span> <span class="keywordflow">if</span>(fun-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a2409c01221b9a6632655cee43d1b35e4">getName</a>() == <span class="stringliteral">&quot;CLKMALLOC&quot;</span>)</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; {</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SrcSnkDDA.html#a6ae0d47bac09163e90b8b2e773ad69f0">isAllPathReachable</a>() == <span class="keyword">false</span> &amp;&amp; <a class="code" href="classSVF_1_1SrcSnkDDA.html#a19ab6f6df2a67b294268cfe7f4287fd7">isSomePathReachable</a>() == <span class="keyword">false</span>)</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; success = <span class="keyword">true</span>;</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">else</span> <span class="keywordflow">if</span>(fun-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a2409c01221b9a6632655cee43d1b35e4">getName</a>() == <span class="stringliteral">&quot;NFRLEAKFP&quot;</span> || fun-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a2409c01221b9a6632655cee43d1b35e4">getName</a>() == <span class="stringliteral">&quot;PLKLEAKFP&quot;</span></div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; || fun-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a2409c01221b9a6632655cee43d1b35e4">getName</a>() == <span class="stringliteral">&quot;LEAKFN&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="keywordflow">return</span>;</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; }</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; {</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">writeWrnMsg</a>(<span class="stringliteral">&quot;\t can not validate, check function not found, please put it at the right place!!&quot;</span>);</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; }</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; std::string funName = source-&gt;<a class="code" href="classSVF_1_1VFGNode.html#ab98e74dfd4756e70e3e3c5b7d5e5ae27">getFun</a>()-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a2409c01221b9a6632655cee43d1b35e4">getName</a>();</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="keywordflow">if</span> (success)</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; {</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">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; funName &lt;&lt; <span class="stringliteral">&quot; check &lt;src id:&quot;</span> &lt;&lt; source-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>()</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; &lt;&lt; <span class="stringliteral">&quot;, cs id:&quot;</span> &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">SVFUtil::value2String</a>(<a class="code" href="classSVF_1_1LeakChecker.html#a8cc561fddf3435b3b40ff4aace23b846">getSrcCSID</a>(source)-&gt;getCallSite()) &lt;&lt; <span class="stringliteral">&quot;&gt; at (&quot;</span></div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">getSourceLoc</a>(cs-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a674753d5ca0fbe28674acb25291f2bcf">getCallSite</a>()) &lt;&lt; <span class="stringliteral">&quot;)\n&quot;</span>;</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; }</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; {</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">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; funName &lt;&lt; <span class="stringliteral">&quot; check &lt;src id:&quot;</span> &lt;&lt; source-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>()</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; &lt;&lt; <span class="stringliteral">&quot;, cs id:&quot;</span> &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">SVFUtil::value2String</a>(<a class="code" href="classSVF_1_1LeakChecker.html#a8cc561fddf3435b3b40ff4aace23b846">getSrcCSID</a>(source)-&gt;getCallSite()) &lt;&lt; <span class="stringliteral">&quot;&gt; at (&quot;</span></div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">getSourceLoc</a>(cs-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a674753d5ca0fbe28674acb25291f2bcf">getCallSite</a>()) &lt;&lt; <span class="stringliteral">&quot;)\n&quot;</span>;</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</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="l00252"></a><span class="lineno"> 252</span>&#160; }</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160;}</div><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>
1046
+ <p class="definition">Definition at line <a class="el" href="LeakChecker_8cpp_source.html#l00201">201</a> of file <a class="el" href="LeakChecker_8cpp_source.html">LeakChecker.cpp</a>.</p>
1047
+ <div class="fragment"><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;{</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs = <a class="code" href="classSVF_1_1LeakChecker.html#a8cc561fddf3435b3b40ff4aace23b846">getSrcCSID</a>(source);</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; <span class="keywordtype">bool</span> success = <span class="keyword">false</span>;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160;</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <span class="keywordflow">if</span>(fun-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a2409c01221b9a6632655cee43d1b35e4">getName</a>() == <span class="stringliteral">&quot;SAFEMALLOC&quot;</span>)</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; {</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SrcSnkDDA.html#a6ae0d47bac09163e90b8b2e773ad69f0">isAllPathReachable</a>() == <span class="keyword">true</span> &amp;&amp; <a class="code" href="classSVF_1_1SrcSnkDDA.html#a19ab6f6df2a67b294268cfe7f4287fd7">isSomePathReachable</a>() == <span class="keyword">true</span>)</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; success = <span class="keyword">true</span>;</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; }</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(fun-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a2409c01221b9a6632655cee43d1b35e4">getName</a>() == <span class="stringliteral">&quot;NFRMALLOC&quot;</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; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SrcSnkDDA.html#a6ae0d47bac09163e90b8b2e773ad69f0">isAllPathReachable</a>() == <span class="keyword">false</span> &amp;&amp; <a class="code" href="classSVF_1_1SrcSnkDDA.html#a19ab6f6df2a67b294268cfe7f4287fd7">isSomePathReachable</a>() == <span class="keyword">false</span>)</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; success = <span class="keyword">true</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; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(fun-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a2409c01221b9a6632655cee43d1b35e4">getName</a>() == <span class="stringliteral">&quot;PLKMALLOC&quot;</span>)</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; {</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SrcSnkDDA.html#a6ae0d47bac09163e90b8b2e773ad69f0">isAllPathReachable</a>() == <span class="keyword">false</span> &amp;&amp; <a class="code" href="classSVF_1_1SrcSnkDDA.html#a19ab6f6df2a67b294268cfe7f4287fd7">isSomePathReachable</a>() == <span class="keyword">true</span>)</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; success = <span class="keyword">true</span>;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; }</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(fun-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a2409c01221b9a6632655cee43d1b35e4">getName</a>() == <span class="stringliteral">&quot;CLKMALLOC&quot;</span>)</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_1SrcSnkDDA.html#a6ae0d47bac09163e90b8b2e773ad69f0">isAllPathReachable</a>() == <span class="keyword">false</span> &amp;&amp; <a class="code" href="classSVF_1_1SrcSnkDDA.html#a19ab6f6df2a67b294268cfe7f4287fd7">isSomePathReachable</a>() == <span class="keyword">false</span>)</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; success = <span class="keyword">true</span>;</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; }</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(fun-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a2409c01221b9a6632655cee43d1b35e4">getName</a>() == <span class="stringliteral">&quot;NFRLEAKFP&quot;</span> || fun-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a2409c01221b9a6632655cee43d1b35e4">getName</a>() == <span class="stringliteral">&quot;PLKLEAKFP&quot;</span></div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; || fun-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a2409c01221b9a6632655cee43d1b35e4">getName</a>() == <span class="stringliteral">&quot;LEAKFN&quot;</span>)</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; {</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <span class="keywordflow">return</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="keywordflow">else</span></div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; {</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">writeWrnMsg</a>(<span class="stringliteral">&quot;\t can not validate, check function not found, please put it at the right place!!&quot;</span>);</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <span class="keywordflow">return</span>;</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;</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; std::string funName = source-&gt;<a class="code" href="classSVF_1_1VFGNode.html#ab98e74dfd4756e70e3e3c5b7d5e5ae27">getFun</a>()-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a2409c01221b9a6632655cee43d1b35e4">getName</a>();</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160;</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <span class="keywordflow">if</span> (success)</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; {</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">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; funName &lt;&lt; <span class="stringliteral">&quot; check &lt;src id:&quot;</span> &lt;&lt; source-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>()</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; &lt;&lt; <span class="stringliteral">&quot;, cs id:&quot;</span> &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">SVFUtil::value2String</a>(<a class="code" href="classSVF_1_1LeakChecker.html#a8cc561fddf3435b3b40ff4aace23b846">getSrcCSID</a>(source)-&gt;getCallSite()) &lt;&lt; <span class="stringliteral">&quot;&gt; at (&quot;</span></div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">getSourceLoc</a>(cs-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a674753d5ca0fbe28674acb25291f2bcf">getCallSite</a>()) &lt;&lt; <span class="stringliteral">&quot;)\n&quot;</span>;</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; }</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; {</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">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; funName &lt;&lt; <span class="stringliteral">&quot; check &lt;src id:&quot;</span> &lt;&lt; source-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>()</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; &lt;&lt; <span class="stringliteral">&quot;, cs id:&quot;</span> &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">SVFUtil::value2String</a>(<a class="code" href="classSVF_1_1LeakChecker.html#a8cc561fddf3435b3b40ff4aace23b846">getSrcCSID</a>(source)-&gt;getCallSite()) &lt;&lt; <span class="stringliteral">&quot;&gt; at (&quot;</span></div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">getSourceLoc</a>(cs-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a674753d5ca0fbe28674acb25291f2bcf">getCallSite</a>()) &lt;&lt; <span class="stringliteral">&quot;)\n&quot;</span>;</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</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="l00253"></a><span class="lineno"> 253</span>&#160; }</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;}</div><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>
1048
1048
  <div class="ttc" id="classSVF_1_1VFGNode_html_ab98e74dfd4756e70e3e3c5b7d5e5ae27"><div class="ttname"><a href="classSVF_1_1VFGNode.html#ab98e74dfd4756e70e3e3c5b7d5e5ae27">SVF::VFGNode::getFun</a></div><div class="ttdeci">virtual const SVFFunction * getFun() const</div><div class="ttdoc">Get the function of this SVFGNode. </div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00084">VFGNode.h:84</a></div></div>
1049
1049
  <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#l00268">SVFUtil.cpp:268</a></div></div>
1050
1050
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a6a55f1f8598998a3ffbbc67d32eaf8c4"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a6a55f1f8598998a3ffbbc67d32eaf8c4">SVF::SVFUtil::sucMsg</a></div><div class="ttdeci">std::string sucMsg(std::string msg)</div><div class="ttdoc">Returns successful message by converting a string into green string output. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00055">SVFUtil.cpp:55</a></div></div>