svf-tools 1.0.604 → 1.0.606

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 (136) hide show
  1. package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +2 -2
  2. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +1 -1
  3. package/SVF-doxygen/html/html/CFLGraphBuilder_8cpp_source.html +1 -1
  4. package/SVF-doxygen/html/html/CFLStat_8cpp_source.html +1 -1
  5. package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +1 -1
  6. package/SVF-doxygen/html/html/CPPUtil_8cpp_source.html +1 -1
  7. package/SVF-doxygen/html/html/CSC_8cpp_source.html +1 -1
  8. package/SVF-doxygen/html/html/CallGraphBuilder_8cpp_source.html +1 -1
  9. package/SVF-doxygen/html/html/Casting_8h.html +3 -0
  10. package/SVF-doxygen/html/html/Casting_8h_source.html +22 -22
  11. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +1 -1
  12. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +15 -15
  13. package/SVF-doxygen/html/html/ContextDDA_8h_source.html +3 -3
  14. package/SVF-doxygen/html/html/DCHG_8cpp_source.html +1 -1
  15. package/SVF-doxygen/html/html/DCHG_8h_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 +82 -74
  18. package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +14 -14
  19. package/SVF-doxygen/html/html/FlowDDA_8h_source.html +9 -9
  20. package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +1 -1
  21. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +27 -21
  22. package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +18 -18
  23. package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +1 -1
  24. package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +2 -2
  25. package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +2 -2
  26. package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +1 -1
  27. package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +2 -2
  28. package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +1 -1
  29. package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +1 -1
  30. package/SVF-doxygen/html/html/MHP_8cpp_source.html +33 -38
  31. package/SVF-doxygen/html/html/MHP_8h_source.html +22 -22
  32. package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +1 -1
  33. package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +3 -3
  34. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +1 -1
  35. package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +1 -1
  36. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +1 -1
  37. package/SVF-doxygen/html/html/SVFGOPT_8cpp_source.html +12 -11
  38. package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +11 -11
  39. package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +2 -2
  40. package/SVF-doxygen/html/html/SVFValue_8h_source.html +1 -1
  41. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +1 -1
  42. package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +8 -1
  43. package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +11 -11
  44. package/SVF-doxygen/html/html/SymbolTableBuilder_8h_source.html +8 -8
  45. package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +1 -1
  46. package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +1 -1
  47. package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +1 -1
  48. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +2 -2
  49. package/SVF-doxygen/html/html/classSVF_1_1AliasCFLGraphBuilder.html +2 -2
  50. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +1 -1
  51. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +2 -2
  52. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +5 -5
  53. package/SVF-doxygen/html/html/classSVF_1_1CFLStat.html +1 -1
  54. package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +2 -2
  55. package/SVF-doxygen/html/html/classSVF_1_1CSC.html +1 -1
  56. package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +1 -1
  57. package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +2 -2
  58. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +19 -19
  59. package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +11 -11
  60. package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +1 -1
  61. package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +228 -220
  62. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +2 -2
  63. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +17 -17
  64. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +64 -58
  65. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +1 -1
  66. package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +30 -38
  67. package/SVF-doxygen/html/html/classSVF_1_1IRAnnotator.html +1 -1
  68. package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +3 -3
  69. package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +2 -2
  70. package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +1 -1
  71. package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +2 -2
  72. package/SVF-doxygen/html/html/classSVF_1_1MHP.html +67 -83
  73. package/SVF-doxygen/html/html/classSVF_1_1MHPValidator.html +1 -1
  74. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +1 -1
  75. package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +4 -4
  76. package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +53 -53
  77. package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +3 -3
  78. package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo.html +1 -1
  79. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +1 -1
  80. package/SVF-doxygen/html/html/classSVF_1_1RaceResultValidator.html +5 -5
  81. package/SVF-doxygen/html/html/classSVF_1_1SVFCallInst.html +1 -1
  82. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +46 -33
  83. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +4 -4
  84. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +1 -1
  85. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +8 -1
  86. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +32 -32
  87. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +3 -3
  88. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraphBuilder.html +1 -1
  89. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +1 -1
  90. package/SVF-doxygen/html/html/classSVF_1_1VFCFLGraphBuilder.html +1 -1
  91. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +4 -4
  92. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive_1_1SCC.html +1 -1
  93. package/SVF-doxygen/html/html/include_2MTA_2MTAResultValidator_8h_source.html +2 -2
  94. package/SVF-doxygen/html/html/namespaceSVF_1_1LLVMUtil.html +7 -7
  95. package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +50 -17
  96. package/SVF-doxygen/html/html/namespaceSVF_1_1cppUtil.html +2 -2
  97. package/SVF-doxygen/html/html/namespacemembers_func_i.html +7 -7
  98. package/SVF-doxygen/html/html/namespacemembers_i.html +8 -8
  99. package/SVF-doxygen/html/html/search/all_9.js +1 -1
  100. package/SVF-doxygen/html/html/search/functions_8.js +1 -1
  101. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1cast__convert__val.html +3 -3
  102. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1cast__convert__val_3_01To_00_01FromTy_00_01FromTy_01_4.html +3 -3
  103. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1cast__retty.html +2 -2
  104. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1cast__retty__impl.html +2 -2
  105. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01From_01_5_01_4.html +2 -2
  106. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01const_01From_01_4.html +2 -2
  107. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01const_01From_01_5_01_4.html +2 -2
  108. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01const_01From_01_5const_01_4.html +2 -2
  109. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01std_1_1unique__ptr_3_01From_01_4_01_4.html +4 -4
  110. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1cast__retty__wrap.html +2 -2
  111. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1cast__retty__wrap_3_01To_00_01FromTy_00_01FromTy_01_4.html +2 -2
  112. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1is__simple__type.html +2 -2
  113. package/SVF-doxygen/html/html/tools_2MTA_2MTAResultValidator_8h_source.html +1 -1
  114. package/include/DDA/DDAVFSolver.h +4 -8
  115. package/include/Graphs/SVFGOPT.h +2 -2
  116. package/include/MTA/MTAResultValidator.h +1 -1
  117. package/include/Util/Casting.h +7 -0
  118. package/lib/CFL/CFLStat.cpp +1 -1
  119. package/lib/DDA/ContextDDA.cpp +1 -1
  120. package/lib/Graphs/ConsG.cpp +2 -2
  121. package/lib/Graphs/SVFGOPT.cpp +15 -17
  122. package/lib/MTA/FSMPTA.cpp +7 -6
  123. package/lib/MTA/LockAnalysis.cpp +1 -1
  124. package/lib/MTA/MHP.cpp +216 -229
  125. package/lib/MemoryModel/LocationSet.cpp +1 -1
  126. package/lib/MemoryModel/PointerAnalysis.cpp +1 -1
  127. package/lib/SABER/SaberSVFGBuilder.cpp +1 -1
  128. package/lib/SABER/SrcSnkDDA.cpp +3 -3
  129. package/lib/SVF-LLVM/LLVMModule.cpp +1 -1
  130. package/lib/SVF-LLVM/LLVMUtil.cpp +1 -1
  131. package/lib/SVF-LLVM/SVFIRBuilder.cpp +4 -4
  132. package/lib/SVF-LLVM/SymbolTableBuilder.cpp +3 -2
  133. package/lib/SVFIR/SymbolTableInfo.cpp +1 -1
  134. package/lib/WPA/AndersenSFR.cpp +1 -1
  135. package/lib/WPA/FlowSensitive.cpp +23 -22
  136. package/package.json +1 -1
@@ -66,36 +66,37 @@ $(function() {
66
66
  <div class="title">DDAVFSolver.h</div> </div>
67
67
  </div><!--header-->
68
68
  <div class="contents">
69
- <a href="DDAVFSolver_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">//===- DDAVFSolver.h -- Demand-driven analysis value-flow solver------------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// SVF: Static Value-Flow Analysis</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Copyright (C) &lt;2013-&gt; &lt;Yulei Sui&gt;</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// This program is free software: you can redistribute it and/or modify</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">// it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// the Free Software Foundation, either version 3 of the License, or</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// (at your option) any later version.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">// GNU General Public License for more details.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">// You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment">// along with this program. If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * DDAVFSolver.h</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * Created on: Jul 3, 2014</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * Author: Yulei Sui</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#ifndef VALUEFLOWDDA_H_</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#define VALUEFLOWDDA_H_</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="DDAStat_8h.html">DDA/DDAStat.h</a>&quot;</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="SVFGBuilder_8h.html">MSSA/SVFGBuilder.h</a>&quot;</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="Andersen_8h.html">WPA/Andersen.h</a>&quot;</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="SCC_8h.html">Util/SCC.h</a>&quot;</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="PointsTo_8h.html">MemoryModel/PointsTo.h</a>&quot;</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="preprocessor">#include &lt;algorithm&gt;</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;{</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> CVar, <span class="keyword">class</span> CPtSet, <span class="keyword">class</span> DPIm&gt;</div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html"> 47</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1DDAVFSolver.html">DDAVFSolver</a></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"><a class="line" href="classSVF_1_1DDAVFSolver.html#af83f88f2ae2456f2691e8822d56b1598"> 49</a></span>&#160; <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classSVF_1_1DDAStat.html">DDAStat</a>;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a502207f81ed22fa42f9e18ccba83ad4e"> 51</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1SCCDetection.html">SCCDetection&lt;SVFG*&gt;</a> <a class="code" href="classSVF_1_1DDAVFSolver.html#a502207f81ed22fa42f9e18ccba83ad4e">SVFGSCC</a>;</div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#af6e05e87ba8d6b6ae65807803b1b0221"> 52</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1SCCDetection.html">SCCDetection&lt;PTACallGraph*&gt;</a> <a class="code" href="classSVF_1_1DDAVFSolver.html#af6e05e87ba8d6b6ae65807803b1b0221">CallGraphSCC</a>;</div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#ac227096ad71dfda8bc48c139fccb3af2"> 53</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1PTACallGraphEdge.html#adbedb15ac0f9395c5264f087a63bad3b">PTACallGraphEdge::CallInstSet</a> <a class="code" href="classSVF_1_1DDAVFSolver.html#ac227096ad71dfda8bc48c139fccb3af2">CallInstSet</a>;</div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a0c590e9d56b6d37cb6e0c9081363a0ef"> 54</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1SVFIR.html#a2b237e55fd8d7fd61eb3ac6968e4a76e">SVFIR::CallSiteSet</a> <a class="code" href="classSVF_1_1DDAVFSolver.html#a0c590e9d56b6d37cb6e0c9081363a0ef">CallSiteSet</a>;</div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a05d6b074b04aad7dc1f3cbe0ca587467"> 55</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a4f21e91ff8eaea5207afe5c60dbd78d7">OrderedSet&lt;DPIm&gt;</a> <a class="code" href="classSVF_1_1DDAVFSolver.html#a05d6b074b04aad7dc1f3cbe0ca587467">DPTItemSet</a>;</div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a8b5a34679fb1362425c88d6e74b6c019"> 56</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#aedf0d6718ca176e0b9e17ab4b30729c6">OrderedMap&lt;DPIm, CPtSet&gt;</a> <a class="code" href="classSVF_1_1DDAVFSolver.html#a8b5a34679fb1362425c88d6e74b6c019">DPImToCPtSetMap</a>;</div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#af0538abf12c01d31a0296553e2f7c92d"> 57</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#aedf0d6718ca176e0b9e17ab4b30729c6">OrderedMap&lt;DPIm,CVar&gt;</a> <a class="code" href="classSVF_1_1DDAVFSolver.html#af0538abf12c01d31a0296553e2f7c92d">DPMToCVarMap</a>;</div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a2ccbcfa949a1796094b5d9499177fc2b"> 58</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#aedf0d6718ca176e0b9e17ab4b30729c6">OrderedMap&lt;DPIm,DPIm&gt;</a> <a class="code" href="classSVF_1_1DDAVFSolver.html#a2ccbcfa949a1796094b5d9499177fc2b">DPMToDPMMap</a>;</div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#aab76f98ae4f0c1f62f101ac5c5fdbf83"> 59</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#aedf0d6718ca176e0b9e17ab4b30729c6">OrderedMap&lt;NodeID, DPTItemSet&gt;</a> <a class="code" href="classSVF_1_1DDAVFSolver.html#aab76f98ae4f0c1f62f101ac5c5fdbf83">LocToDPMVecMap</a>;</div><div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#aef98e8e9144a69bb7481fef5d2dcb303"> 60</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a4f21e91ff8eaea5207afe5c60dbd78d7">OrderedSet&lt;const SVFGEdge* &gt;</a> <a class="code" href="classSVF_1_1DDAVFSolver.html#aef98e8e9144a69bb7481fef5d2dcb303">ConstSVFGEdgeSet</a>;</div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a6489319b33a807f7caba2d34017a3e1b"> 61</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1VFGEdge.html#a557334ef75bb5479b045f68c27b38701">SVFGEdge::SVFGEdgeSetTy</a> <a class="code" href="classSVF_1_1DDAVFSolver.html#a6489319b33a807f7caba2d34017a3e1b">SVFGEdgeSet</a>;</div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#accaacd2dd680f92ff83cfe75eef6ffab"> 62</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#aedf0d6718ca176e0b9e17ab4b30729c6">OrderedMap&lt;const SVFGNode*, DPTItemSet&gt;</a> <a class="code" href="classSVF_1_1DDAVFSolver.html#accaacd2dd680f92ff83cfe75eef6ffab">StoreToPMSetMap</a>;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a7ee96b513074c283d23434590ce15e7d"> 65</a></span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#a7ee96b513074c283d23434590ce15e7d">DDAVFSolver</a>(): <a class="code" href="classSVF_1_1DDAVFSolver.html#afdecfbacc64cb8d694268aa73ec8a7b6">outOfBudgetQuery</a>(<a class="code" href="cJSON_8cpp.html#a65e9886d74aaee76545e83dd09011727">false</a>),<a class="code" href="classSVF_1_1DDAVFSolver.html#a5521918cc06c182c821b9fae8136e4fe">_pag</a>(nullptr),<a class="code" href="classSVF_1_1DDAVFSolver.html#a74d83f06e8fc0ecedc1e1846030c99c6">_svfg</a>(nullptr),<a class="code" href="classSVF_1_1DDAVFSolver.html#aa1d1b6e8cc23f0a6d3935cbe4f02cbdf">_ander</a>(nullptr),<a class="code" href="classSVF_1_1DDAVFSolver.html#abf24080617c6a74abed9f0bb0bc9c0c5">_callGraph</a>(nullptr), <a class="code" href="classSVF_1_1DDAVFSolver.html#a4c307d486756daa1e79595b1e9edc40a">_callGraphSCC</a>(nullptr), <a class="code" href="classSVF_1_1DDAVFSolver.html#a54f5d4972238ae69f19c9da3b9f51644">_svfgSCC</a>(nullptr), <a class="code" href="classSVF_1_1DDAVFSolver.html#ae40c7bad663e0fa07dee4be3d1794ff2">ddaStat</a>(nullptr)</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; {</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; }</div><div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a211f2f0c572d5085d22c2cb40341b606"> 69</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#a211f2f0c572d5085d22c2cb40341b606">~DDAVFSolver</a>()</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; {</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1DDAVFSolver.html#aa1d1b6e8cc23f0a6d3935cbe4f02cbdf">_ander</a> != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; {</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="comment">// AndersenWaveDiff::releaseAndersenWaveDiff();</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#aa1d1b6e8cc23f0a6d3935cbe4f02cbdf">_ander</a> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; }</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; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1DDAVFSolver.html#a74d83f06e8fc0ecedc1e1846030c99c6">_svfg</a> != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; {</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="comment">// DDASVFGBuilder::releaseDDASVFG();</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#a74d83f06e8fc0ecedc1e1846030c99c6">_svfg</a> = <span class="keyword">nullptr</span>;</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;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1DDAVFSolver.html#a54f5d4972238ae69f19c9da3b9f51644">_svfgSCC</a> != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keyword">delete</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#a54f5d4972238ae69f19c9da3b9f51644">_svfgSCC</a>;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#a54f5d4972238ae69f19c9da3b9f51644">_svfgSCC</a> = <span class="keyword">nullptr</span>;</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; <a class="code" href="classSVF_1_1DDAVFSolver.html#abf24080617c6a74abed9f0bb0bc9c0c5">_callGraph</a> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#a4c307d486756daa1e79595b1e9edc40a">_callGraphSCC</a> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; }</div><div class="line"><a name="l00091"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a73bbf4f763316e8d5db62d163da35a18"> 91</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a>&amp; <a class="code" href="classSVF_1_1DDAVFSolver.html#a73bbf4f763316e8d5db62d163da35a18">getCandidateQueries</a>()</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; {</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#ae0e78fafb7eec0fbc1a02d24547335e9">candidateQueries</a>;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; }</div><div class="line"><a name="l00096"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#ad7d92fad8606d5512786a7b7a08930e2"> 96</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> DPIm <a class="code" href="classSVF_1_1DDAVFSolver.html#ad7d92fad8606d5512786a7b7a08930e2">getDPIm</a>(<span class="keyword">const</span> CVar&amp; var, <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* loc)<span class="keyword"> const</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; DPIm dpm(var,loc);</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keywordflow">return</span> dpm;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; }</div><div class="line"><a name="l00102"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a99764ee5bc19378795fe464e9036e78b"> 102</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#a99764ee5bc19378795fe464e9036e78b">unionDDAPts</a>(CPtSet&amp; pts, <span class="keyword">const</span> CPtSet&amp; targetPts)</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; {</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordflow">return</span> (pts |= targetPts);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; }</div><div class="line"><a name="l00107"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#ae7949e141978474f3b6cb510bacafa37"> 107</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#ae7949e141978474f3b6cb510bacafa37">unionDDAPts</a>(DPIm dpm, <span class="keyword">const</span> CPtSet&amp; targetPts)</div><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; CPtSet&amp; pts = <a class="code" href="classSVF_1_1DDAVFSolver.html#a7b35588de00e322afd742041bf735571">isTopLevelPtrStmt</a>(dpm.getLoc()) ? <a class="code" href="classSVF_1_1DDAVFSolver.html#a2d6df8149b45d719e22fc505df94171a">dpmToTLCPtSetMap</a>[dpm] : <a class="code" href="classSVF_1_1DDAVFSolver.html#a2565bf8dcacb22350dc1dc98ec7595f2">dpmToADCPtSetMap</a>[dpm];</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keywordflow">return</span> pts |= targetPts;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; }</div><div class="line"><a name="l00113"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a5a8632a957fce63f186dd8b657566dd2"> 113</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#a5a8632a957fce63f186dd8b657566dd2">addDDAPts</a>(CPtSet&amp; pts, <span class="keyword">const</span> CVar&amp; var)</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; pts.set(var);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; }</div><div class="line"><a name="l00118"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#acb7980c7e0d1d8ad6abab0b80831d2a9"> 118</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1SVFG.html">SVFG</a>* <a class="code" href="classSVF_1_1DDAVFSolver.html#acb7980c7e0d1d8ad6abab0b80831d2a9">getSVFG</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#a74d83f06e8fc0ecedc1e1846030c99c6">_svfg</a>;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; }</div><div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a1fdd7c0efa8f0506edfba2da8f2b3cc0"> 123</a></span>&#160; <span class="keyword">inline</span> SVFGSCC* <a class="code" href="classSVF_1_1DDAVFSolver.html#a1fdd7c0efa8f0506edfba2da8f2b3cc0">getSVFGSCC</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#a54f5d4972238ae69f19c9da3b9f51644">_svfgSCC</a>;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; }</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="comment">// Dump cptsSet</span></div><div class="line"><a name="l00128"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#aa4dc73ea65f736282a413a9d286141e5"> 128</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#aa4dc73ea65f736282a413a9d286141e5">dumpCPtSet</a>(<span class="keyword">const</span> CPtSet&amp; cpts)<span class="keyword"> const</span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;{&quot;</span>;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">typename</span> CPtSet::iterator it = cpts.begin(), eit = cpts.end(); it!=eit; ++it)</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; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; (*it) &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</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; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;}\n&quot;</span>;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; }</div><div class="line"><a name="l00138"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a52737dd41c63404ef91691154aa250ce"> 138</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">const</span> CPtSet&amp; <a class="code" href="classSVF_1_1DDAVFSolver.html#a52737dd41c63404ef91691154aa250ce">findPT</a>(<span class="keyword">const</span> DPIm&amp; dpm)</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; {</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1DDAVFSolver.html#a9a9c3a8b5e4ffc89418073110e446f20">isbkVisited</a>(dpm))</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; <span class="keyword">const</span> CPtSet&amp; cpts = <a class="code" href="classSVF_1_1DDAVFSolver.html#ae31e9281e4f1e0585fdf328b7339e1bf">getCachedPointsTo</a>(dpm);</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a40845b3027a1237076aa8297ca39e730">DDDA</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;\t already backward visited dpm: &quot;</span>);</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a40845b3027a1237076aa8297ca39e730">DDDA</a>, dpm.dump());</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a40845b3027a1237076aa8297ca39e730">DDDA</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;\t return points-to: &quot;</span>);</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a40845b3027a1237076aa8297ca39e730">DDDA</a>, <a class="code" href="classSVF_1_1DDAVFSolver.html#aa4dc73ea65f736282a413a9d286141e5">dumpCPtSet</a>(cpts));</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="keywordflow">return</span> cpts;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; }</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a40845b3027a1237076aa8297ca39e730">DDDA</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;\t backward visit dpm: &quot;</span>);</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a40845b3027a1237076aa8297ca39e730">DDDA</a>, dpm.dump());</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#a7112ce6145be0855f8b035bb0d8a331c">markbkVisited</a>(dpm);</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#af7be3fa6c73dde97d6f9fd0395c9aee0">addDpmToLoc</a>(dpm);</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1DDAVFSolver.html#a3fb52286c5324ea3d58e22c630b307e3">testOutOfBudget</a>(dpm) == <span class="keyword">false</span>)</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; {</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; CPtSet pts;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#a99f631cf1bc438e3f08f7f935e98e38d">handleSingleStatement</a>(dpm, pts);</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#a239a55960dfbbe73df63063070a18b56">updateCachedPointsTo</a>(dpm, pts);</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; }</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#ae31e9281e4f1e0585fdf328b7339e1bf">getCachedPointsTo</a>(dpm);</div><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="keyword">protected</span>:</div><div class="line"><a name="l00170"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a99f631cf1bc438e3f08f7f935e98e38d"> 170</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#a99f631cf1bc438e3f08f7f935e98e38d">handleSingleStatement</a>(<span class="keyword">const</span> DPIm&amp; dpm, CPtSet&amp; pts)</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; {</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#afcc074be34dd0c45418ff16b3d9d4192">resolveFunPtr</a>(dpm);</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; <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node = dpm.getLoc();</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;AddrSVFGNode&gt;(node))</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; <a class="code" href="classSVF_1_1DDAVFSolver.html#acfe7d961caac8f0f558881a9a006b1fa">handleAddr</a>(pts,dpm,SVFUtil::cast&lt;AddrSVFGNode&gt;(node));</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">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;CopySVFGNode&gt;(node) || SVFUtil::isa&lt;PHISVFGNode&gt;(node)</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; || SVFUtil::isa&lt;ActualParmSVFGNode&gt;(node) || SVFUtil::isa&lt;FormalParmSVFGNode&gt;(node)</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; || SVFUtil::isa&lt;ActualRetSVFGNode&gt;(node) || SVFUtil::isa&lt;FormalRetSVFGNode&gt;(node)</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; || SVFUtil::isa&lt;NullPtrSVFGNode&gt;(node))</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; {</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#a7a6af30f30f32d55fc910f2ae4909791">backtraceAlongDirectVF</a>(pts,dpm);</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; }</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;GepSVFGNode&gt;(node))</div><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; CPtSet gepPts;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#a7a6af30f30f32d55fc910f2ae4909791">backtraceAlongDirectVF</a>(gepPts,dpm);</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#a99764ee5bc19378795fe464e9036e78b">unionDDAPts</a>(pts, <a class="code" href="classSVF_1_1DDAVFSolver.html#ab10a34efa1acb6125ea32cf7a8cf919f">processGepPts</a>(SVFUtil::cast&lt;GepSVFGNode&gt;(node),gepPts));</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; }</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;LoadSVFGNode&gt;(node))</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; CPtSet loadpts;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#acd694c2092adf8c516d1aba5f798cec7">startNewPTCompFromLoadSrc</a>(loadpts,dpm);</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">typename</span> CPtSet::iterator it = loadpts.begin(), eit = loadpts.end(); it!=eit; ++it)</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; {</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#a040bc02742836b0a6d46ce3c3e89fa46">backtraceAlongIndirectVF</a>(pts,<a class="code" href="classSVF_1_1DDAVFSolver.html#ac4cb0b666d68d135c5e385bfc880fd67">getDPImWithOldCond</a>(dpm,*it,node));</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; }</div><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; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;StoreSVFGNode&gt;(node))</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="keywordflow">if</span>(<a class="code" href="classSVF_1_1DDAVFSolver.html#a345e5379f53b618adef014aa6887bfe7">isMustAlias</a>(<a class="code" href="classSVF_1_1DDAVFSolver.html#a630aad14a285c954a50c632f9cb13fa9">getLoadDpm</a>(dpm),dpm))</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; {</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a40845b3027a1237076aa8297ca39e730">DDDA</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;+++must alias for load and store:&quot;</span>);</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a40845b3027a1237076aa8297ca39e730">DDDA</a>, <a class="code" href="classSVF_1_1DDAVFSolver.html#a630aad14a285c954a50c632f9cb13fa9">getLoadDpm</a>(dpm).<a class="code" href="namespaceSVF.html#aae350f79ebcb9efd22ec9efa6678cd13">dump</a>());</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a40845b3027a1237076aa8297ca39e730">DDDA</a>, dpm.dump());</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a40845b3027a1237076aa8297ca39e730">DDDA</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;+++\n&quot;</span>);</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <a class="code" href="SVFType_8h.html#a6c9e2209a2c38607a9e3b7fab242886a">DOSTAT</a>(<a class="code" href="classSVF_1_1DDAVFSolver.html#ae40c7bad663e0fa07dee4be3d1794ff2">ddaStat</a>-&gt;<a class="code" href="classSVF_1_1DDAStat.html#a0aec64ca944ea4f914a6fa799b7a8b38">_NumOfMustAliases</a>++);</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#adbd209b4a2327b2b068fbb56e12042f7">backtraceToStoreSrc</a>(pts,dpm);</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></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; CPtSet storepts;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#aff744e724dcf06a2b1cdd7ba2b1093f1">startNewPTCompFromStoreDst</a>(storepts,dpm);</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">typename</span> CPtSet::iterator it = storepts.begin(), eit = storepts.end(); it!=eit; ++it)</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_1DDAVFSolver.html#ace35b8247204d9806ca1a4f01bff2364">propagateViaObj</a>(*it,<a class="code" href="classSVF_1_1DDAVFSolver.html#ad42efad8e857290459689833c224e467">getLoadCVar</a>(dpm)))</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; {</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#adbd209b4a2327b2b068fbb56e12042f7">backtraceToStoreSrc</a>(pts,<a class="code" href="classSVF_1_1DDAVFSolver.html#ac4cb0b666d68d135c5e385bfc880fd67">getDPImWithOldCond</a>(dpm,*it,node));</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">if</span>(<a class="code" href="classSVF_1_1DDAVFSolver.html#a94bcddbc7b9ccecb3fbb693b13372785">isStrongUpdate</a>(storepts,SVFUtil::cast&lt;StoreSVFGNode&gt;(node)))</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; {</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a40845b3027a1237076aa8297ca39e730">DDDA</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;backward strong update for obj &quot;</span> &lt;&lt; dpm.getCurNodeID() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <a class="code" href="SVFType_8h.html#a6c9e2209a2c38607a9e3b7fab242886a">DOSTAT</a>(<a class="code" href="classSVF_1_1DDAVFSolver.html#aeb6b56cf3d140d251b0524eb5cbd6dce">addSUStat</a>(dpm,node);)</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></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; <a class="code" href="SVFType_8h.html#a6c9e2209a2c38607a9e3b7fab242886a">DOSTAT</a>(<a class="code" href="classSVF_1_1DDAVFSolver.html#a7d0775354df32f293e98578ed071d33c">rmSUStat</a>(dpm,node);)</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#a040bc02742836b0a6d46ce3c3e89fa46">backtraceAlongIndirectVF</a>(pts,<a class="code" href="classSVF_1_1DDAVFSolver.html#ac4cb0b666d68d135c5e385bfc880fd67">getDPImWithOldCond</a>(dpm,*it,node));</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; }</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; {</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#a040bc02742836b0a6d46ce3c3e89fa46">backtraceAlongIndirectVF</a>(pts,dpm);</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; }</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">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;MRSVFGNode&gt;(node))</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="classSVF_1_1DDAVFSolver.html#a040bc02742836b0a6d46ce3c3e89fa46">backtraceAlongIndirectVF</a>(pts,dpm);</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; }</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;unexpected kind of SVFG nodes&quot;</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;</div><div class="line"><a name="l00250"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a8c5220108a65fa281959529cb1e9cc57"> 250</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#a8c5220108a65fa281959529cb1e9cc57">reCompute</a>(<span class="keyword">const</span> DPIm&amp; dpm)</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; {</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; SVFGEdgeSet newIndirectEdges;</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1DDAVFSolver.html#a5521918cc06c182c821b9fae8136e4fe">_pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a9235a60e7332c8416e113e7360441d97">isFunPtr</a>(dpm.getCurNodeID()))</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; {</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="keyword">const</span> CallSiteSet&amp; csSet = <a class="code" href="classSVF_1_1DDAVFSolver.html#a5521918cc06c182c821b9fae8136e4fe">_pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#abf209739a97b96ae0d1c8451fdc684e8">getIndCallSites</a>(dpm.getCurNodeID());</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; <span class="keywordflow">for</span>(CallSiteSet::const_iterator it = csSet.begin(), eit = csSet.end(); it!=eit; ++it)</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#a637dddedd96942d56de6fd6d10c09169">updateCallGraphAndSVFG</a>(dpm, (*it),newIndirectEdges);</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; }</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <span class="keywordflow">if</span>(!newIndirectEdges.empty())</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#a4c307d486756daa1e79595b1e9edc40a">_callGraphSCC</a>-&gt;<a class="code" href="classSVF_1_1SCCDetection.html#a123b5006a6da7053e5e357140da3c5a3">find</a>();</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#ace037388135f272365cee2e87844bfba">reComputeForEdges</a>(dpm,newIndirectEdges,<span class="keyword">true</span>);</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160;</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; SVFGEdgeSet edgeSet(dpm.getLoc()-&gt;getOutEdges());</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#ace037388135f272365cee2e87844bfba">reComputeForEdges</a>(dpm,edgeSet,<span class="keyword">false</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;</div><div class="line"><a name="l00271"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#ace037388135f272365cee2e87844bfba"> 271</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#ace037388135f272365cee2e87844bfba">reComputeForEdges</a>(<span class="keyword">const</span> DPIm&amp; dpm, <span class="keyword">const</span> SVFGEdgeSet&amp; edgeSet, <span class="keywordtype">bool</span> indirectCall = <span class="keyword">false</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">for</span> (<a class="code" href="classSVF_1_1VFGNode.html#a3c558955f60c237c558d8faafed781e8">SVFGNode::const_iterator</a> it = edgeSet.begin(), eit = edgeSet.end(); it != eit; ++it)</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="keyword">const</span> <a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* edge = *it;</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* dst = edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>();</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <span class="keyword">typename</span> LocToDPMVecMap::const_iterator locIt = <a class="code" href="classSVF_1_1DDAVFSolver.html#ad849ae4509e88832f784c748468ab959">getLocToDPMVecMap</a>().find(dst-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>());</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <span class="keywordflow">if</span> (locIt == <a class="code" href="classSVF_1_1DDAVFSolver.html#ad849ae4509e88832f784c748468ab959">getLocToDPMVecMap</a>().end())</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; DPTItemSet dpmSet(locIt-&gt;second.begin(), locIt-&gt;second.end());</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">typename</span> DPTItemSet::const_iterator it = dpmSet.begin(),eit = dpmSet.end(); it!=eit; ++it)</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; <span class="keyword">const</span> DPIm&amp; dstDpm = *it;</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <span class="keywordflow">if</span>(!indirectCall &amp;&amp; SVFUtil::isa&lt;IndirectSVFGEdge&gt;(edge) &amp;&amp; !SVFUtil::isa&lt;LoadSVFGNode&gt;(edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>()))</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; <span class="keywordflow">if</span>(dstDpm.getCurNodeID() == dpm.getCurNodeID())</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; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a40845b3027a1237076aa8297ca39e730">DDDA</a>,<a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;\t Recompute, forward from :&quot;</span>);</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a40845b3027a1237076aa8297ca39e730">DDDA</a>, dpm.dump());</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <a class="code" href="SVFType_8h.html#a6c9e2209a2c38607a9e3b7fab242886a">DOSTAT</a>(<a class="code" href="classSVF_1_1DDAVFSolver.html#ae40c7bad663e0fa07dee4be3d1794ff2">ddaStat</a>-&gt;<a class="code" href="classSVF_1_1DDAStat.html#aa9daed44e9d2ca2722ea9ab9d4517a21">_NumOfStepInCycle</a>++);</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#aa7e5839c5bc6f913561de10bce61e74b">clearbkVisited</a>(dstDpm);</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#a52737dd41c63404ef91691154aa250ce">findPT</a>(dstDpm);</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; }</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; }</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; <span class="keywordflow">if</span>(indirectCall)</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a40845b3027a1237076aa8297ca39e730">DDDA</a>,<a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;\t Recompute for indirect call from :&quot;</span>);</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a40845b3027a1237076aa8297ca39e730">DDDA</a>,<a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;\t Recompute forward from :&quot;</span>);</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a40845b3027a1237076aa8297ca39e730">DDDA</a>, dpm.dump());</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <a class="code" href="SVFType_8h.html#a6c9e2209a2c38607a9e3b7fab242886a">DOSTAT</a>(<a class="code" href="classSVF_1_1DDAVFSolver.html#ae40c7bad663e0fa07dee4be3d1794ff2">ddaStat</a>-&gt;<a class="code" href="classSVF_1_1DDAStat.html#aa9daed44e9d2ca2722ea9ab9d4517a21">_NumOfStepInCycle</a>++);</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#aa7e5839c5bc6f913561de10bce61e74b">clearbkVisited</a>(dstDpm);</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#a52737dd41c63404ef91691154aa250ce">findPT</a>(dstDpm);</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; }</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; }</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; }</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; }</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160;</div><div class="line"><a name="l00312"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#af34ed8482d3737a8aaaff2d5c75960ec"> 312</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#af34ed8482d3737a8aaaff2d5c75960ec">buildSVFG</a>(<a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* pag)</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; {</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#aa1d1b6e8cc23f0a6d3935cbe4f02cbdf">_ander</a> = <a class="code" href="classSVF_1_1AndersenWaveDiff.html#a48ff6fc4badc79ad3204ae9bd95cc540">AndersenWaveDiff::createAndersenWaveDiff</a>(pag);</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#a74d83f06e8fc0ecedc1e1846030c99c6">_svfg</a> = <a class="code" href="classSVF_1_1DDAVFSolver.html#a0d563fe8b016b27a58f5b054fec9c38a">svfgBuilder</a>.<a class="code" href="classSVF_1_1SVFGBuilder.html#ab7353191edd06568e2598177d253c1d9">buildPTROnlySVFG</a>(<a class="code" href="classSVF_1_1DDAVFSolver.html#aa1d1b6e8cc23f0a6d3935cbe4f02cbdf">_ander</a>);</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#a5521918cc06c182c821b9fae8136e4fe">_pag</a> = <a class="code" href="classSVF_1_1DDAVFSolver.html#a74d83f06e8fc0ecedc1e1846030c99c6">_svfg</a>-&gt;<a class="code" href="classSVF_1_1VFG.html#a7622e381fbc1601b3f9a8384df2751bd">getPAG</a>();</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; }</div><div class="line"><a name="l00319"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#afe518d3d7f8051de5b9860f2460aa1b7"> 319</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#afe518d3d7f8051de5b9860f2460aa1b7">resetQuery</a>()</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; {</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1DDAVFSolver.html#afdecfbacc64cb8d694268aa73ec8a7b6">outOfBudgetQuery</a>)</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#ab60c701f1881d88aa4440991fb972638">OOBResetVisited</a>();</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160;</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#aa724698d499615bce7caf8f312b746a7">locToDpmSetMap</a>.clear();</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#a9d8959dfee05685cd74d0d7a78069692">dpmToloadDpmMap</a>.clear();</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#a6d62420837fe0c7814fc4da68a91eda4">loadToPTCVarMap</a>.clear();</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#afdecfbacc64cb8d694268aa73ec8a7b6">outOfBudgetQuery</a> = <span class="keyword">false</span>;</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#ae40c7bad663e0fa07dee4be3d1794ff2">ddaStat</a>-&gt;<a class="code" href="classSVF_1_1DDAStat.html#a674248754300d58fcef8eaf09436249e">_NumOfStep</a> = 0;</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; }</div><div class="line"><a name="l00331"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#ab60c701f1881d88aa4440991fb972638"> 331</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#ab60c701f1881d88aa4440991fb972638">OOBResetVisited</a>()</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; {</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">typename</span> LocToDPMVecMap::const_iterator it = <a class="code" href="classSVF_1_1DDAVFSolver.html#aa724698d499615bce7caf8f312b746a7">locToDpmSetMap</a>.begin(),eit = <a class="code" href="classSVF_1_1DDAVFSolver.html#aa724698d499615bce7caf8f312b746a7">locToDpmSetMap</a>.end(); it!=eit; ++it)</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; {</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; DPTItemSet dpmSet(it-&gt;second.begin(), it-&gt;second.end());</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">typename</span> DPTItemSet::const_iterator dit = dpmSet.begin(),deit=dpmSet.end(); dit!=deit; ++dit)</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1DDAVFSolver.html#a0b1f774883adc7d535f8363bf3c8b1e8">isOutOfBudgetDpm</a>(*dit)==<span class="keyword">false</span>)</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#aa7e5839c5bc6f913561de10bce61e74b">clearbkVisited</a>(*dit);</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; }</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; }</div><div class="line"><a name="l00342"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a55803a2d30137b5ad15c5afeec7c6b28"> 342</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* <a class="code" href="classSVF_1_1DDAVFSolver.html#a55803a2d30137b5ad15c5afeec7c6b28">getDefSVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* pagNode)<span class="keyword"> const</span></div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#acb7980c7e0d1d8ad6abab0b80831d2a9">getSVFG</a>()-&gt;<a class="code" href="classSVF_1_1SVFG.html#a8e7a945f4266e8dc7dcfff2ad6494bfb">getDefSVFGNode</a>(pagNode);</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; }</div><div class="line"><a name="l00347"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a040bc02742836b0a6d46ce3c3e89fa46"> 347</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#a040bc02742836b0a6d46ce3c3e89fa46">backtraceAlongIndirectVF</a>(CPtSet&amp; pts, <span class="keyword">const</span> DPIm&amp; oldDpm)</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; {</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node = oldDpm.getLoc();</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> obj = oldDpm.getCurNodeID();</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1DDAVFSolver.html#a5521918cc06c182c821b9fae8136e4fe">_pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a5d15e4b09784f438568ebe61f8aa5156">isConstantObj</a>(obj) || <a class="code" href="classSVF_1_1DDAVFSolver.html#a5521918cc06c182c821b9fae8136e4fe">_pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a980e54129ece0757d7f0373f37428507">isNonPointerObj</a>(obj))</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <span class="keyword">const</span> SVFGEdgeSet edgeSet(node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">getInEdges</a>());</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1VFGNode.html#a3c558955f60c237c558d8faafed781e8">SVFGNode::const_iterator</a> it = edgeSet.begin(), eit = edgeSet.end(); it != eit; ++it)</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; {</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1IndirectSVFGEdge.html">IndirectSVFGEdge</a>* indirEdge = SVFUtil::dyn_cast&lt;IndirectSVFGEdge&gt;(*it))</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; {</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a>&amp; guard = indirEdge-&gt;getPointsTo();</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; <span class="keywordflow">if</span>(guard.<a class="code" href="classSVF_1_1SparseBitVector.html#a112f2ede1240c95f9fe810f2882fab80">test</a>(obj))</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; {</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a40845b3027a1237076aa8297ca39e730">DDDA</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;\t\t==backtrace indirectVF svfgNode &quot;</span> &lt;&lt;</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; indirEdge-&gt;getDstID() &lt;&lt; <span class="stringliteral">&quot; --&gt; &quot;</span> &lt;&lt; indirEdge-&gt;getSrcID() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#af6a6243b497df5fdab9f658b9add9c8a">backwardPropDpm</a>(pts,oldDpm.getCurNodeID(),oldDpm,indirEdge);</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; }</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; }</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; }</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; }</div><div class="line"><a name="l00369"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a7a6af30f30f32d55fc910f2ae4909791"> 369</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#a7a6af30f30f32d55fc910f2ae4909791">backtraceAlongDirectVF</a>(CPtSet&amp; pts, <span class="keyword">const</span> DPIm&amp; oldDpm)</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; {</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node = oldDpm.getLoc();</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <span class="keyword">const</span> SVFGEdgeSet edgeSet(node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">getInEdges</a>());</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1VFGNode.html#a3c558955f60c237c558d8faafed781e8">SVFGNode::const_iterator</a> it = edgeSet.begin(), eit = edgeSet.end(); it != eit; ++it)</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; {</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1DirectSVFGEdge.html">DirectSVFGEdge</a>* dirEdge = SVFUtil::dyn_cast&lt;DirectSVFGEdge&gt;(*it))</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; {</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a40845b3027a1237076aa8297ca39e730">DDDA</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;\t\t==backtrace directVF svfgNode &quot;</span> &lt;&lt;</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; dirEdge-&gt;getDstID() &lt;&lt; <span class="stringliteral">&quot; --&gt; &quot;</span> &lt;&lt; dirEdge-&gt;getSrcID() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* srcNode = dirEdge-&gt;getSrcNode();</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#af6a6243b497df5fdab9f658b9add9c8a">backwardPropDpm</a>(pts,<a class="code" href="classSVF_1_1DDAVFSolver.html#acb7980c7e0d1d8ad6abab0b80831d2a9">getSVFG</a>()-&gt;getLHSTopLevPtr(srcNode)-&gt;getId(),oldDpm,dirEdge);</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; }</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; }</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; }</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160;</div><div class="line"><a name="l00387"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#acd694c2092adf8c516d1aba5f798cec7"> 387</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#acd694c2092adf8c516d1aba5f798cec7">startNewPTCompFromLoadSrc</a>(CPtSet&amp; pts, <span class="keyword">const</span> DPIm&amp; oldDpm)</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; {</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1LoadVFGNode.html">LoadSVFGNode</a>* load = SVFUtil::cast&lt;LoadSVFGNode&gt;(oldDpm.getLoc());</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* loadSrc = <a class="code" href="classSVF_1_1DDAVFSolver.html#a55803a2d30137b5ad15c5afeec7c6b28">getDefSVFGNode</a>(load-&gt;<a class="code" href="classSVF_1_1StmtVFGNode.html#a837da5917c31e14aa51c6fa3e2640849">getPAGSrcNode</a>());</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a40845b3027a1237076aa8297ca39e730">DDDA</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;!##start new computation from loadSrc svfgNode &quot;</span> &lt;&lt;</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; load-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>() &lt;&lt; <span class="stringliteral">&quot; --&gt; &quot;</span> &lt;&lt; loadSrc-&gt;getId() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* edge = <a class="code" href="classSVF_1_1DDAVFSolver.html#acb7980c7e0d1d8ad6abab0b80831d2a9">getSVFG</a>()-&gt;<a class="code" href="classSVF_1_1VFG.html#ae1348fd6d196ee8a6bd8d98022464d50">getIntraVFGEdge</a>(loadSrc,load,<a class="code" href="classSVF_1_1VFGEdge.html#a156ae6a8b3a033f505c18c6b162e7cf5a08201e6cbff4817e44568747a966b71d">SVFGEdge::IntraDirectVF</a>);</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; assert(edge &amp;&amp; <span class="stringliteral">&quot;Edge not found!!&quot;</span>);</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#af6a6243b497df5fdab9f658b9add9c8a">backwardPropDpm</a>(pts,load-&gt;<a class="code" href="classSVF_1_1StmtVFGNode.html#a791a01f5d3528f8a8bf19369b5c61c37">getPAGSrcNodeID</a>(),oldDpm,edge);</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160;</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; }</div><div class="line"><a name="l00398"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#aff744e724dcf06a2b1cdd7ba2b1093f1"> 398</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#aff744e724dcf06a2b1cdd7ba2b1093f1">startNewPTCompFromStoreDst</a>(CPtSet&amp; pts, <span class="keyword">const</span> DPIm&amp; oldDpm)</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; {</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1StoreVFGNode.html">StoreSVFGNode</a>* store = SVFUtil::cast&lt;StoreSVFGNode&gt;(oldDpm.getLoc());</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* storeDst = <a class="code" href="classSVF_1_1DDAVFSolver.html#a55803a2d30137b5ad15c5afeec7c6b28">getDefSVFGNode</a>(store-&gt;<a class="code" href="classSVF_1_1StmtVFGNode.html#a8ba0e783f7fcbfa7cbd1d3a709ffa07f">getPAGDstNode</a>());</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a40845b3027a1237076aa8297ca39e730">DDDA</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;!##start new computation from storeDst svfgNode &quot;</span> &lt;&lt;</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; store-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>() &lt;&lt; <span class="stringliteral">&quot; --&gt; &quot;</span> &lt;&lt; storeDst-&gt;getId() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* edge = <a class="code" href="classSVF_1_1DDAVFSolver.html#acb7980c7e0d1d8ad6abab0b80831d2a9">getSVFG</a>()-&gt;<a class="code" href="classSVF_1_1VFG.html#ae1348fd6d196ee8a6bd8d98022464d50">getIntraVFGEdge</a>(storeDst,store,<a class="code" href="classSVF_1_1VFGEdge.html#a156ae6a8b3a033f505c18c6b162e7cf5a08201e6cbff4817e44568747a966b71d">SVFGEdge::IntraDirectVF</a>);</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; assert(edge &amp;&amp; <span class="stringliteral">&quot;Edge not found!!&quot;</span>);</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#af6a6243b497df5fdab9f658b9add9c8a">backwardPropDpm</a>(pts,store-&gt;<a class="code" href="classSVF_1_1StmtVFGNode.html#a04986961ad507be9fcf141ab51787da8">getPAGDstNodeID</a>(),oldDpm,edge);</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; }</div><div class="line"><a name="l00408"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#adbd209b4a2327b2b068fbb56e12042f7"> 408</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#adbd209b4a2327b2b068fbb56e12042f7">backtraceToStoreSrc</a>(CPtSet&amp; pts, <span class="keyword">const</span> DPIm&amp; oldDpm)</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; {</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1StoreVFGNode.html">StoreSVFGNode</a>* store = SVFUtil::cast&lt;StoreSVFGNode&gt;(oldDpm.getLoc());</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* storeSrc = <a class="code" href="classSVF_1_1DDAVFSolver.html#a55803a2d30137b5ad15c5afeec7c6b28">getDefSVFGNode</a>(store-&gt;<a class="code" href="classSVF_1_1StmtVFGNode.html#a837da5917c31e14aa51c6fa3e2640849">getPAGSrcNode</a>());</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a40845b3027a1237076aa8297ca39e730">DDDA</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;++backtrace to storeSrc from svfgNode &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1DDAVFSolver.html#a630aad14a285c954a50c632f9cb13fa9">getLoadDpm</a>(oldDpm).getLoc()-&gt;getId() &lt;&lt; <span class="stringliteral">&quot; to &quot;</span>&lt;&lt;</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; store-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>() &lt;&lt; <span class="stringliteral">&quot; to &quot;</span> &lt;&lt; storeSrc-&gt;getId() &lt;&lt;<span class="stringliteral">&quot;\n&quot;</span>);</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* edge = <a class="code" href="classSVF_1_1DDAVFSolver.html#acb7980c7e0d1d8ad6abab0b80831d2a9">getSVFG</a>()-&gt;<a class="code" href="classSVF_1_1VFG.html#ae1348fd6d196ee8a6bd8d98022464d50">getIntraVFGEdge</a>(storeSrc,store,<a class="code" href="classSVF_1_1VFGEdge.html#a156ae6a8b3a033f505c18c6b162e7cf5a08201e6cbff4817e44568747a966b71d">SVFGEdge::IntraDirectVF</a>);</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; assert(edge &amp;&amp; <span class="stringliteral">&quot;Edge not found!!&quot;</span>);</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#af6a6243b497df5fdab9f658b9add9c8a">backwardPropDpm</a>(pts,store-&gt;<a class="code" href="classSVF_1_1StmtVFGNode.html#a791a01f5d3528f8a8bf19369b5c61c37">getPAGSrcNodeID</a>(),oldDpm,edge);</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; }</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160;</div><div class="line"><a name="l00421"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#af6a6243b497df5fdab9f658b9add9c8a"> 421</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#af6a6243b497df5fdab9f658b9add9c8a">backwardPropDpm</a>(CPtSet&amp; pts, <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> ptr,<span class="keyword">const</span> DPIm&amp; oldDpm,<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* edge)</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; {</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; DPIm dpm(oldDpm);</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; dpm.setLocVar(edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>(),ptr);</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <a class="code" href="SVFType_8h.html#ab6f41e9db3675dc689c5492418885041">DOTIMESTAT</a>(<span class="keywordtype">double</span> start = <a class="code" href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">DDAStat::getClk</a>(<span class="keyword">true</span>));</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1DDAVFSolver.html#a601282325e55badc15f3ba9141816af5">handleBKCondition</a>(dpm,edge)==<span class="keyword">false</span>)</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; {</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; <a class="code" href="SVFType_8h.html#ab6f41e9db3675dc689c5492418885041">DOTIMESTAT</a>(<a class="code" href="classSVF_1_1DDAVFSolver.html#ae40c7bad663e0fa07dee4be3d1794ff2">ddaStat</a>-&gt;<a class="code" href="classSVF_1_1DDAStat.html#a9625c4623acc4f6ccaca1ec8f04f5a54">_TotalTimeOfBKCondition</a> += <a class="code" href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">DDAStat::getClk</a>(<span class="keyword">true</span>) - start);</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a40845b3027a1237076aa8297ca39e730">DDDA</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;\t!!! infeasible path svfgNode: &quot;</span> &lt;&lt; edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">getDstID</a>() &lt;&lt; <span class="stringliteral">&quot; --| &quot;</span> &lt;&lt; edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">getSrcID</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; <a class="code" href="SVFType_8h.html#a6c9e2209a2c38607a9e3b7fab242886a">DOSTAT</a>(<a class="code" href="classSVF_1_1DDAVFSolver.html#ae40c7bad663e0fa07dee4be3d1794ff2">ddaStat</a>-&gt;<a class="code" href="classSVF_1_1DDAStat.html#a5ebc592d6bd7ef40aff848fb63e9e166">_NumOfInfeasiblePath</a>++);</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; }</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160;</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;IndirectSVFGEdge&gt;(edge))</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#a1cd1023bca18db16bc54e622c881e494">addLoadDpmAndCVar</a>(dpm,<a class="code" href="classSVF_1_1DDAVFSolver.html#a630aad14a285c954a50c632f9cb13fa9">getLoadDpm</a>(oldDpm),<a class="code" href="classSVF_1_1DDAVFSolver.html#ad42efad8e857290459689833c224e467">getLoadCVar</a>(oldDpm));</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160;</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; <a class="code" href="SVFType_8h.html#a6c9e2209a2c38607a9e3b7fab242886a">DOSTAT</a>(<a class="code" href="classSVF_1_1DDAVFSolver.html#ae40c7bad663e0fa07dee4be3d1794ff2">ddaStat</a>-&gt;<a class="code" href="classSVF_1_1DDAStat.html#a5ad94d2109b293d306f67741effc73aa">_NumOfDPM</a>++);</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#a99764ee5bc19378795fe464e9036e78b">unionDDAPts</a>(pts,<a class="code" href="classSVF_1_1DDAVFSolver.html#a52737dd41c63404ef91691154aa250ce">findPT</a>(dpm));</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; }</div><div class="line"><a name="l00444"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a345e5379f53b618adef014aa6887bfe7"> 444</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#a345e5379f53b618adef014aa6887bfe7">isMustAlias</a>(<span class="keyword">const</span> DPIm&amp;, <span class="keyword">const</span> DPIm&amp;)</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; {</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; }</div><div class="line"><a name="l00449"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a94bcddbc7b9ccecb3fbb693b13372785"> 449</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#a94bcddbc7b9ccecb3fbb693b13372785">isStrongUpdate</a>(<span class="keyword">const</span> CPtSet&amp; dstCPSet, <span class="keyword">const</span> <a class="code" href="classSVF_1_1StoreVFGNode.html">StoreSVFGNode</a>* store)</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; {</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; <span class="keywordflow">if</span> (dstCPSet.count() == 1)</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; {</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; <span class="keyword">typename</span> CPtSet::iterator it = dstCPSet.begin();</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; <span class="keyword">const</span> CVar&amp; var = *it;</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; <span class="comment">// Strong update can be made if this points-to target is not heap, array or field-insensitive.</span></div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1DDAVFSolver.html#a645c7d0637b49e139898016ff652e1f3">isHeapCondMemObj</a>(var,store) &amp;&amp; !<a class="code" href="classSVF_1_1DDAVFSolver.html#a9aaa5ee3dc8abc51c4b6e463e1949ee7">isArrayCondMemObj</a>(var)</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; &amp;&amp; !<a class="code" href="classSVF_1_1DDAVFSolver.html#a37a6321f50bef2939b287cc088e76170">isFieldInsenCondMemObj</a>(var) &amp;&amp; !<a class="code" href="classSVF_1_1DDAVFSolver.html#a20cadb651b41343437e135e985c4e566">isLocalCVarInRecursion</a>(var))</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; {</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; }</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; }</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; }</div><div class="line"><a name="l00466"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a20cadb651b41343437e135e985c4e566"> 466</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#a20cadb651b41343437e135e985c4e566">isLocalCVarInRecursion</a>(<span class="keyword">const</span> CVar&amp; var)<span class="keyword"> const</span></div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> <span class="keywordtype">id</span> = <a class="code" href="classSVF_1_1DDAVFSolver.html#a3fa002d4ba4194ffde62ecbdd361a24d">getPtrNodeID</a>(var);</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* obj = <a class="code" href="classSVF_1_1DDAVFSolver.html#a5521918cc06c182c821b9fae8136e4fe">_pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a2dd4d5f704906270af13e7a07f900eb1">getObject</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; assert(obj &amp;&amp; <span class="stringliteral">&quot;object not found!!&quot;</span>);</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <span class="keywordflow">if</span>(obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#af7316c697eafc71d5fc93108da4e2cee">isStack</a>())</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; {</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svffun = <a class="code" href="classSVF_1_1DDAVFSolver.html#a5521918cc06c182c821b9fae8136e4fe">_pag</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(<span class="keywordtype">id</span>)-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a79b35a312248e96a89a28cbf1b99b6fe">getFunction</a>())</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; {</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#a4c307d486756daa1e79595b1e9edc40a">_callGraphSCC</a>-&gt;<a class="code" href="classSVF_1_1SCCDetection.html#a5d699af73b1e7ad4e3a5f6d26b8b6d15">isInCycle</a>(<a class="code" href="classSVF_1_1DDAVFSolver.html#abf24080617c6a74abed9f0bb0bc9c0c5">_callGraph</a>-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">getCallGraphNode</a>(svffun)-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>());</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; }</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; }</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; }</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160;</div><div class="line"><a name="l00482"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#ace35b8247204d9806ca1a4f01bff2364"> 482</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#ace35b8247204d9806ca1a4f01bff2364">propagateViaObj</a>(<span class="keyword">const</span> CVar&amp; storeObj, <span class="keyword">const</span> CVar&amp; loadObj)</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; {</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1DDAVFSolver.html#a3fa002d4ba4194ffde62ecbdd361a24d">getPtrNodeID</a>(storeObj) == <a class="code" href="classSVF_1_1DDAVFSolver.html#a3fa002d4ba4194ffde62ecbdd361a24d">getPtrNodeID</a>(loadObj))</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; }</div><div class="line"><a name="l00489"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#afcc074be34dd0c45418ff16b3d9d4192"> 489</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#afcc074be34dd0c45418ff16b3d9d4192">resolveFunPtr</a>(<span class="keyword">const</span> DPIm&amp; dpm)</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; {</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cbn= <a class="code" href="classSVF_1_1DDAVFSolver.html#acb7980c7e0d1d8ad6abab0b80831d2a9">getSVFG</a>()-&gt;isCallSiteRetSVFGNode(dpm.getLoc()))</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; {</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1DDAVFSolver.html#a5521918cc06c182c821b9fae8136e4fe">_pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a3dbe0b17694daa74f648a70e77efaf23">isIndirectCallSites</a>(cbn))</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; {</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> funPtr = <a class="code" href="classSVF_1_1DDAVFSolver.html#a5521918cc06c182c821b9fae8136e4fe">_pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a17c5d9fa7c0bd3cd03c06b5ff0906eb6">getFunPtr</a>(cbn);</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; DPIm funPtrDpm(dpm);</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; funPtrDpm.setLocVar(<a class="code" href="classSVF_1_1DDAVFSolver.html#acb7980c7e0d1d8ad6abab0b80831d2a9">getSVFG</a>()-&gt;<a class="code" href="classSVF_1_1DDAVFSolver.html#a55803a2d30137b5ad15c5afeec7c6b28">getDefSVFGNode</a>(<a class="code" href="classSVF_1_1DDAVFSolver.html#a5521918cc06c182c821b9fae8136e4fe">_pag</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(funPtr)),funPtr);</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#a52737dd41c63404ef91691154aa250ce">findPT</a>(funPtrDpm);</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; }</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; }</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun = <a class="code" href="classSVF_1_1DDAVFSolver.html#acb7980c7e0d1d8ad6abab0b80831d2a9">getSVFG</a>()-&gt;isFunEntrySVFGNode(dpm.getLoc()))</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; {</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; CallInstSet csSet;</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#aa1d1b6e8cc23f0a6d3935cbe4f02cbdf">_ander</a>-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a7c9b7e5fe37ae31ba84d167945ca57df">getPTACallGraph</a>()-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#a9a4b0c6672288b9201ab254b4c49548d">getIndCallSitesInvokingCallee</a>(fun,csSet);</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; <span class="keywordflow">for</span>(CallInstSet::const_iterator it = csSet.begin(), eit = csSet.end(); it!=eit; ++it)</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; {</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> funPtr = <a class="code" href="classSVF_1_1DDAVFSolver.html#a5521918cc06c182c821b9fae8136e4fe">_pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a17c5d9fa7c0bd3cd03c06b5ff0906eb6">getFunPtr</a>(*it);</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; DPIm funPtrDpm(dpm);</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; funPtrDpm.setLocVar(<a class="code" href="classSVF_1_1DDAVFSolver.html#acb7980c7e0d1d8ad6abab0b80831d2a9">getSVFG</a>()-&gt;<a class="code" href="classSVF_1_1DDAVFSolver.html#a55803a2d30137b5ad15c5afeec7c6b28">getDefSVFGNode</a>(<a class="code" href="classSVF_1_1DDAVFSolver.html#a5521918cc06c182c821b9fae8136e4fe">_pag</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(funPtr)),funPtr);</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#a52737dd41c63404ef91691154aa250ce">findPT</a>(funPtrDpm);</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; }</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; }</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; }</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160;</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; <span class="keyword">virtual</span> <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> <a class="code" href="classSVF_1_1DDAVFSolver.html#a3fa002d4ba4194ffde62ecbdd361a24d">getPtrNodeID</a>(<span class="keyword">const</span> CVar&amp; var) <span class="keyword">const</span> = 0;</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; <span class="keyword">virtual</span> CPtSet <a class="code" href="classSVF_1_1DDAVFSolver.html#ab10a34efa1acb6125ea32cf7a8cf919f">processGepPts</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1GepVFGNode.html">GepSVFGNode</a>* gep, <span class="keyword">const</span> CPtSet&amp; srcPts) = 0;</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#acfe7d961caac8f0f558881a9a006b1fa">handleAddr</a>(CPtSet&amp; pts,<span class="keyword">const</span> DPIm&amp; dpm,<span class="keyword">const</span> <a class="code" href="classSVF_1_1AddrVFGNode.html">AddrSVFGNode</a>* addr) = 0;</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; <span class="keyword">virtual</span> CPtSet <a class="code" href="classSVF_1_1DDAVFSolver.html#a38f5a6b666b2a427d55f1217f9c5595f">getConservativeCPts</a>(<span class="keyword">const</span> DPIm&amp; dpm) = 0;</div><div class="line"><a name="l00526"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a601282325e55badc15f3ba9141816af5"> 526</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#a601282325e55badc15f3ba9141816af5">handleBKCondition</a>(DPIm&amp;, <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>*)</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; {</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; }</div><div class="line"><a name="l00531"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a637dddedd96942d56de6fd6d10c09169"> 531</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#a637dddedd96942d56de6fd6d10c09169">updateCallGraphAndSVFG</a>(<span class="keyword">const</span> DPIm&amp;, <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>*, SVFGEdgeSet&amp;) {}</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160;</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160;</div><div class="line"><a name="l00536"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a7112ce6145be0855f8b035bb0d8a331c"> 536</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#a7112ce6145be0855f8b035bb0d8a331c">markbkVisited</a>(<span class="keyword">const</span> DPIm&amp; dpm)</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; {</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#a63d04c3af4529d0e0f82acd76ed57f6c">backwardVisited</a>.insert(dpm);</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; }</div><div class="line"><a name="l00540"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a9a9c3a8b5e4ffc89418073110e446f20"> 540</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#a9a9c3a8b5e4ffc89418073110e446f20">isbkVisited</a>(<span class="keyword">const</span> DPIm&amp; dpm)</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; {</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#a63d04c3af4529d0e0f82acd76ed57f6c">backwardVisited</a>.find(dpm)!=<a class="code" href="classSVF_1_1DDAVFSolver.html#a63d04c3af4529d0e0f82acd76ed57f6c">backwardVisited</a>.end();</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; }</div><div class="line"><a name="l00544"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#aa7e5839c5bc6f913561de10bce61e74b"> 544</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#aa7e5839c5bc6f913561de10bce61e74b">clearbkVisited</a>(<span class="keyword">const</span> DPIm&amp; dpm)</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; {</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; assert(<a class="code" href="classSVF_1_1DDAVFSolver.html#a63d04c3af4529d0e0f82acd76ed57f6c">backwardVisited</a>.find(dpm)!=<a class="code" href="classSVF_1_1DDAVFSolver.html#a63d04c3af4529d0e0f82acd76ed57f6c">backwardVisited</a>.end() &amp;&amp; <span class="stringliteral">&quot;dpm not found!&quot;</span>);</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#a63d04c3af4529d0e0f82acd76ed57f6c">backwardVisited</a>.erase(dpm);</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; }</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160;</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160;</div><div class="line"><a name="l00553"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#ae31e9281e4f1e0585fdf328b7339e1bf"> 553</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keyword">const</span> CPtSet&amp; <a class="code" href="classSVF_1_1DDAVFSolver.html#ae31e9281e4f1e0585fdf328b7339e1bf">getCachedPointsTo</a>(<span class="keyword">const</span> DPIm&amp; dpm)</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; {</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1DDAVFSolver.html#a7b35588de00e322afd742041bf735571">isTopLevelPtrStmt</a>(dpm.getLoc()))</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#aac432dfa7ccfc3434d9e0e2eb65afe7f">getCachedTLPointsTo</a>(dpm);</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#a2a2b3783074c9f509fc265b97b979704">getCachedADPointsTo</a>(dpm);</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; }</div><div class="line"><a name="l00560"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a239a55960dfbbe73df63063070a18b56"> 560</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#a239a55960dfbbe73df63063070a18b56">updateCachedPointsTo</a>(<span class="keyword">const</span> DPIm&amp; dpm, <span class="keyword">const</span> CPtSet&amp; pts)</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; {</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1DDAVFSolver.html#a99764ee5bc19378795fe464e9036e78b">unionDDAPts</a>(dpm, pts))</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; {</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; <a class="code" href="SVFType_8h.html#a6c9e2209a2c38607a9e3b7fab242886a">DOSTAT</a>(<span class="keywordtype">double</span> start = <a class="code" href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">DDAStat::getClk</a>(<span class="keyword">true</span>));</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#a8c5220108a65fa281959529cb1e9cc57">reCompute</a>(dpm);</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; <a class="code" href="SVFType_8h.html#a6c9e2209a2c38607a9e3b7fab242886a">DOSTAT</a>(<a class="code" href="classSVF_1_1DDAVFSolver.html#ae40c7bad663e0fa07dee4be3d1794ff2">ddaStat</a>-&gt;<a class="code" href="classSVF_1_1DDAStat.html#aae8366a4876154fa66298c7bf0fc47c4">_AnaTimeCyclePerQuery</a> += <a class="code" href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">DDAStat::getClk</a>(<span class="keyword">true</span>) - start);</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; }</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; }</div><div class="line"><a name="l00569"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#aac432dfa7ccfc3434d9e0e2eb65afe7f"> 569</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keyword">const</span> CPtSet&amp; <a class="code" href="classSVF_1_1DDAVFSolver.html#aac432dfa7ccfc3434d9e0e2eb65afe7f">getCachedTLPointsTo</a>(<span class="keyword">const</span> DPIm&amp; dpm)</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; {</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#a2d6df8149b45d719e22fc505df94171a">dpmToTLCPtSetMap</a>[dpm];</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; }</div><div class="line"><a name="l00573"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a2a2b3783074c9f509fc265b97b979704"> 573</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keyword">const</span> CPtSet&amp; <a class="code" href="classSVF_1_1DDAVFSolver.html#a2a2b3783074c9f509fc265b97b979704">getCachedADPointsTo</a>(<span class="keyword">const</span> DPIm&amp; dpm)</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; {</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#a2565bf8dcacb22350dc1dc98ec7595f2">dpmToADCPtSetMap</a>[dpm];</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; }</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160;</div><div class="line"><a name="l00580"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a7b35588de00e322afd742041bf735571"> 580</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#a7b35588de00e322afd742041bf735571">isTopLevelPtrStmt</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* stmt)</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; {</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;StoreSVFGNode&gt;(stmt) || SVFUtil::isa&lt;MRSVFGNode&gt;(stmt))</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; }</div><div class="line"><a name="l00588"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#ac4cb0b666d68d135c5e385bfc880fd67"> 588</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> DPIm <a class="code" href="classSVF_1_1DDAVFSolver.html#ac4cb0b666d68d135c5e385bfc880fd67">getDPImWithOldCond</a>(<span class="keyword">const</span> DPIm&amp; oldDpm,<span class="keyword">const</span> CVar&amp; var, <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* loc)</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; {</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; DPIm dpm(oldDpm);</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; dpm.setLocVar(loc,<a class="code" href="classSVF_1_1DDAVFSolver.html#a3fa002d4ba4194ffde62ecbdd361a24d">getPtrNodeID</a>(var));</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160;</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;StoreSVFGNode&gt;(loc))</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#a1cd1023bca18db16bc54e622c881e494">addLoadDpmAndCVar</a>(dpm,<a class="code" href="classSVF_1_1DDAVFSolver.html#a630aad14a285c954a50c632f9cb13fa9">getLoadDpm</a>(oldDpm),var);</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160;</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;LoadSVFGNode&gt;(loc))</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#a1cd1023bca18db16bc54e622c881e494">addLoadDpmAndCVar</a>(dpm,oldDpm,var);</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160;</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; <a class="code" href="SVFType_8h.html#a6c9e2209a2c38607a9e3b7fab242886a">DOSTAT</a>(<a class="code" href="classSVF_1_1DDAVFSolver.html#ae40c7bad663e0fa07dee4be3d1794ff2">ddaStat</a>-&gt;<a class="code" href="classSVF_1_1DDAStat.html#a5ad94d2109b293d306f67741effc73aa">_NumOfDPM</a>++);</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; <span class="keywordflow">return</span> dpm;</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; }</div><div class="line"><a name="l00603"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#aba0ec611a5cfd096ac0b8b11e0bd5580"> 603</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#aba0ec611a5cfd096ac0b8b11e0bd5580">SVFGSCCDetection</a>()</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; {</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1DDAVFSolver.html#a54f5d4972238ae69f19c9da3b9f51644">_svfgSCC</a>==<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; {</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#a54f5d4972238ae69f19c9da3b9f51644">_svfgSCC</a> = <span class="keyword">new</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#a502207f81ed22fa42f9e18ccba83ad4e">SVFGSCC</a>(<a class="code" href="classSVF_1_1DDAVFSolver.html#acb7980c7e0d1d8ad6abab0b80831d2a9">getSVFG</a>());</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; }</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#a54f5d4972238ae69f19c9da3b9f51644">_svfgSCC</a>-&gt;<a class="code" href="classSVF_1_1SCCDetection.html#a123b5006a6da7053e5e357140da3c5a3">find</a>();</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; }</div><div class="line"><a name="l00612"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a1583ed2eb1d4b88dc2a5b4c0b6842496"> 612</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> <a class="code" href="classSVF_1_1DDAVFSolver.html#a1583ed2eb1d4b88dc2a5b4c0b6842496">getSVFGSCCRepNode</a>(<a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> <span class="keywordtype">id</span>)</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; {</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#a54f5d4972238ae69f19c9da3b9f51644">_svfgSCC</a>-&gt;<a class="code" href="classSVF_1_1SCCDetection.html#a3a5fdc9330a657240f77199f5aee602d">repNode</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; }</div><div class="line"><a name="l00617"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#add7daee4a0ecae479a5ab015130c8c93"> 617</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#add7daee4a0ecae479a5ab015130c8c93">isSVFGNodeInCycle</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node)</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; {</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#a54f5d4972238ae69f19c9da3b9f51644">_svfgSCC</a>-&gt;<a class="code" href="classSVF_1_1SCCDetection.html#a5d699af73b1e7ad4e3a5f6d26b8b6d15">isInCycle</a>(node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>());</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; }</div><div class="line"><a name="l00622"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a034e3c8b2eec00aee9de439dfeeda332"> 622</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#a034e3c8b2eec00aee9de439dfeeda332">edgeInSVFGSCC</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* edge)</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; {</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; <span class="keywordflow">return</span> (<a class="code" href="classSVF_1_1DDAVFSolver.html#a1583ed2eb1d4b88dc2a5b4c0b6842496">getSVFGSCCRepNode</a>(edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">getSrcID</a>()) == <a class="code" href="classSVF_1_1DDAVFSolver.html#a1583ed2eb1d4b88dc2a5b4c0b6842496">getSVFGSCCRepNode</a>(edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">getDstID</a>()));</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; }</div><div class="line"><a name="l00627"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#afc2b0eeb1d5d5f292690f3c949217c38"> 627</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#afc2b0eeb1d5d5f292690f3c949217c38">setCallGraph</a> (<a class="code" href="classSVF_1_1PTACallGraph.html">PTACallGraph</a>* cg)</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; {</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#abf24080617c6a74abed9f0bb0bc9c0c5">_callGraph</a> = cg;</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; }</div><div class="line"><a name="l00632"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#abd652b2627f68d7d4f8bf3bdb20ce975"> 632</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#abd652b2627f68d7d4f8bf3bdb20ce975">setCallGraphSCC</a> (CallGraphSCC* scc)</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; {</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#a4c307d486756daa1e79595b1e9edc40a">_callGraphSCC</a> = scc;</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; }</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160;</div><div class="line"><a name="l00638"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a645c7d0637b49e139898016ff652e1f3"> 638</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#a645c7d0637b49e139898016ff652e1f3">isHeapCondMemObj</a>(<span class="keyword">const</span> CVar&amp; var, <span class="keyword">const</span> <a class="code" href="classSVF_1_1StoreVFGNode.html">StoreSVFGNode</a>*)</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; {</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* mem = <a class="code" href="classSVF_1_1DDAVFSolver.html#a5521918cc06c182c821b9fae8136e4fe">_pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a2dd4d5f704906270af13e7a07f900eb1">getObject</a>(<a class="code" href="classSVF_1_1DDAVFSolver.html#a3fa002d4ba4194ffde62ecbdd361a24d">getPtrNodeID</a>(var));</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; assert(mem &amp;&amp; <span class="stringliteral">&quot;memory object is null??&quot;</span>);</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; <span class="keywordflow">return</span> mem-&gt;<a class="code" href="classSVF_1_1MemObj.html#a898c5bb3956402578266a6fb142e02b1">isHeap</a>();</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; }</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160;</div><div class="line"><a name="l00645"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a9aaa5ee3dc8abc51c4b6e463e1949ee7"> 645</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#a9aaa5ee3dc8abc51c4b6e463e1949ee7">isArrayCondMemObj</a>(<span class="keyword">const</span> CVar&amp; var)<span class="keyword"> const</span></div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* mem = <a class="code" href="classSVF_1_1DDAVFSolver.html#a5521918cc06c182c821b9fae8136e4fe">_pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a2dd4d5f704906270af13e7a07f900eb1">getObject</a>(<a class="code" href="classSVF_1_1DDAVFSolver.html#a3fa002d4ba4194ffde62ecbdd361a24d">getPtrNodeID</a>(var));</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; assert(mem &amp;&amp; <span class="stringliteral">&quot;memory object is null??&quot;</span>);</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; <span class="keywordflow">return</span> mem-&gt;<a class="code" href="classSVF_1_1MemObj.html#aeba6eeed4843a1a90cf1d4b7deb197af">isArray</a>();</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; }</div><div class="line"><a name="l00651"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a37a6321f50bef2939b287cc088e76170"> 651</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#a37a6321f50bef2939b287cc088e76170">isFieldInsenCondMemObj</a>(<span class="keyword">const</span> CVar&amp; var)<span class="keyword"> const</span></div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* mem = <a class="code" href="classSVF_1_1DDAVFSolver.html#a5521918cc06c182c821b9fae8136e4fe">_pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#af76a55c3b8255a81a566bdce35ffc749">getBaseObj</a>(<a class="code" href="classSVF_1_1DDAVFSolver.html#a3fa002d4ba4194ffde62ecbdd361a24d">getPtrNodeID</a>(var));</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; <span class="keywordflow">return</span> mem-&gt;<a class="code" href="classSVF_1_1MemObj.html#a41d85883d44ad77832b020455951c6fc">isFieldInsensitive</a>();</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; }</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160;</div><div class="line"><a name="l00660"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#ad849ae4509e88832f784c748468ab959"> 660</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> LocToDPMVecMap&amp; <a class="code" href="classSVF_1_1DDAVFSolver.html#ad849ae4509e88832f784c748468ab959">getLocToDPMVecMap</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#aa724698d499615bce7caf8f312b746a7">locToDpmSetMap</a>;</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; }</div><div class="line"><a name="l00664"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a6c32a1cdcdbea0151c8cf17ffe598f29"> 664</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> DPTItemSet&amp; <a class="code" href="classSVF_1_1DDAVFSolver.html#a6c32a1cdcdbea0151c8cf17ffe598f29">getDpmSetAtLoc</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* loc)</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; {</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#aa724698d499615bce7caf8f312b746a7">locToDpmSetMap</a>[loc-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>()];</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; }</div><div class="line"><a name="l00668"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#af7be3fa6c73dde97d6f9fd0395c9aee0"> 668</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#af7be3fa6c73dde97d6f9fd0395c9aee0">addDpmToLoc</a>(<span class="keyword">const</span> DPIm&amp; dpm)</div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; {</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#aa724698d499615bce7caf8f312b746a7">locToDpmSetMap</a>[dpm.getLoc()-&gt;getId()].insert(dpm);</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; }</div><div class="line"><a name="l00672"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a00ae738a76564b7b334faae567674e34"> 672</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#a00ae738a76564b7b334faae567674e34">removeDpmFromLoc</a>(<span class="keyword">const</span> DPIm&amp; dpm)</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160; {</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160; assert(dpm == <a class="code" href="classSVF_1_1DDAVFSolver.html#aa724698d499615bce7caf8f312b746a7">locToDpmSetMap</a>[dpm.getLoc()].back() &amp;&amp; <span class="stringliteral">&quot;dpm not match with the end of vector&quot;</span>);</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#aa724698d499615bce7caf8f312b746a7">locToDpmSetMap</a>[dpm.getLoc()-&gt;getId()].erase(dpm);</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; }</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160;</div><div class="line"><a name="l00681"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a1cd1023bca18db16bc54e622c881e494"> 681</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#a1cd1023bca18db16bc54e622c881e494">addLoadDpmAndCVar</a>(<span class="keyword">const</span> DPIm&amp; dpm,<span class="keyword">const</span> DPIm&amp; loadDpm,<span class="keyword">const</span> CVar&amp; loadVar)</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; {</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#a7579491400f1781356cb7d1913537547">addLoadCVar</a>(dpm,loadVar);</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#a4725013a7617645e1418ed670d4837b5">addLoadDpm</a>(dpm,loadDpm);</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; }</div><div class="line"><a name="l00687"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a4725013a7617645e1418ed670d4837b5"> 687</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#a4725013a7617645e1418ed670d4837b5">addLoadDpm</a>(<span class="keyword">const</span> DPIm&amp; dpm,<span class="keyword">const</span> DPIm&amp; loadDpm)</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; {</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; <span class="keyword">typename</span> DPMToDPMMap::iterator it = <a class="code" href="classSVF_1_1DDAVFSolver.html#a9d8959dfee05685cd74d0d7a78069692">dpmToloadDpmMap</a>.find(dpm);</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; <span class="keywordflow">if</span>(it!=<a class="code" href="classSVF_1_1DDAVFSolver.html#a9d8959dfee05685cd74d0d7a78069692">dpmToloadDpmMap</a>.end())</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; it-&gt;second = loadDpm;</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#a9d8959dfee05685cd74d0d7a78069692">dpmToloadDpmMap</a>.insert(std::make_pair(dpm,loadDpm));</div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; }</div><div class="line"><a name="l00695"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a630aad14a285c954a50c632f9cb13fa9"> 695</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> DPIm&amp; <a class="code" href="classSVF_1_1DDAVFSolver.html#a630aad14a285c954a50c632f9cb13fa9">getLoadDpm</a>(<span class="keyword">const</span> DPIm&amp; dpm)<span class="keyword"> const</span></div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; <span class="keyword">typename</span> DPMToDPMMap::const_iterator it = <a class="code" href="classSVF_1_1DDAVFSolver.html#a9d8959dfee05685cd74d0d7a78069692">dpmToloadDpmMap</a>.find(dpm);</div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; assert(it!=<a class="code" href="classSVF_1_1DDAVFSolver.html#a9d8959dfee05685cd74d0d7a78069692">dpmToloadDpmMap</a>.end() &amp;&amp; <span class="stringliteral">&quot;not found??&quot;</span>);</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; }</div><div class="line"><a name="l00701"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a7579491400f1781356cb7d1913537547"> 701</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#a7579491400f1781356cb7d1913537547">addLoadCVar</a>(<span class="keyword">const</span> DPIm&amp; dpm, <span class="keyword">const</span> CVar&amp; loadVar)</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; {</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; <span class="keyword">typename</span> DPMToCVarMap::iterator it = <a class="code" href="classSVF_1_1DDAVFSolver.html#a6d62420837fe0c7814fc4da68a91eda4">loadToPTCVarMap</a>.find(dpm);</div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; <span class="keywordflow">if</span>(it!=<a class="code" href="classSVF_1_1DDAVFSolver.html#a6d62420837fe0c7814fc4da68a91eda4">loadToPTCVarMap</a>.end())</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; it-&gt;second = loadVar;</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#a6d62420837fe0c7814fc4da68a91eda4">loadToPTCVarMap</a>.insert(std::make_pair(dpm,loadVar));</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; }</div><div class="line"><a name="l00709"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#ad42efad8e857290459689833c224e467"> 709</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> CVar&amp; <a class="code" href="classSVF_1_1DDAVFSolver.html#ad42efad8e857290459689833c224e467">getLoadCVar</a>(<span class="keyword">const</span> DPIm&amp; dpm)<span class="keyword"> const</span></div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; <span class="keyword">typename</span> DPMToCVarMap::const_iterator it = <a class="code" href="classSVF_1_1DDAVFSolver.html#a6d62420837fe0c7814fc4da68a91eda4">loadToPTCVarMap</a>.find(dpm);</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; assert(it!=<a class="code" href="classSVF_1_1DDAVFSolver.html#a6d62420837fe0c7814fc4da68a91eda4">loadToPTCVarMap</a>.end() &amp;&amp; <span class="stringliteral">&quot;not found??&quot;</span>);</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; }</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1AndersenWaveDiff.html">AndersenWaveDiff</a>* <a class="code" href="classSVF_1_1DDAVFSolver.html#ac39860015b45b9af6351d0343f8983bb">getAndersenAnalysis</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#aa1d1b6e8cc23f0a6d3935cbe4f02cbdf">_ander</a>;</div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; }</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160;</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#a9005f1f0e4a808838276ff44b300f96d">handleOutOfBudgetDpm</a>(<span class="keyword">const</span> DPIm&amp; dpm) {}</div><div class="line"><a name="l00725"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a3fb52286c5324ea3d58e22c630b307e3"> 725</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#a3fb52286c5324ea3d58e22c630b307e3">testOutOfBudget</a>(<span class="keyword">const</span> DPIm&amp; dpm)</div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; {</div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1DDAVFSolver.html#afdecfbacc64cb8d694268aa73ec8a7b6">outOfBudgetQuery</a>) <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; <span class="keywordflow">if</span>(++<a class="code" href="classSVF_1_1DDAVFSolver.html#ae40c7bad663e0fa07dee4be3d1794ff2">ddaStat</a>-&gt;<a class="code" href="classSVF_1_1DDAStat.html#a674248754300d58fcef8eaf09436249e">_NumOfStep</a> &gt; DPIm::getMaxBudget())</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#afdecfbacc64cb8d694268aa73ec8a7b6">outOfBudgetQuery</a> = <span class="keyword">true</span>;</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#a0b1f774883adc7d535f8363bf3c8b1e8">isOutOfBudgetDpm</a>(dpm) || <a class="code" href="classSVF_1_1DDAVFSolver.html#afdecfbacc64cb8d694268aa73ec8a7b6">outOfBudgetQuery</a>;</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; }</div><div class="line"><a name="l00732"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a7994236bff84ba8244592fdf5e546734"> 732</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#a7994236bff84ba8244592fdf5e546734">isOutOfBudgetQuery</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#afdecfbacc64cb8d694268aa73ec8a7b6">outOfBudgetQuery</a>;</div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; }</div><div class="line"><a name="l00736"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#ae1e77060ac22d465b5cc9430962e280c"> 736</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#ae1e77060ac22d465b5cc9430962e280c">addOutOfBudgetDpm</a>(<span class="keyword">const</span> DPIm&amp; dpm)</div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; {</div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#aad57a954473f3099188cf8c8fba87880">outOfBudgetDpms</a>.insert(dpm);</div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; }</div><div class="line"><a name="l00740"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a0b1f774883adc7d535f8363bf3c8b1e8"> 740</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#a0b1f774883adc7d535f8363bf3c8b1e8">isOutOfBudgetDpm</a>(<span class="keyword">const</span> DPIm&amp; dpm)<span class="keyword"> const</span></div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#aad57a954473f3099188cf8c8fba87880">outOfBudgetDpms</a>.find(dpm) != <a class="code" href="classSVF_1_1DDAVFSolver.html#aad57a954473f3099188cf8c8fba87880">outOfBudgetDpms</a>.end();</div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; }</div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160;</div><div class="line"><a name="l00747"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#adcb641eec4f620effdb3f61a46429f40"> 747</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1DDAStat.html">DDAStat</a>* <a class="code" href="classSVF_1_1DDAVFSolver.html#adcb641eec4f620effdb3f61a46429f40">setDDAStat</a>(<a class="code" href="classSVF_1_1DDAStat.html">DDAStat</a>* s)</div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160; {</div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#ae40c7bad663e0fa07dee4be3d1794ff2">ddaStat</a> = s;</div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#ae40c7bad663e0fa07dee4be3d1794ff2">ddaStat</a>;</div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160; }</div><div class="line"><a name="l00753"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#aeb6b56cf3d140d251b0524eb5cbd6dce"> 753</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#aeb6b56cf3d140d251b0524eb5cbd6dce">addSUStat</a>(<span class="keyword">const</span> DPIm&amp; dpm, <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node)</div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160; {</div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1DDAVFSolver.html#af66895278f0ecbc882f9e4f43ef9c8a8">storeToDPMs</a>[node].insert(dpm).second)</div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160; {</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#ae40c7bad663e0fa07dee4be3d1794ff2">ddaStat</a>-&gt;<a class="code" href="classSVF_1_1DDAStat.html#a5c007645d73bfc5cfefef672f3c1dcf1">_NumOfStrongUpdates</a>++;</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#ae40c7bad663e0fa07dee4be3d1794ff2">ddaStat</a>-&gt;<a class="code" href="classSVF_1_1DDAStat.html#ad53ad7a958c05b45624d2859a6a9e647">_StrongUpdateStores</a>.<a class="code" href="classSVF_1_1SparseBitVector.html#a61bd86909a141f9de873d92c0f904832">set</a>(node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>());</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; }</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; }</div><div class="line"><a name="l00762"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a7d0775354df32f293e98578ed071d33c"> 762</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#a7d0775354df32f293e98578ed071d33c">rmSUStat</a>(<span class="keyword">const</span> DPIm&amp; dpm, <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node)</div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160; {</div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160; DPTItemSet&amp; dpmSet = <a class="code" href="classSVF_1_1DDAVFSolver.html#af66895278f0ecbc882f9e4f43ef9c8a8">storeToDPMs</a>[node];</div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160; <span class="keywordflow">if</span> (dpmSet.erase(dpm))</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; {</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#ae40c7bad663e0fa07dee4be3d1794ff2">ddaStat</a>-&gt;<a class="code" href="classSVF_1_1DDAStat.html#a5c007645d73bfc5cfefef672f3c1dcf1">_NumOfStrongUpdates</a>--;</div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; <span class="keywordflow">if</span>(dpmSet.empty())</div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#ae40c7bad663e0fa07dee4be3d1794ff2">ddaStat</a>-&gt;<a class="code" href="classSVF_1_1DDAStat.html#ad53ad7a958c05b45624d2859a6a9e647">_StrongUpdateStores</a>.<a class="code" href="classSVF_1_1SparseBitVector.html#ad5337b5aeed50f8b7ffd56b14ee25c9f">reset</a>(node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>());</div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160; }</div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160; }</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160;</div><div class="line"><a name="l00773"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#afdecfbacc64cb8d694268aa73ec8a7b6"> 773</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#afdecfbacc64cb8d694268aa73ec8a7b6">outOfBudgetQuery</a>; </div><div class="line"><a name="l00774"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a5521918cc06c182c821b9fae8136e4fe"> 774</a></span>&#160; <a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* <a class="code" href="classSVF_1_1DDAVFSolver.html#a5521918cc06c182c821b9fae8136e4fe">_pag</a>; </div><div class="line"><a name="l00775"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a74d83f06e8fc0ecedc1e1846030c99c6"> 775</a></span>&#160; <a class="code" href="classSVF_1_1SVFG.html">SVFG</a>* <a class="code" href="classSVF_1_1DDAVFSolver.html#a74d83f06e8fc0ecedc1e1846030c99c6">_svfg</a>; </div><div class="line"><a name="l00776"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#aa1d1b6e8cc23f0a6d3935cbe4f02cbdf"> 776</a></span>&#160; <a class="code" href="classSVF_1_1AndersenWaveDiff.html">AndersenWaveDiff</a>* <a class="code" href="classSVF_1_1DDAVFSolver.html#aa1d1b6e8cc23f0a6d3935cbe4f02cbdf">_ander</a>; </div><div class="line"><a name="l00777"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#ae0e78fafb7eec0fbc1a02d24547335e9"> 777</a></span>&#160; <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> <a class="code" href="classSVF_1_1DDAVFSolver.html#ae0e78fafb7eec0fbc1a02d24547335e9">candidateQueries</a>; </div><div class="line"><a name="l00778"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#abf24080617c6a74abed9f0bb0bc9c0c5"> 778</a></span>&#160; <a class="code" href="classSVF_1_1PTACallGraph.html">PTACallGraph</a>* <a class="code" href="classSVF_1_1DDAVFSolver.html#abf24080617c6a74abed9f0bb0bc9c0c5">_callGraph</a>; </div><div class="line"><a name="l00779"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a4c307d486756daa1e79595b1e9edc40a"> 779</a></span>&#160; CallGraphSCC* <a class="code" href="classSVF_1_1DDAVFSolver.html#a4c307d486756daa1e79595b1e9edc40a">_callGraphSCC</a>; </div><div class="line"><a name="l00780"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a54f5d4972238ae69f19c9da3b9f51644"> 780</a></span>&#160; SVFGSCC* <a class="code" href="classSVF_1_1DDAVFSolver.html#a54f5d4972238ae69f19c9da3b9f51644">_svfgSCC</a>; </div><div class="line"><a name="l00781"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a63d04c3af4529d0e0f82acd76ed57f6c"> 781</a></span>&#160; DPTItemSet <a class="code" href="classSVF_1_1DDAVFSolver.html#a63d04c3af4529d0e0f82acd76ed57f6c">backwardVisited</a>; </div><div class="line"><a name="l00782"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a2d6df8149b45d719e22fc505df94171a"> 782</a></span>&#160; DPImToCPtSetMap <a class="code" href="classSVF_1_1DDAVFSolver.html#a2d6df8149b45d719e22fc505df94171a">dpmToTLCPtSetMap</a>; </div><div class="line"><a name="l00783"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a2565bf8dcacb22350dc1dc98ec7595f2"> 783</a></span>&#160; DPImToCPtSetMap <a class="code" href="classSVF_1_1DDAVFSolver.html#a2565bf8dcacb22350dc1dc98ec7595f2">dpmToADCPtSetMap</a>; </div><div class="line"><a name="l00784"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#aa724698d499615bce7caf8f312b746a7"> 784</a></span>&#160; LocToDPMVecMap <a class="code" href="classSVF_1_1DDAVFSolver.html#aa724698d499615bce7caf8f312b746a7">locToDpmSetMap</a>; </div><div class="line"><a name="l00785"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a9d8959dfee05685cd74d0d7a78069692"> 785</a></span>&#160; DPMToDPMMap <a class="code" href="classSVF_1_1DDAVFSolver.html#a9d8959dfee05685cd74d0d7a78069692">dpmToloadDpmMap</a>; </div><div class="line"><a name="l00786"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a6d62420837fe0c7814fc4da68a91eda4"> 786</a></span>&#160; DPMToCVarMap <a class="code" href="classSVF_1_1DDAVFSolver.html#a6d62420837fe0c7814fc4da68a91eda4">loadToPTCVarMap</a>; </div><div class="line"><a name="l00787"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#aad57a954473f3099188cf8c8fba87880"> 787</a></span>&#160; DPTItemSet <a class="code" href="classSVF_1_1DDAVFSolver.html#aad57a954473f3099188cf8c8fba87880">outOfBudgetDpms</a>; </div><div class="line"><a name="l00788"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#af66895278f0ecbc882f9e4f43ef9c8a8"> 788</a></span>&#160; StoreToPMSetMap <a class="code" href="classSVF_1_1DDAVFSolver.html#af66895278f0ecbc882f9e4f43ef9c8a8">storeToDPMs</a>; </div><div class="line"><a name="l00789"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#ae40c7bad663e0fa07dee4be3d1794ff2"> 789</a></span>&#160; <a class="code" href="classSVF_1_1DDAStat.html">DDAStat</a>* <a class="code" href="classSVF_1_1DDAVFSolver.html#ae40c7bad663e0fa07dee4be3d1794ff2">ddaStat</a>; </div><div class="line"><a name="l00790"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a0d563fe8b016b27a58f5b054fec9c38a"> 790</a></span>&#160; <a class="code" href="classSVF_1_1SVFGBuilder.html">SVFGBuilder</a> <a class="code" href="classSVF_1_1DDAVFSolver.html#a0d563fe8b016b27a58f5b054fec9c38a">svfgBuilder</a>; </div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160;};</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160;</div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160;} <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160;</div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* VALUEFLOWDDA_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="Andersen_8h_html"><div class="ttname"><a href="Andersen_8h.html">Andersen.h</a></div></div>
70
- <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a37a6321f50bef2939b287cc088e76170"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a37a6321f50bef2939b287cc088e76170">SVF::DDAVFSolver::isFieldInsenCondMemObj</a></div><div class="ttdeci">bool isFieldInsenCondMemObj(const CVar &amp;var) const</div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00651">DDAVFSolver.h:651</a></div></div>
69
+ <a href="DDAVFSolver_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">//===- DDAVFSolver.h -- Demand-driven analysis value-flow solver------------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// SVF: Static Value-Flow Analysis</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Copyright (C) &lt;2013-&gt; &lt;Yulei Sui&gt;</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// This program is free software: you can redistribute it and/or modify</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">// it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// the Free Software Foundation, either version 3 of the License, or</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// (at your option) any later version.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">// GNU General Public License for more details.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">// You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment">// along with this program. If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * DDAVFSolver.h</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * Created on: Jul 3, 2014</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * Author: Yulei Sui</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#ifndef VALUEFLOWDDA_H_</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#define VALUEFLOWDDA_H_</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="DDAStat_8h.html">DDA/DDAStat.h</a>&quot;</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="SVFGBuilder_8h.html">MSSA/SVFGBuilder.h</a>&quot;</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="Andersen_8h.html">WPA/Andersen.h</a>&quot;</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="SCC_8h.html">Util/SCC.h</a>&quot;</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="PointsTo_8h.html">MemoryModel/PointsTo.h</a>&quot;</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="preprocessor">#include &lt;algorithm&gt;</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;{</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> CVar, <span class="keyword">class</span> CPtSet, <span class="keyword">class</span> DPIm&gt;</div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html"> 47</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1DDAVFSolver.html">DDAVFSolver</a></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"><a class="line" href="classSVF_1_1DDAVFSolver.html#af83f88f2ae2456f2691e8822d56b1598"> 49</a></span>&#160; <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classSVF_1_1DDAStat.html">DDAStat</a>;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a502207f81ed22fa42f9e18ccba83ad4e"> 51</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1SCCDetection.html">SCCDetection&lt;SVFG*&gt;</a> <a class="code" href="classSVF_1_1DDAVFSolver.html#a502207f81ed22fa42f9e18ccba83ad4e">SVFGSCC</a>;</div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#af6e05e87ba8d6b6ae65807803b1b0221"> 52</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1SCCDetection.html">SCCDetection&lt;PTACallGraph*&gt;</a> <a class="code" href="classSVF_1_1DDAVFSolver.html#af6e05e87ba8d6b6ae65807803b1b0221">CallGraphSCC</a>;</div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#ac227096ad71dfda8bc48c139fccb3af2"> 53</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1PTACallGraphEdge.html#adbedb15ac0f9395c5264f087a63bad3b">PTACallGraphEdge::CallInstSet</a> <a class="code" href="classSVF_1_1DDAVFSolver.html#ac227096ad71dfda8bc48c139fccb3af2">CallInstSet</a>;</div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a0c590e9d56b6d37cb6e0c9081363a0ef"> 54</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1SVFIR.html#a2b237e55fd8d7fd61eb3ac6968e4a76e">SVFIR::CallSiteSet</a> <a class="code" href="classSVF_1_1DDAVFSolver.html#a0c590e9d56b6d37cb6e0c9081363a0ef">CallSiteSet</a>;</div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a05d6b074b04aad7dc1f3cbe0ca587467"> 55</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a4f21e91ff8eaea5207afe5c60dbd78d7">OrderedSet&lt;DPIm&gt;</a> <a class="code" href="classSVF_1_1DDAVFSolver.html#a05d6b074b04aad7dc1f3cbe0ca587467">DPTItemSet</a>;</div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a8b5a34679fb1362425c88d6e74b6c019"> 56</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#aedf0d6718ca176e0b9e17ab4b30729c6">OrderedMap&lt;DPIm, CPtSet&gt;</a> <a class="code" href="classSVF_1_1DDAVFSolver.html#a8b5a34679fb1362425c88d6e74b6c019">DPImToCPtSetMap</a>;</div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#af0538abf12c01d31a0296553e2f7c92d"> 57</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#aedf0d6718ca176e0b9e17ab4b30729c6">OrderedMap&lt;DPIm,CVar&gt;</a> <a class="code" href="classSVF_1_1DDAVFSolver.html#af0538abf12c01d31a0296553e2f7c92d">DPMToCVarMap</a>;</div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a2ccbcfa949a1796094b5d9499177fc2b"> 58</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#aedf0d6718ca176e0b9e17ab4b30729c6">OrderedMap&lt;DPIm,DPIm&gt;</a> <a class="code" href="classSVF_1_1DDAVFSolver.html#a2ccbcfa949a1796094b5d9499177fc2b">DPMToDPMMap</a>;</div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#aab76f98ae4f0c1f62f101ac5c5fdbf83"> 59</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#aedf0d6718ca176e0b9e17ab4b30729c6">OrderedMap&lt;NodeID, DPTItemSet&gt;</a> <a class="code" href="classSVF_1_1DDAVFSolver.html#aab76f98ae4f0c1f62f101ac5c5fdbf83">LocToDPMVecMap</a>;</div><div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#aef98e8e9144a69bb7481fef5d2dcb303"> 60</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a4f21e91ff8eaea5207afe5c60dbd78d7">OrderedSet&lt;const SVFGEdge* &gt;</a> <a class="code" href="classSVF_1_1DDAVFSolver.html#aef98e8e9144a69bb7481fef5d2dcb303">ConstSVFGEdgeSet</a>;</div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a6489319b33a807f7caba2d34017a3e1b"> 61</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1VFGEdge.html#a557334ef75bb5479b045f68c27b38701">SVFGEdge::SVFGEdgeSetTy</a> <a class="code" href="classSVF_1_1DDAVFSolver.html#a6489319b33a807f7caba2d34017a3e1b">SVFGEdgeSet</a>;</div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#accaacd2dd680f92ff83cfe75eef6ffab"> 62</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#aedf0d6718ca176e0b9e17ab4b30729c6">OrderedMap&lt;const SVFGNode*, DPTItemSet&gt;</a> <a class="code" href="classSVF_1_1DDAVFSolver.html#accaacd2dd680f92ff83cfe75eef6ffab">StoreToPMSetMap</a>;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a7ee96b513074c283d23434590ce15e7d"> 65</a></span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#a7ee96b513074c283d23434590ce15e7d">DDAVFSolver</a>(): <a class="code" href="classSVF_1_1DDAVFSolver.html#afdecfbacc64cb8d694268aa73ec8a7b6">outOfBudgetQuery</a>(<a class="code" href="cJSON_8cpp.html#a65e9886d74aaee76545e83dd09011727">false</a>),<a class="code" href="classSVF_1_1DDAVFSolver.html#a5521918cc06c182c821b9fae8136e4fe">_pag</a>(nullptr),<a class="code" href="classSVF_1_1DDAVFSolver.html#a74d83f06e8fc0ecedc1e1846030c99c6">_svfg</a>(nullptr),<a class="code" href="classSVF_1_1DDAVFSolver.html#aa1d1b6e8cc23f0a6d3935cbe4f02cbdf">_ander</a>(nullptr),<a class="code" href="classSVF_1_1DDAVFSolver.html#abf24080617c6a74abed9f0bb0bc9c0c5">_callGraph</a>(nullptr), <a class="code" href="classSVF_1_1DDAVFSolver.html#a4c307d486756daa1e79595b1e9edc40a">_callGraphSCC</a>(nullptr), <a class="code" href="classSVF_1_1DDAVFSolver.html#a54f5d4972238ae69f19c9da3b9f51644">_svfgSCC</a>(nullptr), <a class="code" href="classSVF_1_1DDAVFSolver.html#ae40c7bad663e0fa07dee4be3d1794ff2">ddaStat</a>(nullptr)</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; {</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; }</div><div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a211f2f0c572d5085d22c2cb40341b606"> 69</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#a211f2f0c572d5085d22c2cb40341b606">~DDAVFSolver</a>()</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; {</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1DDAVFSolver.html#aa1d1b6e8cc23f0a6d3935cbe4f02cbdf">_ander</a> != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; {</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="comment">// AndersenWaveDiff::releaseAndersenWaveDiff();</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#aa1d1b6e8cc23f0a6d3935cbe4f02cbdf">_ander</a> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; }</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; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1DDAVFSolver.html#a74d83f06e8fc0ecedc1e1846030c99c6">_svfg</a> != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; {</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="comment">// DDASVFGBuilder::releaseDDASVFG();</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#a74d83f06e8fc0ecedc1e1846030c99c6">_svfg</a> = <span class="keyword">nullptr</span>;</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;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1DDAVFSolver.html#a54f5d4972238ae69f19c9da3b9f51644">_svfgSCC</a> != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keyword">delete</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#a54f5d4972238ae69f19c9da3b9f51644">_svfgSCC</a>;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#a54f5d4972238ae69f19c9da3b9f51644">_svfgSCC</a> = <span class="keyword">nullptr</span>;</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; <a class="code" href="classSVF_1_1DDAVFSolver.html#abf24080617c6a74abed9f0bb0bc9c0c5">_callGraph</a> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#a4c307d486756daa1e79595b1e9edc40a">_callGraphSCC</a> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; }</div><div class="line"><a name="l00091"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a73bbf4f763316e8d5db62d163da35a18"> 91</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a>&amp; <a class="code" href="classSVF_1_1DDAVFSolver.html#a73bbf4f763316e8d5db62d163da35a18">getCandidateQueries</a>()</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; {</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#ae0e78fafb7eec0fbc1a02d24547335e9">candidateQueries</a>;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; }</div><div class="line"><a name="l00096"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#ad7d92fad8606d5512786a7b7a08930e2"> 96</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> DPIm <a class="code" href="classSVF_1_1DDAVFSolver.html#ad7d92fad8606d5512786a7b7a08930e2">getDPIm</a>(<span class="keyword">const</span> CVar&amp; var, <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* loc)<span class="keyword"> const</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; DPIm dpm(var,loc);</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keywordflow">return</span> dpm;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; }</div><div class="line"><a name="l00102"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a99764ee5bc19378795fe464e9036e78b"> 102</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#a99764ee5bc19378795fe464e9036e78b">unionDDAPts</a>(CPtSet&amp; pts, <span class="keyword">const</span> CPtSet&amp; targetPts)</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; {</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordflow">return</span> (pts |= targetPts);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; }</div><div class="line"><a name="l00107"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#ae7949e141978474f3b6cb510bacafa37"> 107</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#ae7949e141978474f3b6cb510bacafa37">unionDDAPts</a>(DPIm dpm, <span class="keyword">const</span> CPtSet&amp; targetPts)</div><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; CPtSet&amp; pts = <a class="code" href="classSVF_1_1DDAVFSolver.html#a7b35588de00e322afd742041bf735571">isTopLevelPtrStmt</a>(dpm.getLoc()) ? <a class="code" href="classSVF_1_1DDAVFSolver.html#a2d6df8149b45d719e22fc505df94171a">dpmToTLCPtSetMap</a>[dpm] : <a class="code" href="classSVF_1_1DDAVFSolver.html#a2565bf8dcacb22350dc1dc98ec7595f2">dpmToADCPtSetMap</a>[dpm];</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keywordflow">return</span> pts |= targetPts;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; }</div><div class="line"><a name="l00113"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a5a8632a957fce63f186dd8b657566dd2"> 113</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#a5a8632a957fce63f186dd8b657566dd2">addDDAPts</a>(CPtSet&amp; pts, <span class="keyword">const</span> CVar&amp; var)</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; pts.set(var);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; }</div><div class="line"><a name="l00118"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#acb7980c7e0d1d8ad6abab0b80831d2a9"> 118</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1SVFG.html">SVFG</a>* <a class="code" href="classSVF_1_1DDAVFSolver.html#acb7980c7e0d1d8ad6abab0b80831d2a9">getSVFG</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#a74d83f06e8fc0ecedc1e1846030c99c6">_svfg</a>;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; }</div><div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a1fdd7c0efa8f0506edfba2da8f2b3cc0"> 123</a></span>&#160; <span class="keyword">inline</span> SVFGSCC* <a class="code" href="classSVF_1_1DDAVFSolver.html#a1fdd7c0efa8f0506edfba2da8f2b3cc0">getSVFGSCC</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#a54f5d4972238ae69f19c9da3b9f51644">_svfgSCC</a>;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; }</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="comment">// Dump cptsSet</span></div><div class="line"><a name="l00128"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#aa4dc73ea65f736282a413a9d286141e5"> 128</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#aa4dc73ea65f736282a413a9d286141e5">dumpCPtSet</a>(<span class="keyword">const</span> CPtSet&amp; cpts)<span class="keyword"> const</span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;{&quot;</span>;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">typename</span> CPtSet::iterator it = cpts.begin(), eit = cpts.end(); it!=eit; ++it)</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; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; (*it) &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</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; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;}\n&quot;</span>;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; }</div><div class="line"><a name="l00138"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a52737dd41c63404ef91691154aa250ce"> 138</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">const</span> CPtSet&amp; <a class="code" href="classSVF_1_1DDAVFSolver.html#a52737dd41c63404ef91691154aa250ce">findPT</a>(<span class="keyword">const</span> DPIm&amp; dpm)</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; {</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1DDAVFSolver.html#a9a9c3a8b5e4ffc89418073110e446f20">isbkVisited</a>(dpm))</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; <span class="keyword">const</span> CPtSet&amp; cpts = <a class="code" href="classSVF_1_1DDAVFSolver.html#ae31e9281e4f1e0585fdf328b7339e1bf">getCachedPointsTo</a>(dpm);</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a40845b3027a1237076aa8297ca39e730">DDDA</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;\t already backward visited dpm: &quot;</span>);</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a40845b3027a1237076aa8297ca39e730">DDDA</a>, dpm.dump());</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a40845b3027a1237076aa8297ca39e730">DDDA</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;\t return points-to: &quot;</span>);</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a40845b3027a1237076aa8297ca39e730">DDDA</a>, <a class="code" href="classSVF_1_1DDAVFSolver.html#aa4dc73ea65f736282a413a9d286141e5">dumpCPtSet</a>(cpts));</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="keywordflow">return</span> cpts;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; }</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a40845b3027a1237076aa8297ca39e730">DDDA</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;\t backward visit dpm: &quot;</span>);</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a40845b3027a1237076aa8297ca39e730">DDDA</a>, dpm.dump());</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#a7112ce6145be0855f8b035bb0d8a331c">markbkVisited</a>(dpm);</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#af7be3fa6c73dde97d6f9fd0395c9aee0">addDpmToLoc</a>(dpm);</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1DDAVFSolver.html#a3fb52286c5324ea3d58e22c630b307e3">testOutOfBudget</a>(dpm) == <span class="keyword">false</span>)</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; {</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; CPtSet pts;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#a99f631cf1bc438e3f08f7f935e98e38d">handleSingleStatement</a>(dpm, pts);</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#a239a55960dfbbe73df63063070a18b56">updateCachedPointsTo</a>(dpm, pts);</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; }</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#ae31e9281e4f1e0585fdf328b7339e1bf">getCachedPointsTo</a>(dpm);</div><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="keyword">protected</span>:</div><div class="line"><a name="l00170"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a99f631cf1bc438e3f08f7f935e98e38d"> 170</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#a99f631cf1bc438e3f08f7f935e98e38d">handleSingleStatement</a>(<span class="keyword">const</span> DPIm&amp; dpm, CPtSet&amp; pts)</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; {</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#afcc074be34dd0c45418ff16b3d9d4192">resolveFunPtr</a>(dpm);</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; <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node = dpm.getLoc();</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;AddrSVFGNode&gt;(node))</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; <a class="code" href="classSVF_1_1DDAVFSolver.html#acfe7d961caac8f0f558881a9a006b1fa">handleAddr</a>(pts,dpm,SVFUtil::cast&lt;AddrSVFGNode&gt;(node));</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">else</span> <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a5c8cbc986cccb9d84f87aae162df3737">SVFUtil::isa</a>&lt;<a class="code" href="classSVF_1_1CopyVFGNode.html">CopySVFGNode</a>, <a class="code" href="classSVF_1_1PHIVFGNode.html">PHISVFGNode</a>, <a class="code" href="classSVF_1_1ActualParmVFGNode.html">ActualParmSVFGNode</a>,</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <a class="code" href="classSVF_1_1FormalParmVFGNode.html">FormalParmSVFGNode</a>, <a class="code" href="classSVF_1_1ActualRetVFGNode.html">ActualRetSVFGNode</a>,</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <a class="code" href="classSVF_1_1FormalRetVFGNode.html">FormalRetSVFGNode</a>, <a class="code" href="classSVF_1_1NullPtrVFGNode.html">NullPtrSVFGNode</a>&gt;(node))</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; {</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#a7a6af30f30f32d55fc910f2ae4909791">backtraceAlongDirectVF</a>(pts,dpm);</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; }</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;GepSVFGNode&gt;(node))</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; {</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; CPtSet gepPts;</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#a7a6af30f30f32d55fc910f2ae4909791">backtraceAlongDirectVF</a>(gepPts,dpm);</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#a99764ee5bc19378795fe464e9036e78b">unionDDAPts</a>(pts, <a class="code" href="classSVF_1_1DDAVFSolver.html#ab10a34efa1acb6125ea32cf7a8cf919f">processGepPts</a>(SVFUtil::cast&lt;GepSVFGNode&gt;(node),gepPts));</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; }</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;LoadSVFGNode&gt;(node))</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; {</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; CPtSet loadpts;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#acd694c2092adf8c516d1aba5f798cec7">startNewPTCompFromLoadSrc</a>(loadpts,dpm);</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">typename</span> CPtSet::iterator it = loadpts.begin(), eit = loadpts.end(); it!=eit; ++it)</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; {</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#a040bc02742836b0a6d46ce3c3e89fa46">backtraceAlongIndirectVF</a>(pts,<a class="code" href="classSVF_1_1DDAVFSolver.html#ac4cb0b666d68d135c5e385bfc880fd67">getDPImWithOldCond</a>(dpm,*it,node));</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; }</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; }</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;StoreSVFGNode&gt;(node))</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="keywordflow">if</span>(<a class="code" href="classSVF_1_1DDAVFSolver.html#a345e5379f53b618adef014aa6887bfe7">isMustAlias</a>(<a class="code" href="classSVF_1_1DDAVFSolver.html#a630aad14a285c954a50c632f9cb13fa9">getLoadDpm</a>(dpm),dpm))</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; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a40845b3027a1237076aa8297ca39e730">DDDA</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;+++must alias for load and store:&quot;</span>);</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a40845b3027a1237076aa8297ca39e730">DDDA</a>, <a class="code" href="classSVF_1_1DDAVFSolver.html#a630aad14a285c954a50c632f9cb13fa9">getLoadDpm</a>(dpm).<a class="code" href="namespaceSVF.html#aae350f79ebcb9efd22ec9efa6678cd13">dump</a>());</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a40845b3027a1237076aa8297ca39e730">DDDA</a>, dpm.dump());</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a40845b3027a1237076aa8297ca39e730">DDDA</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;+++\n&quot;</span>);</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <a class="code" href="SVFType_8h.html#a6c9e2209a2c38607a9e3b7fab242886a">DOSTAT</a>(<a class="code" href="classSVF_1_1DDAVFSolver.html#ae40c7bad663e0fa07dee4be3d1794ff2">ddaStat</a>-&gt;<a class="code" href="classSVF_1_1DDAStat.html#a0aec64ca944ea4f914a6fa799b7a8b38">_NumOfMustAliases</a>++);</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#adbd209b4a2327b2b068fbb56e12042f7">backtraceToStoreSrc</a>(pts,dpm);</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></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; CPtSet storepts;</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#aff744e724dcf06a2b1cdd7ba2b1093f1">startNewPTCompFromStoreDst</a>(storepts,dpm);</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">typename</span> CPtSet::iterator it = storepts.begin(), eit = storepts.end(); it!=eit; ++it)</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">if</span>(<a class="code" href="classSVF_1_1DDAVFSolver.html#ace35b8247204d9806ca1a4f01bff2364">propagateViaObj</a>(*it,<a class="code" href="classSVF_1_1DDAVFSolver.html#ad42efad8e857290459689833c224e467">getLoadCVar</a>(dpm)))</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; <a class="code" href="classSVF_1_1DDAVFSolver.html#adbd209b4a2327b2b068fbb56e12042f7">backtraceToStoreSrc</a>(pts,<a class="code" href="classSVF_1_1DDAVFSolver.html#ac4cb0b666d68d135c5e385bfc880fd67">getDPImWithOldCond</a>(dpm,*it,node));</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1DDAVFSolver.html#a94bcddbc7b9ccecb3fbb693b13372785">isStrongUpdate</a>(storepts,SVFUtil::cast&lt;StoreSVFGNode&gt;(node)))</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; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a40845b3027a1237076aa8297ca39e730">DDDA</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;backward strong update for obj &quot;</span> &lt;&lt; dpm.getCurNodeID() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <a class="code" href="SVFType_8h.html#a6c9e2209a2c38607a9e3b7fab242886a">DOSTAT</a>(<a class="code" href="classSVF_1_1DDAVFSolver.html#aeb6b56cf3d140d251b0524eb5cbd6dce">addSUStat</a>(dpm,node);)</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></div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; {</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <a class="code" href="SVFType_8h.html#a6c9e2209a2c38607a9e3b7fab242886a">DOSTAT</a>(<a class="code" href="classSVF_1_1DDAVFSolver.html#a7d0775354df32f293e98578ed071d33c">rmSUStat</a>(dpm,node);)</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#a040bc02742836b0a6d46ce3c3e89fa46">backtraceAlongIndirectVF</a>(pts,<a class="code" href="classSVF_1_1DDAVFSolver.html#ac4cb0b666d68d135c5e385bfc880fd67">getDPImWithOldCond</a>(dpm,*it,node));</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; }</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="classSVF_1_1DDAVFSolver.html#a040bc02742836b0a6d46ce3c3e89fa46">backtraceAlongIndirectVF</a>(pts,dpm);</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; }</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">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;MRSVFGNode&gt;(node))</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="classSVF_1_1DDAVFSolver.html#a040bc02742836b0a6d46ce3c3e89fa46">backtraceAlongIndirectVF</a>(pts,dpm);</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; }</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;unexpected kind of SVFG nodes&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;</div><div class="line"><a name="l00249"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a8c5220108a65fa281959529cb1e9cc57"> 249</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#a8c5220108a65fa281959529cb1e9cc57">reCompute</a>(<span class="keyword">const</span> DPIm&amp; dpm)</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; {</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; SVFGEdgeSet newIndirectEdges;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1DDAVFSolver.html#a5521918cc06c182c821b9fae8136e4fe">_pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a9235a60e7332c8416e113e7360441d97">isFunPtr</a>(dpm.getCurNodeID()))</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; {</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <span class="keyword">const</span> CallSiteSet&amp; csSet = <a class="code" href="classSVF_1_1DDAVFSolver.html#a5521918cc06c182c821b9fae8136e4fe">_pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#abf209739a97b96ae0d1c8451fdc684e8">getIndCallSites</a>(dpm.getCurNodeID());</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="keywordflow">for</span>(CallSiteSet::const_iterator it = csSet.begin(), eit = csSet.end(); it!=eit; ++it)</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#a637dddedd96942d56de6fd6d10c09169">updateCallGraphAndSVFG</a>(dpm, (*it),newIndirectEdges);</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; }</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <span class="keywordflow">if</span>(!newIndirectEdges.empty())</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#a4c307d486756daa1e79595b1e9edc40a">_callGraphSCC</a>-&gt;<a class="code" href="classSVF_1_1SCCDetection.html#a123b5006a6da7053e5e357140da3c5a3">find</a>();</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#ace037388135f272365cee2e87844bfba">reComputeForEdges</a>(dpm,newIndirectEdges,<span class="keyword">true</span>);</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160;</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; SVFGEdgeSet edgeSet(dpm.getLoc()-&gt;getOutEdges());</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#ace037388135f272365cee2e87844bfba">reComputeForEdges</a>(dpm,edgeSet,<span class="keyword">false</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;</div><div class="line"><a name="l00270"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#ace037388135f272365cee2e87844bfba"> 270</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#ace037388135f272365cee2e87844bfba">reComputeForEdges</a>(<span class="keyword">const</span> DPIm&amp; dpm, <span class="keyword">const</span> SVFGEdgeSet&amp; edgeSet, <span class="keywordtype">bool</span> indirectCall = <span class="keyword">false</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">for</span> (<a class="code" href="classSVF_1_1VFGNode.html#a3c558955f60c237c558d8faafed781e8">SVFGNode::const_iterator</a> it = edgeSet.begin(), eit = edgeSet.end(); it != eit; ++it)</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="keyword">const</span> <a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* edge = *it;</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* dst = edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>();</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <span class="keyword">typename</span> LocToDPMVecMap::const_iterator locIt = <a class="code" href="classSVF_1_1DDAVFSolver.html#ad849ae4509e88832f784c748468ab959">getLocToDPMVecMap</a>().find(dst-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>());</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <span class="keywordflow">if</span> (locIt == <a class="code" href="classSVF_1_1DDAVFSolver.html#ad849ae4509e88832f784c748468ab959">getLocToDPMVecMap</a>().end())</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; DPTItemSet dpmSet(locIt-&gt;second.begin(), locIt-&gt;second.end());</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">typename</span> DPTItemSet::const_iterator it = dpmSet.begin(),eit = dpmSet.end(); it!=eit; ++it)</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="keyword">const</span> DPIm&amp; dstDpm = *it;</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <span class="keywordflow">if</span>(!indirectCall &amp;&amp; SVFUtil::isa&lt;IndirectSVFGEdge&gt;(edge) &amp;&amp; !SVFUtil::isa&lt;LoadSVFGNode&gt;(edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>()))</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; {</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <span class="keywordflow">if</span>(dstDpm.getCurNodeID() == dpm.getCurNodeID())</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; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a40845b3027a1237076aa8297ca39e730">DDDA</a>,<a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;\t Recompute, forward from :&quot;</span>);</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a40845b3027a1237076aa8297ca39e730">DDDA</a>, dpm.dump());</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <a class="code" href="SVFType_8h.html#a6c9e2209a2c38607a9e3b7fab242886a">DOSTAT</a>(<a class="code" href="classSVF_1_1DDAVFSolver.html#ae40c7bad663e0fa07dee4be3d1794ff2">ddaStat</a>-&gt;<a class="code" href="classSVF_1_1DDAStat.html#aa9daed44e9d2ca2722ea9ab9d4517a21">_NumOfStepInCycle</a>++);</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#aa7e5839c5bc6f913561de10bce61e74b">clearbkVisited</a>(dstDpm);</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#a52737dd41c63404ef91691154aa250ce">findPT</a>(dstDpm);</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; }</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; }</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <span class="keywordflow">else</span></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">if</span>(indirectCall)</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a40845b3027a1237076aa8297ca39e730">DDDA</a>,<a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;\t Recompute for indirect call from :&quot;</span>);</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a40845b3027a1237076aa8297ca39e730">DDDA</a>,<a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;\t Recompute forward from :&quot;</span>);</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a40845b3027a1237076aa8297ca39e730">DDDA</a>, dpm.dump());</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <a class="code" href="SVFType_8h.html#a6c9e2209a2c38607a9e3b7fab242886a">DOSTAT</a>(<a class="code" href="classSVF_1_1DDAVFSolver.html#ae40c7bad663e0fa07dee4be3d1794ff2">ddaStat</a>-&gt;<a class="code" href="classSVF_1_1DDAStat.html#aa9daed44e9d2ca2722ea9ab9d4517a21">_NumOfStepInCycle</a>++);</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#aa7e5839c5bc6f913561de10bce61e74b">clearbkVisited</a>(dstDpm);</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#a52737dd41c63404ef91691154aa250ce">findPT</a>(dstDpm);</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; }</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; }</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; }</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; }</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160;</div><div class="line"><a name="l00311"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#af34ed8482d3737a8aaaff2d5c75960ec"> 311</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#af34ed8482d3737a8aaaff2d5c75960ec">buildSVFG</a>(<a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* pag)</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; {</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#aa1d1b6e8cc23f0a6d3935cbe4f02cbdf">_ander</a> = <a class="code" href="classSVF_1_1AndersenWaveDiff.html#a48ff6fc4badc79ad3204ae9bd95cc540">AndersenWaveDiff::createAndersenWaveDiff</a>(pag);</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#a74d83f06e8fc0ecedc1e1846030c99c6">_svfg</a> = <a class="code" href="classSVF_1_1DDAVFSolver.html#a0d563fe8b016b27a58f5b054fec9c38a">svfgBuilder</a>.<a class="code" href="classSVF_1_1SVFGBuilder.html#ab7353191edd06568e2598177d253c1d9">buildPTROnlySVFG</a>(<a class="code" href="classSVF_1_1DDAVFSolver.html#aa1d1b6e8cc23f0a6d3935cbe4f02cbdf">_ander</a>);</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#a5521918cc06c182c821b9fae8136e4fe">_pag</a> = <a class="code" href="classSVF_1_1DDAVFSolver.html#a74d83f06e8fc0ecedc1e1846030c99c6">_svfg</a>-&gt;<a class="code" href="classSVF_1_1VFG.html#a7622e381fbc1601b3f9a8384df2751bd">getPAG</a>();</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; }</div><div class="line"><a name="l00318"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#afe518d3d7f8051de5b9860f2460aa1b7"> 318</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#afe518d3d7f8051de5b9860f2460aa1b7">resetQuery</a>()</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; {</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1DDAVFSolver.html#afdecfbacc64cb8d694268aa73ec8a7b6">outOfBudgetQuery</a>)</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#ab60c701f1881d88aa4440991fb972638">OOBResetVisited</a>();</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160;</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#aa724698d499615bce7caf8f312b746a7">locToDpmSetMap</a>.clear();</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#a9d8959dfee05685cd74d0d7a78069692">dpmToloadDpmMap</a>.clear();</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#a6d62420837fe0c7814fc4da68a91eda4">loadToPTCVarMap</a>.clear();</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#afdecfbacc64cb8d694268aa73ec8a7b6">outOfBudgetQuery</a> = <span class="keyword">false</span>;</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#ae40c7bad663e0fa07dee4be3d1794ff2">ddaStat</a>-&gt;<a class="code" href="classSVF_1_1DDAStat.html#a674248754300d58fcef8eaf09436249e">_NumOfStep</a> = 0;</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; }</div><div class="line"><a name="l00330"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#ab60c701f1881d88aa4440991fb972638"> 330</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#ab60c701f1881d88aa4440991fb972638">OOBResetVisited</a>()</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; {</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">typename</span> LocToDPMVecMap::const_iterator it = <a class="code" href="classSVF_1_1DDAVFSolver.html#aa724698d499615bce7caf8f312b746a7">locToDpmSetMap</a>.begin(),eit = <a class="code" href="classSVF_1_1DDAVFSolver.html#aa724698d499615bce7caf8f312b746a7">locToDpmSetMap</a>.end(); it!=eit; ++it)</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; {</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; DPTItemSet dpmSet(it-&gt;second.begin(), it-&gt;second.end());</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">typename</span> DPTItemSet::const_iterator dit = dpmSet.begin(),deit=dpmSet.end(); dit!=deit; ++dit)</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1DDAVFSolver.html#a0b1f774883adc7d535f8363bf3c8b1e8">isOutOfBudgetDpm</a>(*dit)==<span class="keyword">false</span>)</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#aa7e5839c5bc6f913561de10bce61e74b">clearbkVisited</a>(*dit);</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; }</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; }</div><div class="line"><a name="l00341"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a55803a2d30137b5ad15c5afeec7c6b28"> 341</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* <a class="code" href="classSVF_1_1DDAVFSolver.html#a55803a2d30137b5ad15c5afeec7c6b28">getDefSVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* pagNode)<span class="keyword"> const</span></div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#acb7980c7e0d1d8ad6abab0b80831d2a9">getSVFG</a>()-&gt;<a class="code" href="classSVF_1_1SVFG.html#a8e7a945f4266e8dc7dcfff2ad6494bfb">getDefSVFGNode</a>(pagNode);</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; }</div><div class="line"><a name="l00346"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a040bc02742836b0a6d46ce3c3e89fa46"> 346</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#a040bc02742836b0a6d46ce3c3e89fa46">backtraceAlongIndirectVF</a>(CPtSet&amp; pts, <span class="keyword">const</span> DPIm&amp; oldDpm)</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; {</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node = oldDpm.getLoc();</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> obj = oldDpm.getCurNodeID();</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1DDAVFSolver.html#a5521918cc06c182c821b9fae8136e4fe">_pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a5d15e4b09784f438568ebe61f8aa5156">isConstantObj</a>(obj) || <a class="code" href="classSVF_1_1DDAVFSolver.html#a5521918cc06c182c821b9fae8136e4fe">_pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a980e54129ece0757d7f0373f37428507">isNonPointerObj</a>(obj))</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <span class="keyword">const</span> SVFGEdgeSet edgeSet(node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">getInEdges</a>());</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1VFGNode.html#a3c558955f60c237c558d8faafed781e8">SVFGNode::const_iterator</a> it = edgeSet.begin(), eit = edgeSet.end(); it != eit; ++it)</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; {</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1IndirectSVFGEdge.html">IndirectSVFGEdge</a>* indirEdge = SVFUtil::dyn_cast&lt;IndirectSVFGEdge&gt;(*it))</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; {</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a>&amp; guard = indirEdge-&gt;getPointsTo();</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; <span class="keywordflow">if</span>(guard.<a class="code" href="classSVF_1_1SparseBitVector.html#a112f2ede1240c95f9fe810f2882fab80">test</a>(obj))</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; {</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a40845b3027a1237076aa8297ca39e730">DDDA</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;\t\t==backtrace indirectVF svfgNode &quot;</span> &lt;&lt;</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; indirEdge-&gt;getDstID() &lt;&lt; <span class="stringliteral">&quot; --&gt; &quot;</span> &lt;&lt; indirEdge-&gt;getSrcID() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#af6a6243b497df5fdab9f658b9add9c8a">backwardPropDpm</a>(pts,oldDpm.getCurNodeID(),oldDpm,indirEdge);</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; }</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; }</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; }</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; }</div><div class="line"><a name="l00368"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a7a6af30f30f32d55fc910f2ae4909791"> 368</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#a7a6af30f30f32d55fc910f2ae4909791">backtraceAlongDirectVF</a>(CPtSet&amp; pts, <span class="keyword">const</span> DPIm&amp; oldDpm)</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; {</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node = oldDpm.getLoc();</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; <span class="keyword">const</span> SVFGEdgeSet edgeSet(node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">getInEdges</a>());</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1VFGNode.html#a3c558955f60c237c558d8faafed781e8">SVFGNode::const_iterator</a> it = edgeSet.begin(), eit = edgeSet.end(); it != eit; ++it)</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; {</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1DirectSVFGEdge.html">DirectSVFGEdge</a>* dirEdge = SVFUtil::dyn_cast&lt;DirectSVFGEdge&gt;(*it))</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; {</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a40845b3027a1237076aa8297ca39e730">DDDA</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;\t\t==backtrace directVF svfgNode &quot;</span> &lt;&lt;</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; dirEdge-&gt;getDstID() &lt;&lt; <span class="stringliteral">&quot; --&gt; &quot;</span> &lt;&lt; dirEdge-&gt;getSrcID() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* srcNode = dirEdge-&gt;getSrcNode();</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#af6a6243b497df5fdab9f658b9add9c8a">backwardPropDpm</a>(pts,<a class="code" href="classSVF_1_1DDAVFSolver.html#acb7980c7e0d1d8ad6abab0b80831d2a9">getSVFG</a>()-&gt;getLHSTopLevPtr(srcNode)-&gt;getId(),oldDpm,dirEdge);</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; }</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; }</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; }</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160;</div><div class="line"><a name="l00386"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#acd694c2092adf8c516d1aba5f798cec7"> 386</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#acd694c2092adf8c516d1aba5f798cec7">startNewPTCompFromLoadSrc</a>(CPtSet&amp; pts, <span class="keyword">const</span> DPIm&amp; oldDpm)</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; {</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1LoadVFGNode.html">LoadSVFGNode</a>* load = SVFUtil::cast&lt;LoadSVFGNode&gt;(oldDpm.getLoc());</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* loadSrc = <a class="code" href="classSVF_1_1DDAVFSolver.html#a55803a2d30137b5ad15c5afeec7c6b28">getDefSVFGNode</a>(load-&gt;<a class="code" href="classSVF_1_1StmtVFGNode.html#a837da5917c31e14aa51c6fa3e2640849">getPAGSrcNode</a>());</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a40845b3027a1237076aa8297ca39e730">DDDA</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;!##start new computation from loadSrc svfgNode &quot;</span> &lt;&lt;</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; load-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>() &lt;&lt; <span class="stringliteral">&quot; --&gt; &quot;</span> &lt;&lt; loadSrc-&gt;getId() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* edge = <a class="code" href="classSVF_1_1DDAVFSolver.html#acb7980c7e0d1d8ad6abab0b80831d2a9">getSVFG</a>()-&gt;<a class="code" href="classSVF_1_1VFG.html#ae1348fd6d196ee8a6bd8d98022464d50">getIntraVFGEdge</a>(loadSrc,load,<a class="code" href="classSVF_1_1VFGEdge.html#a156ae6a8b3a033f505c18c6b162e7cf5a08201e6cbff4817e44568747a966b71d">SVFGEdge::IntraDirectVF</a>);</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; assert(edge &amp;&amp; <span class="stringliteral">&quot;Edge not found!!&quot;</span>);</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#af6a6243b497df5fdab9f658b9add9c8a">backwardPropDpm</a>(pts,load-&gt;<a class="code" href="classSVF_1_1StmtVFGNode.html#a791a01f5d3528f8a8bf19369b5c61c37">getPAGSrcNodeID</a>(),oldDpm,edge);</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160;</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; }</div><div class="line"><a name="l00397"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#aff744e724dcf06a2b1cdd7ba2b1093f1"> 397</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#aff744e724dcf06a2b1cdd7ba2b1093f1">startNewPTCompFromStoreDst</a>(CPtSet&amp; pts, <span class="keyword">const</span> DPIm&amp; oldDpm)</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; {</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1StoreVFGNode.html">StoreSVFGNode</a>* store = SVFUtil::cast&lt;StoreSVFGNode&gt;(oldDpm.getLoc());</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* storeDst = <a class="code" href="classSVF_1_1DDAVFSolver.html#a55803a2d30137b5ad15c5afeec7c6b28">getDefSVFGNode</a>(store-&gt;<a class="code" href="classSVF_1_1StmtVFGNode.html#a8ba0e783f7fcbfa7cbd1d3a709ffa07f">getPAGDstNode</a>());</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a40845b3027a1237076aa8297ca39e730">DDDA</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;!##start new computation from storeDst svfgNode &quot;</span> &lt;&lt;</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; store-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>() &lt;&lt; <span class="stringliteral">&quot; --&gt; &quot;</span> &lt;&lt; storeDst-&gt;getId() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* edge = <a class="code" href="classSVF_1_1DDAVFSolver.html#acb7980c7e0d1d8ad6abab0b80831d2a9">getSVFG</a>()-&gt;<a class="code" href="classSVF_1_1VFG.html#ae1348fd6d196ee8a6bd8d98022464d50">getIntraVFGEdge</a>(storeDst,store,<a class="code" href="classSVF_1_1VFGEdge.html#a156ae6a8b3a033f505c18c6b162e7cf5a08201e6cbff4817e44568747a966b71d">SVFGEdge::IntraDirectVF</a>);</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; assert(edge &amp;&amp; <span class="stringliteral">&quot;Edge not found!!&quot;</span>);</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#af6a6243b497df5fdab9f658b9add9c8a">backwardPropDpm</a>(pts,store-&gt;<a class="code" href="classSVF_1_1StmtVFGNode.html#a04986961ad507be9fcf141ab51787da8">getPAGDstNodeID</a>(),oldDpm,edge);</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; }</div><div class="line"><a name="l00407"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#adbd209b4a2327b2b068fbb56e12042f7"> 407</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#adbd209b4a2327b2b068fbb56e12042f7">backtraceToStoreSrc</a>(CPtSet&amp; pts, <span class="keyword">const</span> DPIm&amp; oldDpm)</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; {</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1StoreVFGNode.html">StoreSVFGNode</a>* store = SVFUtil::cast&lt;StoreSVFGNode&gt;(oldDpm.getLoc());</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* storeSrc = <a class="code" href="classSVF_1_1DDAVFSolver.html#a55803a2d30137b5ad15c5afeec7c6b28">getDefSVFGNode</a>(store-&gt;<a class="code" href="classSVF_1_1StmtVFGNode.html#a837da5917c31e14aa51c6fa3e2640849">getPAGSrcNode</a>());</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a40845b3027a1237076aa8297ca39e730">DDDA</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;++backtrace to storeSrc from svfgNode &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1DDAVFSolver.html#a630aad14a285c954a50c632f9cb13fa9">getLoadDpm</a>(oldDpm).getLoc()-&gt;getId() &lt;&lt; <span class="stringliteral">&quot; to &quot;</span>&lt;&lt;</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; store-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>() &lt;&lt; <span class="stringliteral">&quot; to &quot;</span> &lt;&lt; storeSrc-&gt;getId() &lt;&lt;<span class="stringliteral">&quot;\n&quot;</span>);</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* edge = <a class="code" href="classSVF_1_1DDAVFSolver.html#acb7980c7e0d1d8ad6abab0b80831d2a9">getSVFG</a>()-&gt;<a class="code" href="classSVF_1_1VFG.html#ae1348fd6d196ee8a6bd8d98022464d50">getIntraVFGEdge</a>(storeSrc,store,<a class="code" href="classSVF_1_1VFGEdge.html#a156ae6a8b3a033f505c18c6b162e7cf5a08201e6cbff4817e44568747a966b71d">SVFGEdge::IntraDirectVF</a>);</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; assert(edge &amp;&amp; <span class="stringliteral">&quot;Edge not found!!&quot;</span>);</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#af6a6243b497df5fdab9f658b9add9c8a">backwardPropDpm</a>(pts,store-&gt;<a class="code" href="classSVF_1_1StmtVFGNode.html#a791a01f5d3528f8a8bf19369b5c61c37">getPAGSrcNodeID</a>(),oldDpm,edge);</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; }</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160;</div><div class="line"><a name="l00420"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#af6a6243b497df5fdab9f658b9add9c8a"> 420</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#af6a6243b497df5fdab9f658b9add9c8a">backwardPropDpm</a>(CPtSet&amp; pts, <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> ptr,<span class="keyword">const</span> DPIm&amp; oldDpm,<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* edge)</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; {</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; DPIm dpm(oldDpm);</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; dpm.setLocVar(edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>(),ptr);</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; <a class="code" href="SVFType_8h.html#ab6f41e9db3675dc689c5492418885041">DOTIMESTAT</a>(<span class="keywordtype">double</span> start = <a class="code" href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">DDAStat::getClk</a>(<span class="keyword">true</span>));</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1DDAVFSolver.html#a601282325e55badc15f3ba9141816af5">handleBKCondition</a>(dpm,edge)==<span class="keyword">false</span>)</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; {</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; <a class="code" href="SVFType_8h.html#ab6f41e9db3675dc689c5492418885041">DOTIMESTAT</a>(<a class="code" href="classSVF_1_1DDAVFSolver.html#ae40c7bad663e0fa07dee4be3d1794ff2">ddaStat</a>-&gt;<a class="code" href="classSVF_1_1DDAStat.html#a9625c4623acc4f6ccaca1ec8f04f5a54">_TotalTimeOfBKCondition</a> += <a class="code" href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">DDAStat::getClk</a>(<span class="keyword">true</span>) - start);</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a40845b3027a1237076aa8297ca39e730">DDDA</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;\t!!! infeasible path svfgNode: &quot;</span> &lt;&lt; edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">getDstID</a>() &lt;&lt; <span class="stringliteral">&quot; --| &quot;</span> &lt;&lt; edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">getSrcID</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; <a class="code" href="SVFType_8h.html#a6c9e2209a2c38607a9e3b7fab242886a">DOSTAT</a>(<a class="code" href="classSVF_1_1DDAVFSolver.html#ae40c7bad663e0fa07dee4be3d1794ff2">ddaStat</a>-&gt;<a class="code" href="classSVF_1_1DDAStat.html#a5ebc592d6bd7ef40aff848fb63e9e166">_NumOfInfeasiblePath</a>++);</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; }</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160;</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;IndirectSVFGEdge&gt;(edge))</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#a1cd1023bca18db16bc54e622c881e494">addLoadDpmAndCVar</a>(dpm,<a class="code" href="classSVF_1_1DDAVFSolver.html#a630aad14a285c954a50c632f9cb13fa9">getLoadDpm</a>(oldDpm),<a class="code" href="classSVF_1_1DDAVFSolver.html#ad42efad8e857290459689833c224e467">getLoadCVar</a>(oldDpm));</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160;</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; <a class="code" href="SVFType_8h.html#a6c9e2209a2c38607a9e3b7fab242886a">DOSTAT</a>(<a class="code" href="classSVF_1_1DDAVFSolver.html#ae40c7bad663e0fa07dee4be3d1794ff2">ddaStat</a>-&gt;<a class="code" href="classSVF_1_1DDAStat.html#a5ad94d2109b293d306f67741effc73aa">_NumOfDPM</a>++);</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#a99764ee5bc19378795fe464e9036e78b">unionDDAPts</a>(pts,<a class="code" href="classSVF_1_1DDAVFSolver.html#a52737dd41c63404ef91691154aa250ce">findPT</a>(dpm));</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; }</div><div class="line"><a name="l00443"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a345e5379f53b618adef014aa6887bfe7"> 443</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#a345e5379f53b618adef014aa6887bfe7">isMustAlias</a>(<span class="keyword">const</span> DPIm&amp;, <span class="keyword">const</span> DPIm&amp;)</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; {</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; }</div><div class="line"><a name="l00448"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a94bcddbc7b9ccecb3fbb693b13372785"> 448</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#a94bcddbc7b9ccecb3fbb693b13372785">isStrongUpdate</a>(<span class="keyword">const</span> CPtSet&amp; dstCPSet, <span class="keyword">const</span> <a class="code" href="classSVF_1_1StoreVFGNode.html">StoreSVFGNode</a>* store)</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; {</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; <span class="keywordflow">if</span> (dstCPSet.count() == 1)</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; {</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; <span class="keyword">typename</span> CPtSet::iterator it = dstCPSet.begin();</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; <span class="keyword">const</span> CVar&amp; var = *it;</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; <span class="comment">// Strong update can be made if this points-to target is not heap, array or field-insensitive.</span></div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1DDAVFSolver.html#a645c7d0637b49e139898016ff652e1f3">isHeapCondMemObj</a>(var,store) &amp;&amp; !<a class="code" href="classSVF_1_1DDAVFSolver.html#a9aaa5ee3dc8abc51c4b6e463e1949ee7">isArrayCondMemObj</a>(var)</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; &amp;&amp; !<a class="code" href="classSVF_1_1DDAVFSolver.html#a37a6321f50bef2939b287cc088e76170">isFieldInsenCondMemObj</a>(var) &amp;&amp; !<a class="code" href="classSVF_1_1DDAVFSolver.html#a20cadb651b41343437e135e985c4e566">isLocalCVarInRecursion</a>(var))</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; {</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; }</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; }</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; }</div><div class="line"><a name="l00465"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a20cadb651b41343437e135e985c4e566"> 465</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#a20cadb651b41343437e135e985c4e566">isLocalCVarInRecursion</a>(<span class="keyword">const</span> CVar&amp; var)<span class="keyword"> const</span></div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> <span class="keywordtype">id</span> = <a class="code" href="classSVF_1_1DDAVFSolver.html#a3fa002d4ba4194ffde62ecbdd361a24d">getPtrNodeID</a>(var);</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* obj = <a class="code" href="classSVF_1_1DDAVFSolver.html#a5521918cc06c182c821b9fae8136e4fe">_pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a2dd4d5f704906270af13e7a07f900eb1">getObject</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; assert(obj &amp;&amp; <span class="stringliteral">&quot;object not found!!&quot;</span>);</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; <span class="keywordflow">if</span>(obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#af7316c697eafc71d5fc93108da4e2cee">isStack</a>())</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; {</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svffun = <a class="code" href="classSVF_1_1DDAVFSolver.html#a5521918cc06c182c821b9fae8136e4fe">_pag</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(<span class="keywordtype">id</span>)-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a79b35a312248e96a89a28cbf1b99b6fe">getFunction</a>())</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; {</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#a4c307d486756daa1e79595b1e9edc40a">_callGraphSCC</a>-&gt;<a class="code" href="classSVF_1_1SCCDetection.html#a5d699af73b1e7ad4e3a5f6d26b8b6d15">isInCycle</a>(<a class="code" href="classSVF_1_1DDAVFSolver.html#abf24080617c6a74abed9f0bb0bc9c0c5">_callGraph</a>-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">getCallGraphNode</a>(svffun)-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>());</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; }</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; }</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; }</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160;</div><div class="line"><a name="l00481"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#ace35b8247204d9806ca1a4f01bff2364"> 481</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#ace35b8247204d9806ca1a4f01bff2364">propagateViaObj</a>(<span class="keyword">const</span> CVar&amp; storeObj, <span class="keyword">const</span> CVar&amp; loadObj)</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; {</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1DDAVFSolver.html#a3fa002d4ba4194ffde62ecbdd361a24d">getPtrNodeID</a>(storeObj) == <a class="code" href="classSVF_1_1DDAVFSolver.html#a3fa002d4ba4194ffde62ecbdd361a24d">getPtrNodeID</a>(loadObj))</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; }</div><div class="line"><a name="l00488"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#afcc074be34dd0c45418ff16b3d9d4192"> 488</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#afcc074be34dd0c45418ff16b3d9d4192">resolveFunPtr</a>(<span class="keyword">const</span> DPIm&amp; dpm)</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; {</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cbn= <a class="code" href="classSVF_1_1DDAVFSolver.html#acb7980c7e0d1d8ad6abab0b80831d2a9">getSVFG</a>()-&gt;isCallSiteRetSVFGNode(dpm.getLoc()))</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; {</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1DDAVFSolver.html#a5521918cc06c182c821b9fae8136e4fe">_pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a3dbe0b17694daa74f648a70e77efaf23">isIndirectCallSites</a>(cbn))</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; {</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> funPtr = <a class="code" href="classSVF_1_1DDAVFSolver.html#a5521918cc06c182c821b9fae8136e4fe">_pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a17c5d9fa7c0bd3cd03c06b5ff0906eb6">getFunPtr</a>(cbn);</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; DPIm funPtrDpm(dpm);</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; funPtrDpm.setLocVar(<a class="code" href="classSVF_1_1DDAVFSolver.html#acb7980c7e0d1d8ad6abab0b80831d2a9">getSVFG</a>()-&gt;<a class="code" href="classSVF_1_1DDAVFSolver.html#a55803a2d30137b5ad15c5afeec7c6b28">getDefSVFGNode</a>(<a class="code" href="classSVF_1_1DDAVFSolver.html#a5521918cc06c182c821b9fae8136e4fe">_pag</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(funPtr)),funPtr);</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#a52737dd41c63404ef91691154aa250ce">findPT</a>(funPtrDpm);</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; }</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; }</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun = <a class="code" href="classSVF_1_1DDAVFSolver.html#acb7980c7e0d1d8ad6abab0b80831d2a9">getSVFG</a>()-&gt;isFunEntrySVFGNode(dpm.getLoc()))</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; {</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; CallInstSet csSet;</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#aa1d1b6e8cc23f0a6d3935cbe4f02cbdf">_ander</a>-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a7c9b7e5fe37ae31ba84d167945ca57df">getPTACallGraph</a>()-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#a9a4b0c6672288b9201ab254b4c49548d">getIndCallSitesInvokingCallee</a>(fun,csSet);</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; <span class="keywordflow">for</span>(CallInstSet::const_iterator it = csSet.begin(), eit = csSet.end(); it!=eit; ++it)</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; {</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> funPtr = <a class="code" href="classSVF_1_1DDAVFSolver.html#a5521918cc06c182c821b9fae8136e4fe">_pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a17c5d9fa7c0bd3cd03c06b5ff0906eb6">getFunPtr</a>(*it);</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; DPIm funPtrDpm(dpm);</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; funPtrDpm.setLocVar(<a class="code" href="classSVF_1_1DDAVFSolver.html#acb7980c7e0d1d8ad6abab0b80831d2a9">getSVFG</a>()-&gt;<a class="code" href="classSVF_1_1DDAVFSolver.html#a55803a2d30137b5ad15c5afeec7c6b28">getDefSVFGNode</a>(<a class="code" href="classSVF_1_1DDAVFSolver.html#a5521918cc06c182c821b9fae8136e4fe">_pag</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(funPtr)),funPtr);</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#a52737dd41c63404ef91691154aa250ce">findPT</a>(funPtrDpm);</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; }</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; }</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; }</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160;</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; <span class="keyword">virtual</span> <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> <a class="code" href="classSVF_1_1DDAVFSolver.html#a3fa002d4ba4194ffde62ecbdd361a24d">getPtrNodeID</a>(<span class="keyword">const</span> CVar&amp; var) <span class="keyword">const</span> = 0;</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; <span class="keyword">virtual</span> CPtSet <a class="code" href="classSVF_1_1DDAVFSolver.html#ab10a34efa1acb6125ea32cf7a8cf919f">processGepPts</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1GepVFGNode.html">GepSVFGNode</a>* gep, <span class="keyword">const</span> CPtSet&amp; srcPts) = 0;</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#acfe7d961caac8f0f558881a9a006b1fa">handleAddr</a>(CPtSet&amp; pts,<span class="keyword">const</span> DPIm&amp; dpm,<span class="keyword">const</span> <a class="code" href="classSVF_1_1AddrVFGNode.html">AddrSVFGNode</a>* addr) = 0;</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; <span class="keyword">virtual</span> CPtSet <a class="code" href="classSVF_1_1DDAVFSolver.html#a38f5a6b666b2a427d55f1217f9c5595f">getConservativeCPts</a>(<span class="keyword">const</span> DPIm&amp; dpm) = 0;</div><div class="line"><a name="l00525"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a601282325e55badc15f3ba9141816af5"> 525</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#a601282325e55badc15f3ba9141816af5">handleBKCondition</a>(DPIm&amp;, <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>*)</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; {</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; }</div><div class="line"><a name="l00530"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a637dddedd96942d56de6fd6d10c09169"> 530</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#a637dddedd96942d56de6fd6d10c09169">updateCallGraphAndSVFG</a>(<span class="keyword">const</span> DPIm&amp;, <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>*, SVFGEdgeSet&amp;) {}</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160;</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160;</div><div class="line"><a name="l00535"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a7112ce6145be0855f8b035bb0d8a331c"> 535</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#a7112ce6145be0855f8b035bb0d8a331c">markbkVisited</a>(<span class="keyword">const</span> DPIm&amp; dpm)</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; {</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#a63d04c3af4529d0e0f82acd76ed57f6c">backwardVisited</a>.insert(dpm);</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; }</div><div class="line"><a name="l00539"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a9a9c3a8b5e4ffc89418073110e446f20"> 539</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#a9a9c3a8b5e4ffc89418073110e446f20">isbkVisited</a>(<span class="keyword">const</span> DPIm&amp; dpm)</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; {</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#a63d04c3af4529d0e0f82acd76ed57f6c">backwardVisited</a>.find(dpm)!=<a class="code" href="classSVF_1_1DDAVFSolver.html#a63d04c3af4529d0e0f82acd76ed57f6c">backwardVisited</a>.end();</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; }</div><div class="line"><a name="l00543"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#aa7e5839c5bc6f913561de10bce61e74b"> 543</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#aa7e5839c5bc6f913561de10bce61e74b">clearbkVisited</a>(<span class="keyword">const</span> DPIm&amp; dpm)</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; {</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; assert(<a class="code" href="classSVF_1_1DDAVFSolver.html#a63d04c3af4529d0e0f82acd76ed57f6c">backwardVisited</a>.find(dpm)!=<a class="code" href="classSVF_1_1DDAVFSolver.html#a63d04c3af4529d0e0f82acd76ed57f6c">backwardVisited</a>.end() &amp;&amp; <span class="stringliteral">&quot;dpm not found!&quot;</span>);</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#a63d04c3af4529d0e0f82acd76ed57f6c">backwardVisited</a>.erase(dpm);</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; }</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160;</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160;</div><div class="line"><a name="l00552"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#ae31e9281e4f1e0585fdf328b7339e1bf"> 552</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keyword">const</span> CPtSet&amp; <a class="code" href="classSVF_1_1DDAVFSolver.html#ae31e9281e4f1e0585fdf328b7339e1bf">getCachedPointsTo</a>(<span class="keyword">const</span> DPIm&amp; dpm)</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; {</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1DDAVFSolver.html#a7b35588de00e322afd742041bf735571">isTopLevelPtrStmt</a>(dpm.getLoc()))</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#aac432dfa7ccfc3434d9e0e2eb65afe7f">getCachedTLPointsTo</a>(dpm);</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#a2a2b3783074c9f509fc265b97b979704">getCachedADPointsTo</a>(dpm);</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; }</div><div class="line"><a name="l00559"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a239a55960dfbbe73df63063070a18b56"> 559</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#a239a55960dfbbe73df63063070a18b56">updateCachedPointsTo</a>(<span class="keyword">const</span> DPIm&amp; dpm, <span class="keyword">const</span> CPtSet&amp; pts)</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; {</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1DDAVFSolver.html#a99764ee5bc19378795fe464e9036e78b">unionDDAPts</a>(dpm, pts))</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; {</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; <a class="code" href="SVFType_8h.html#a6c9e2209a2c38607a9e3b7fab242886a">DOSTAT</a>(<span class="keywordtype">double</span> start = <a class="code" href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">DDAStat::getClk</a>(<span class="keyword">true</span>));</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#a8c5220108a65fa281959529cb1e9cc57">reCompute</a>(dpm);</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; <a class="code" href="SVFType_8h.html#a6c9e2209a2c38607a9e3b7fab242886a">DOSTAT</a>(<a class="code" href="classSVF_1_1DDAVFSolver.html#ae40c7bad663e0fa07dee4be3d1794ff2">ddaStat</a>-&gt;<a class="code" href="classSVF_1_1DDAStat.html#aae8366a4876154fa66298c7bf0fc47c4">_AnaTimeCyclePerQuery</a> += <a class="code" href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">DDAStat::getClk</a>(<span class="keyword">true</span>) - start);</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; }</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; }</div><div class="line"><a name="l00568"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#aac432dfa7ccfc3434d9e0e2eb65afe7f"> 568</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keyword">const</span> CPtSet&amp; <a class="code" href="classSVF_1_1DDAVFSolver.html#aac432dfa7ccfc3434d9e0e2eb65afe7f">getCachedTLPointsTo</a>(<span class="keyword">const</span> DPIm&amp; dpm)</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; {</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#a2d6df8149b45d719e22fc505df94171a">dpmToTLCPtSetMap</a>[dpm];</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; }</div><div class="line"><a name="l00572"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a2a2b3783074c9f509fc265b97b979704"> 572</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keyword">const</span> CPtSet&amp; <a class="code" href="classSVF_1_1DDAVFSolver.html#a2a2b3783074c9f509fc265b97b979704">getCachedADPointsTo</a>(<span class="keyword">const</span> DPIm&amp; dpm)</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; {</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#a2565bf8dcacb22350dc1dc98ec7595f2">dpmToADCPtSetMap</a>[dpm];</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; }</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160;</div><div class="line"><a name="l00579"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a7b35588de00e322afd742041bf735571"> 579</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#a7b35588de00e322afd742041bf735571">isTopLevelPtrStmt</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* stmt)</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; {</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; <span class="keywordflow">return</span> !SVFUtil::isa&lt;StoreSVFGNode, MRSVFGNode&gt;(stmt);</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; }</div><div class="line"><a name="l00584"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#ac4cb0b666d68d135c5e385bfc880fd67"> 584</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> DPIm <a class="code" href="classSVF_1_1DDAVFSolver.html#ac4cb0b666d68d135c5e385bfc880fd67">getDPImWithOldCond</a>(<span class="keyword">const</span> DPIm&amp; oldDpm,<span class="keyword">const</span> CVar&amp; var, <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* loc)</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; {</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; DPIm dpm(oldDpm);</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; dpm.setLocVar(loc,<a class="code" href="classSVF_1_1DDAVFSolver.html#a3fa002d4ba4194ffde62ecbdd361a24d">getPtrNodeID</a>(var));</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160;</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;StoreSVFGNode&gt;(loc))</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#a1cd1023bca18db16bc54e622c881e494">addLoadDpmAndCVar</a>(dpm,<a class="code" href="classSVF_1_1DDAVFSolver.html#a630aad14a285c954a50c632f9cb13fa9">getLoadDpm</a>(oldDpm),var);</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160;</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;LoadSVFGNode&gt;(loc))</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#a1cd1023bca18db16bc54e622c881e494">addLoadDpmAndCVar</a>(dpm,oldDpm,var);</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160;</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; <a class="code" href="SVFType_8h.html#a6c9e2209a2c38607a9e3b7fab242886a">DOSTAT</a>(<a class="code" href="classSVF_1_1DDAVFSolver.html#ae40c7bad663e0fa07dee4be3d1794ff2">ddaStat</a>-&gt;<a class="code" href="classSVF_1_1DDAStat.html#a5ad94d2109b293d306f67741effc73aa">_NumOfDPM</a>++);</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; <span class="keywordflow">return</span> dpm;</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; }</div><div class="line"><a name="l00599"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#aba0ec611a5cfd096ac0b8b11e0bd5580"> 599</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#aba0ec611a5cfd096ac0b8b11e0bd5580">SVFGSCCDetection</a>()</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; {</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1DDAVFSolver.html#a54f5d4972238ae69f19c9da3b9f51644">_svfgSCC</a>==<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; {</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#a54f5d4972238ae69f19c9da3b9f51644">_svfgSCC</a> = <span class="keyword">new</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#a502207f81ed22fa42f9e18ccba83ad4e">SVFGSCC</a>(<a class="code" href="classSVF_1_1DDAVFSolver.html#acb7980c7e0d1d8ad6abab0b80831d2a9">getSVFG</a>());</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; }</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#a54f5d4972238ae69f19c9da3b9f51644">_svfgSCC</a>-&gt;<a class="code" href="classSVF_1_1SCCDetection.html#a123b5006a6da7053e5e357140da3c5a3">find</a>();</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; }</div><div class="line"><a name="l00608"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a1583ed2eb1d4b88dc2a5b4c0b6842496"> 608</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> <a class="code" href="classSVF_1_1DDAVFSolver.html#a1583ed2eb1d4b88dc2a5b4c0b6842496">getSVFGSCCRepNode</a>(<a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> <span class="keywordtype">id</span>)</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; {</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#a54f5d4972238ae69f19c9da3b9f51644">_svfgSCC</a>-&gt;<a class="code" href="classSVF_1_1SCCDetection.html#a3a5fdc9330a657240f77199f5aee602d">repNode</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; }</div><div class="line"><a name="l00613"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#add7daee4a0ecae479a5ab015130c8c93"> 613</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#add7daee4a0ecae479a5ab015130c8c93">isSVFGNodeInCycle</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node)</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; {</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#a54f5d4972238ae69f19c9da3b9f51644">_svfgSCC</a>-&gt;<a class="code" href="classSVF_1_1SCCDetection.html#a5d699af73b1e7ad4e3a5f6d26b8b6d15">isInCycle</a>(node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>());</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; }</div><div class="line"><a name="l00618"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a034e3c8b2eec00aee9de439dfeeda332"> 618</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#a034e3c8b2eec00aee9de439dfeeda332">edgeInSVFGSCC</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* edge)</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; {</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; <span class="keywordflow">return</span> (<a class="code" href="classSVF_1_1DDAVFSolver.html#a1583ed2eb1d4b88dc2a5b4c0b6842496">getSVFGSCCRepNode</a>(edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">getSrcID</a>()) == <a class="code" href="classSVF_1_1DDAVFSolver.html#a1583ed2eb1d4b88dc2a5b4c0b6842496">getSVFGSCCRepNode</a>(edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">getDstID</a>()));</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; }</div><div class="line"><a name="l00623"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#afc2b0eeb1d5d5f292690f3c949217c38"> 623</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#afc2b0eeb1d5d5f292690f3c949217c38">setCallGraph</a> (<a class="code" href="classSVF_1_1PTACallGraph.html">PTACallGraph</a>* cg)</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; {</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#abf24080617c6a74abed9f0bb0bc9c0c5">_callGraph</a> = cg;</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; }</div><div class="line"><a name="l00628"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#abd652b2627f68d7d4f8bf3bdb20ce975"> 628</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#abd652b2627f68d7d4f8bf3bdb20ce975">setCallGraphSCC</a> (CallGraphSCC* scc)</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; {</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#a4c307d486756daa1e79595b1e9edc40a">_callGraphSCC</a> = scc;</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; }</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160;</div><div class="line"><a name="l00634"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a645c7d0637b49e139898016ff652e1f3"> 634</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#a645c7d0637b49e139898016ff652e1f3">isHeapCondMemObj</a>(<span class="keyword">const</span> CVar&amp; var, <span class="keyword">const</span> <a class="code" href="classSVF_1_1StoreVFGNode.html">StoreSVFGNode</a>*)</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; {</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* mem = <a class="code" href="classSVF_1_1DDAVFSolver.html#a5521918cc06c182c821b9fae8136e4fe">_pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a2dd4d5f704906270af13e7a07f900eb1">getObject</a>(<a class="code" href="classSVF_1_1DDAVFSolver.html#a3fa002d4ba4194ffde62ecbdd361a24d">getPtrNodeID</a>(var));</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; assert(mem &amp;&amp; <span class="stringliteral">&quot;memory object is null??&quot;</span>);</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; <span class="keywordflow">return</span> mem-&gt;<a class="code" href="classSVF_1_1MemObj.html#a898c5bb3956402578266a6fb142e02b1">isHeap</a>();</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; }</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160;</div><div class="line"><a name="l00641"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a9aaa5ee3dc8abc51c4b6e463e1949ee7"> 641</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#a9aaa5ee3dc8abc51c4b6e463e1949ee7">isArrayCondMemObj</a>(<span class="keyword">const</span> CVar&amp; var)<span class="keyword"> const</span></div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* mem = <a class="code" href="classSVF_1_1DDAVFSolver.html#a5521918cc06c182c821b9fae8136e4fe">_pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a2dd4d5f704906270af13e7a07f900eb1">getObject</a>(<a class="code" href="classSVF_1_1DDAVFSolver.html#a3fa002d4ba4194ffde62ecbdd361a24d">getPtrNodeID</a>(var));</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; assert(mem &amp;&amp; <span class="stringliteral">&quot;memory object is null??&quot;</span>);</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; <span class="keywordflow">return</span> mem-&gt;<a class="code" href="classSVF_1_1MemObj.html#aeba6eeed4843a1a90cf1d4b7deb197af">isArray</a>();</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; }</div><div class="line"><a name="l00647"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a37a6321f50bef2939b287cc088e76170"> 647</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#a37a6321f50bef2939b287cc088e76170">isFieldInsenCondMemObj</a>(<span class="keyword">const</span> CVar&amp; var)<span class="keyword"> const</span></div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* mem = <a class="code" href="classSVF_1_1DDAVFSolver.html#a5521918cc06c182c821b9fae8136e4fe">_pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#af76a55c3b8255a81a566bdce35ffc749">getBaseObj</a>(<a class="code" href="classSVF_1_1DDAVFSolver.html#a3fa002d4ba4194ffde62ecbdd361a24d">getPtrNodeID</a>(var));</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; <span class="keywordflow">return</span> mem-&gt;<a class="code" href="classSVF_1_1MemObj.html#a41d85883d44ad77832b020455951c6fc">isFieldInsensitive</a>();</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; }</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160;</div><div class="line"><a name="l00656"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#ad849ae4509e88832f784c748468ab959"> 656</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> LocToDPMVecMap&amp; <a class="code" href="classSVF_1_1DDAVFSolver.html#ad849ae4509e88832f784c748468ab959">getLocToDPMVecMap</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#aa724698d499615bce7caf8f312b746a7">locToDpmSetMap</a>;</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; }</div><div class="line"><a name="l00660"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a6c32a1cdcdbea0151c8cf17ffe598f29"> 660</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> DPTItemSet&amp; <a class="code" href="classSVF_1_1DDAVFSolver.html#a6c32a1cdcdbea0151c8cf17ffe598f29">getDpmSetAtLoc</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* loc)</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; {</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#aa724698d499615bce7caf8f312b746a7">locToDpmSetMap</a>[loc-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>()];</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; }</div><div class="line"><a name="l00664"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#af7be3fa6c73dde97d6f9fd0395c9aee0"> 664</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#af7be3fa6c73dde97d6f9fd0395c9aee0">addDpmToLoc</a>(<span class="keyword">const</span> DPIm&amp; dpm)</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; {</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#aa724698d499615bce7caf8f312b746a7">locToDpmSetMap</a>[dpm.getLoc()-&gt;getId()].insert(dpm);</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; }</div><div class="line"><a name="l00668"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a00ae738a76564b7b334faae567674e34"> 668</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#a00ae738a76564b7b334faae567674e34">removeDpmFromLoc</a>(<span class="keyword">const</span> DPIm&amp; dpm)</div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; {</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; assert(dpm == <a class="code" href="classSVF_1_1DDAVFSolver.html#aa724698d499615bce7caf8f312b746a7">locToDpmSetMap</a>[dpm.getLoc()].back() &amp;&amp; <span class="stringliteral">&quot;dpm not match with the end of vector&quot;</span>);</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#aa724698d499615bce7caf8f312b746a7">locToDpmSetMap</a>[dpm.getLoc()-&gt;getId()].erase(dpm);</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; }</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160;</div><div class="line"><a name="l00677"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a1cd1023bca18db16bc54e622c881e494"> 677</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#a1cd1023bca18db16bc54e622c881e494">addLoadDpmAndCVar</a>(<span class="keyword">const</span> DPIm&amp; dpm,<span class="keyword">const</span> DPIm&amp; loadDpm,<span class="keyword">const</span> CVar&amp; loadVar)</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160; {</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#a7579491400f1781356cb7d1913537547">addLoadCVar</a>(dpm,loadVar);</div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#a4725013a7617645e1418ed670d4837b5">addLoadDpm</a>(dpm,loadDpm);</div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; }</div><div class="line"><a name="l00683"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a4725013a7617645e1418ed670d4837b5"> 683</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#a4725013a7617645e1418ed670d4837b5">addLoadDpm</a>(<span class="keyword">const</span> DPIm&amp; dpm,<span class="keyword">const</span> DPIm&amp; loadDpm)</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; {</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; <span class="keyword">typename</span> DPMToDPMMap::iterator it = <a class="code" href="classSVF_1_1DDAVFSolver.html#a9d8959dfee05685cd74d0d7a78069692">dpmToloadDpmMap</a>.find(dpm);</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; <span class="keywordflow">if</span>(it!=<a class="code" href="classSVF_1_1DDAVFSolver.html#a9d8959dfee05685cd74d0d7a78069692">dpmToloadDpmMap</a>.end())</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; it-&gt;second = loadDpm;</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#a9d8959dfee05685cd74d0d7a78069692">dpmToloadDpmMap</a>.insert(std::make_pair(dpm,loadDpm));</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; }</div><div class="line"><a name="l00691"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a630aad14a285c954a50c632f9cb13fa9"> 691</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> DPIm&amp; <a class="code" href="classSVF_1_1DDAVFSolver.html#a630aad14a285c954a50c632f9cb13fa9">getLoadDpm</a>(<span class="keyword">const</span> DPIm&amp; dpm)<span class="keyword"> const</span></div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; <span class="keyword">typename</span> DPMToDPMMap::const_iterator it = <a class="code" href="classSVF_1_1DDAVFSolver.html#a9d8959dfee05685cd74d0d7a78069692">dpmToloadDpmMap</a>.find(dpm);</div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; assert(it!=<a class="code" href="classSVF_1_1DDAVFSolver.html#a9d8959dfee05685cd74d0d7a78069692">dpmToloadDpmMap</a>.end() &amp;&amp; <span class="stringliteral">&quot;not found??&quot;</span>);</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; }</div><div class="line"><a name="l00697"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a7579491400f1781356cb7d1913537547"> 697</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#a7579491400f1781356cb7d1913537547">addLoadCVar</a>(<span class="keyword">const</span> DPIm&amp; dpm, <span class="keyword">const</span> CVar&amp; loadVar)</div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; {</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; <span class="keyword">typename</span> DPMToCVarMap::iterator it = <a class="code" href="classSVF_1_1DDAVFSolver.html#a6d62420837fe0c7814fc4da68a91eda4">loadToPTCVarMap</a>.find(dpm);</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; <span class="keywordflow">if</span>(it!=<a class="code" href="classSVF_1_1DDAVFSolver.html#a6d62420837fe0c7814fc4da68a91eda4">loadToPTCVarMap</a>.end())</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; it-&gt;second = loadVar;</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#a6d62420837fe0c7814fc4da68a91eda4">loadToPTCVarMap</a>.insert(std::make_pair(dpm,loadVar));</div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; }</div><div class="line"><a name="l00705"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#ad42efad8e857290459689833c224e467"> 705</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> CVar&amp; <a class="code" href="classSVF_1_1DDAVFSolver.html#ad42efad8e857290459689833c224e467">getLoadCVar</a>(<span class="keyword">const</span> DPIm&amp; dpm)<span class="keyword"> const</span></div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; <span class="keyword">typename</span> DPMToCVarMap::const_iterator it = <a class="code" href="classSVF_1_1DDAVFSolver.html#a6d62420837fe0c7814fc4da68a91eda4">loadToPTCVarMap</a>.find(dpm);</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; assert(it!=<a class="code" href="classSVF_1_1DDAVFSolver.html#a6d62420837fe0c7814fc4da68a91eda4">loadToPTCVarMap</a>.end() &amp;&amp; <span class="stringliteral">&quot;not found??&quot;</span>);</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; }</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1AndersenWaveDiff.html">AndersenWaveDiff</a>* <a class="code" href="classSVF_1_1DDAVFSolver.html#ac39860015b45b9af6351d0343f8983bb">getAndersenAnalysis</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#aa1d1b6e8cc23f0a6d3935cbe4f02cbdf">_ander</a>;</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; }</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160;</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#a9005f1f0e4a808838276ff44b300f96d">handleOutOfBudgetDpm</a>(<span class="keyword">const</span> DPIm&amp; dpm) {}</div><div class="line"><a name="l00721"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a3fb52286c5324ea3d58e22c630b307e3"> 721</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#a3fb52286c5324ea3d58e22c630b307e3">testOutOfBudget</a>(<span class="keyword">const</span> DPIm&amp; dpm)</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; {</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1DDAVFSolver.html#afdecfbacc64cb8d694268aa73ec8a7b6">outOfBudgetQuery</a>) <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; <span class="keywordflow">if</span>(++<a class="code" href="classSVF_1_1DDAVFSolver.html#ae40c7bad663e0fa07dee4be3d1794ff2">ddaStat</a>-&gt;<a class="code" href="classSVF_1_1DDAStat.html#a674248754300d58fcef8eaf09436249e">_NumOfStep</a> &gt; DPIm::getMaxBudget())</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#afdecfbacc64cb8d694268aa73ec8a7b6">outOfBudgetQuery</a> = <span class="keyword">true</span>;</div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#a0b1f774883adc7d535f8363bf3c8b1e8">isOutOfBudgetDpm</a>(dpm) || <a class="code" href="classSVF_1_1DDAVFSolver.html#afdecfbacc64cb8d694268aa73ec8a7b6">outOfBudgetQuery</a>;</div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; }</div><div class="line"><a name="l00728"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a7994236bff84ba8244592fdf5e546734"> 728</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#a7994236bff84ba8244592fdf5e546734">isOutOfBudgetQuery</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#afdecfbacc64cb8d694268aa73ec8a7b6">outOfBudgetQuery</a>;</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; }</div><div class="line"><a name="l00732"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#ae1e77060ac22d465b5cc9430962e280c"> 732</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#ae1e77060ac22d465b5cc9430962e280c">addOutOfBudgetDpm</a>(<span class="keyword">const</span> DPIm&amp; dpm)</div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; {</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#aad57a954473f3099188cf8c8fba87880">outOfBudgetDpms</a>.insert(dpm);</div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; }</div><div class="line"><a name="l00736"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a0b1f774883adc7d535f8363bf3c8b1e8"> 736</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#a0b1f774883adc7d535f8363bf3c8b1e8">isOutOfBudgetDpm</a>(<span class="keyword">const</span> DPIm&amp; dpm)<span class="keyword"> const</span></div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#aad57a954473f3099188cf8c8fba87880">outOfBudgetDpms</a>.find(dpm) != <a class="code" href="classSVF_1_1DDAVFSolver.html#aad57a954473f3099188cf8c8fba87880">outOfBudgetDpms</a>.end();</div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; }</div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160;</div><div class="line"><a name="l00743"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#adcb641eec4f620effdb3f61a46429f40"> 743</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1DDAStat.html">DDAStat</a>* <a class="code" href="classSVF_1_1DDAVFSolver.html#adcb641eec4f620effdb3f61a46429f40">setDDAStat</a>(<a class="code" href="classSVF_1_1DDAStat.html">DDAStat</a>* s)</div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; {</div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#ae40c7bad663e0fa07dee4be3d1794ff2">ddaStat</a> = s;</div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#ae40c7bad663e0fa07dee4be3d1794ff2">ddaStat</a>;</div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160; }</div><div class="line"><a name="l00749"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#aeb6b56cf3d140d251b0524eb5cbd6dce"> 749</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#aeb6b56cf3d140d251b0524eb5cbd6dce">addSUStat</a>(<span class="keyword">const</span> DPIm&amp; dpm, <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node)</div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160; {</div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1DDAVFSolver.html#af66895278f0ecbc882f9e4f43ef9c8a8">storeToDPMs</a>[node].insert(dpm).second)</div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160; {</div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#ae40c7bad663e0fa07dee4be3d1794ff2">ddaStat</a>-&gt;<a class="code" href="classSVF_1_1DDAStat.html#a5c007645d73bfc5cfefef672f3c1dcf1">_NumOfStrongUpdates</a>++;</div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#ae40c7bad663e0fa07dee4be3d1794ff2">ddaStat</a>-&gt;<a class="code" href="classSVF_1_1DDAStat.html#ad53ad7a958c05b45624d2859a6a9e647">_StrongUpdateStores</a>.<a class="code" href="classSVF_1_1SparseBitVector.html#a61bd86909a141f9de873d92c0f904832">set</a>(node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>());</div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160; }</div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160; }</div><div class="line"><a name="l00758"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a7d0775354df32f293e98578ed071d33c"> 758</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#a7d0775354df32f293e98578ed071d33c">rmSUStat</a>(<span class="keyword">const</span> DPIm&amp; dpm, <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node)</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; {</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; DPTItemSet&amp; dpmSet = <a class="code" href="classSVF_1_1DDAVFSolver.html#af66895278f0ecbc882f9e4f43ef9c8a8">storeToDPMs</a>[node];</div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160; <span class="keywordflow">if</span> (dpmSet.erase(dpm))</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160; {</div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#ae40c7bad663e0fa07dee4be3d1794ff2">ddaStat</a>-&gt;<a class="code" href="classSVF_1_1DDAStat.html#a5c007645d73bfc5cfefef672f3c1dcf1">_NumOfStrongUpdates</a>--;</div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160; <span class="keywordflow">if</span>(dpmSet.empty())</div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160; <a class="code" href="classSVF_1_1DDAVFSolver.html#ae40c7bad663e0fa07dee4be3d1794ff2">ddaStat</a>-&gt;<a class="code" href="classSVF_1_1DDAStat.html#ad53ad7a958c05b45624d2859a6a9e647">_StrongUpdateStores</a>.<a class="code" href="classSVF_1_1SparseBitVector.html#ad5337b5aeed50f8b7ffd56b14ee25c9f">reset</a>(node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>());</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; }</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; }</div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160;</div><div class="line"><a name="l00769"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#afdecfbacc64cb8d694268aa73ec8a7b6"> 769</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1DDAVFSolver.html#afdecfbacc64cb8d694268aa73ec8a7b6">outOfBudgetQuery</a>; </div><div class="line"><a name="l00770"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a5521918cc06c182c821b9fae8136e4fe"> 770</a></span>&#160; <a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* <a class="code" href="classSVF_1_1DDAVFSolver.html#a5521918cc06c182c821b9fae8136e4fe">_pag</a>; </div><div class="line"><a name="l00771"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a74d83f06e8fc0ecedc1e1846030c99c6"> 771</a></span>&#160; <a class="code" href="classSVF_1_1SVFG.html">SVFG</a>* <a class="code" href="classSVF_1_1DDAVFSolver.html#a74d83f06e8fc0ecedc1e1846030c99c6">_svfg</a>; </div><div class="line"><a name="l00772"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#aa1d1b6e8cc23f0a6d3935cbe4f02cbdf"> 772</a></span>&#160; <a class="code" href="classSVF_1_1AndersenWaveDiff.html">AndersenWaveDiff</a>* <a class="code" href="classSVF_1_1DDAVFSolver.html#aa1d1b6e8cc23f0a6d3935cbe4f02cbdf">_ander</a>; </div><div class="line"><a name="l00773"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#ae0e78fafb7eec0fbc1a02d24547335e9"> 773</a></span>&#160; <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> <a class="code" href="classSVF_1_1DDAVFSolver.html#ae0e78fafb7eec0fbc1a02d24547335e9">candidateQueries</a>; </div><div class="line"><a name="l00774"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#abf24080617c6a74abed9f0bb0bc9c0c5"> 774</a></span>&#160; <a class="code" href="classSVF_1_1PTACallGraph.html">PTACallGraph</a>* <a class="code" href="classSVF_1_1DDAVFSolver.html#abf24080617c6a74abed9f0bb0bc9c0c5">_callGraph</a>; </div><div class="line"><a name="l00775"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a4c307d486756daa1e79595b1e9edc40a"> 775</a></span>&#160; CallGraphSCC* <a class="code" href="classSVF_1_1DDAVFSolver.html#a4c307d486756daa1e79595b1e9edc40a">_callGraphSCC</a>; </div><div class="line"><a name="l00776"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a54f5d4972238ae69f19c9da3b9f51644"> 776</a></span>&#160; SVFGSCC* <a class="code" href="classSVF_1_1DDAVFSolver.html#a54f5d4972238ae69f19c9da3b9f51644">_svfgSCC</a>; </div><div class="line"><a name="l00777"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a63d04c3af4529d0e0f82acd76ed57f6c"> 777</a></span>&#160; DPTItemSet <a class="code" href="classSVF_1_1DDAVFSolver.html#a63d04c3af4529d0e0f82acd76ed57f6c">backwardVisited</a>; </div><div class="line"><a name="l00778"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a2d6df8149b45d719e22fc505df94171a"> 778</a></span>&#160; DPImToCPtSetMap <a class="code" href="classSVF_1_1DDAVFSolver.html#a2d6df8149b45d719e22fc505df94171a">dpmToTLCPtSetMap</a>; </div><div class="line"><a name="l00779"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a2565bf8dcacb22350dc1dc98ec7595f2"> 779</a></span>&#160; DPImToCPtSetMap <a class="code" href="classSVF_1_1DDAVFSolver.html#a2565bf8dcacb22350dc1dc98ec7595f2">dpmToADCPtSetMap</a>; </div><div class="line"><a name="l00780"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#aa724698d499615bce7caf8f312b746a7"> 780</a></span>&#160; LocToDPMVecMap <a class="code" href="classSVF_1_1DDAVFSolver.html#aa724698d499615bce7caf8f312b746a7">locToDpmSetMap</a>; </div><div class="line"><a name="l00781"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a9d8959dfee05685cd74d0d7a78069692"> 781</a></span>&#160; DPMToDPMMap <a class="code" href="classSVF_1_1DDAVFSolver.html#a9d8959dfee05685cd74d0d7a78069692">dpmToloadDpmMap</a>; </div><div class="line"><a name="l00782"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a6d62420837fe0c7814fc4da68a91eda4"> 782</a></span>&#160; DPMToCVarMap <a class="code" href="classSVF_1_1DDAVFSolver.html#a6d62420837fe0c7814fc4da68a91eda4">loadToPTCVarMap</a>; </div><div class="line"><a name="l00783"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#aad57a954473f3099188cf8c8fba87880"> 783</a></span>&#160; DPTItemSet <a class="code" href="classSVF_1_1DDAVFSolver.html#aad57a954473f3099188cf8c8fba87880">outOfBudgetDpms</a>; </div><div class="line"><a name="l00784"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#af66895278f0ecbc882f9e4f43ef9c8a8"> 784</a></span>&#160; StoreToPMSetMap <a class="code" href="classSVF_1_1DDAVFSolver.html#af66895278f0ecbc882f9e4f43ef9c8a8">storeToDPMs</a>; </div><div class="line"><a name="l00785"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#ae40c7bad663e0fa07dee4be3d1794ff2"> 785</a></span>&#160; <a class="code" href="classSVF_1_1DDAStat.html">DDAStat</a>* <a class="code" href="classSVF_1_1DDAVFSolver.html#ae40c7bad663e0fa07dee4be3d1794ff2">ddaStat</a>; </div><div class="line"><a name="l00786"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAVFSolver.html#a0d563fe8b016b27a58f5b054fec9c38a"> 786</a></span>&#160; <a class="code" href="classSVF_1_1SVFGBuilder.html">SVFGBuilder</a> <a class="code" href="classSVF_1_1DDAVFSolver.html#a0d563fe8b016b27a58f5b054fec9c38a">svfgBuilder</a>; </div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160;};</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160;</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160;} <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160;</div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* VALUEFLOWDDA_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="Andersen_8h_html"><div class="ttname"><a href="Andersen_8h.html">Andersen.h</a></div></div>
70
+ <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a37a6321f50bef2939b287cc088e76170"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a37a6321f50bef2939b287cc088e76170">SVF::DDAVFSolver::isFieldInsenCondMemObj</a></div><div class="ttdeci">bool isFieldInsenCondMemObj(const CVar &amp;var) const</div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00647">DDAVFSolver.h:647</a></div></div>
71
71
  <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a8b5a34679fb1362425c88d6e74b6c019"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a8b5a34679fb1362425c88d6e74b6c019">SVF::DDAVFSolver::DPImToCPtSetMap</a></div><div class="ttdeci">OrderedMap&lt; DPIm, CPtSet &gt; DPImToCPtSetMap</div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00056">DDAVFSolver.h:56</a></div></div>
72
- <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a4c307d486756daa1e79595b1e9edc40a"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a4c307d486756daa1e79595b1e9edc40a">SVF::DDAVFSolver::_callGraphSCC</a></div><div class="ttdeci">CallGraphSCC * _callGraphSCC</div><div class="ttdoc">SCC for CallGraph. </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00779">DDAVFSolver.h:779</a></div></div>
72
+ <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a4c307d486756daa1e79595b1e9edc40a"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a4c307d486756daa1e79595b1e9edc40a">SVF::DDAVFSolver::_callGraphSCC</a></div><div class="ttdeci">CallGraphSCC * _callGraphSCC</div><div class="ttdoc">SCC for CallGraph. </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00775">DDAVFSolver.h:775</a></div></div>
73
73
  <div class="ttc" id="classSVF_1_1StoreVFGNode_html"><div class="ttname"><a href="classSVF_1_1StoreVFGNode.html">SVF::StoreVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00240">VFGNode.h:240</a></div></div>
74
74
  <div class="ttc" id="classSVF_1_1VFGEdge_html_a156ae6a8b3a033f505c18c6b162e7cf5a08201e6cbff4817e44568747a966b71d"><div class="ttname"><a href="classSVF_1_1VFGEdge.html#a156ae6a8b3a033f505c18c6b162e7cf5a08201e6cbff4817e44568747a966b71d">SVF::VFGEdge::IntraDirectVF</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGEdge_8h_source.html#l00053">VFGEdge.h:53</a></div></div>
75
- <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a040bc02742836b0a6d46ce3c3e89fa46"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a040bc02742836b0a6d46ce3c3e89fa46">SVF::DDAVFSolver::backtraceAlongIndirectVF</a></div><div class="ttdeci">void backtraceAlongIndirectVF(CPtSet &amp;pts, const DPIm &amp;oldDpm)</div><div class="ttdoc">Backward traverse along indirect value flows. </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00347">DDAVFSolver.h:347</a></div></div>
75
+ <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a040bc02742836b0a6d46ce3c3e89fa46"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a040bc02742836b0a6d46ce3c3e89fa46">SVF::DDAVFSolver::backtraceAlongIndirectVF</a></div><div class="ttdeci">void backtraceAlongIndirectVF(CPtSet &amp;pts, const DPIm &amp;oldDpm)</div><div class="ttdoc">Backward traverse along indirect value flows. </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00346">DDAVFSolver.h:346</a></div></div>
76
+ <div class="ttc" id="classSVF_1_1ActualParmVFGNode_html"><div class="ttname"><a href="classSVF_1_1ActualParmVFGNode.html">SVF::ActualParmVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00846">VFGNode.h:846</a></div></div>
76
77
  <div class="ttc" id="classSVF_1_1MemObj_html"><div class="ttname"><a href="classSVF_1_1MemObj.html">SVF::MemObj</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00348">SymbolTableInfo.h:348</a></div></div>
77
- <div class="ttc" id="classSVF_1_1DDAVFSolver_html_ae40c7bad663e0fa07dee4be3d1794ff2"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#ae40c7bad663e0fa07dee4be3d1794ff2">SVF::DDAVFSolver::ddaStat</a></div><div class="ttdeci">DDAStat * ddaStat</div><div class="ttdoc">DDA stat. </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00789">DDAVFSolver.h:789</a></div></div>
78
+ <div class="ttc" id="classSVF_1_1DDAVFSolver_html_ae40c7bad663e0fa07dee4be3d1794ff2"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#ae40c7bad663e0fa07dee4be3d1794ff2">SVF::DDAVFSolver::ddaStat</a></div><div class="ttdeci">DDAStat * ddaStat</div><div class="ttdoc">DDA stat. </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00785">DDAVFSolver.h:785</a></div></div>
78
79
  <div class="ttc" id="classSVF_1_1AddrVFGNode_html"><div class="ttname"><a href="classSVF_1_1AddrVFGNode.html">SVF::AddrVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00760">VFGNode.h:760</a></div></div>
79
80
  <div class="ttc" id="classSVF_1_1PTACallGraph_html_aaab54c670518d9d6790707f76ea76aa1"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">SVF::PTACallGraph::getCallGraphNode</a></div><div class="ttdeci">PTACallGraphNode * getCallGraphNode(NodeID id) const</div><div class="ttdoc">Get call graph node. </div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00315">PTACallGraph.h:315</a></div></div>
80
- <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a7b35588de00e322afd742041bf735571"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a7b35588de00e322afd742041bf735571">SVF::DDAVFSolver::isTopLevelPtrStmt</a></div><div class="ttdeci">bool isTopLevelPtrStmt(const SVFGNode *stmt)</div><div class="ttdoc">Whether this is a top-level pointer statement. </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00580">DDAVFSolver.h:580</a></div></div>
81
- <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a20cadb651b41343437e135e985c4e566"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a20cadb651b41343437e135e985c4e566">SVF::DDAVFSolver::isLocalCVarInRecursion</a></div><div class="ttdeci">virtual bool isLocalCVarInRecursion(const CVar &amp;var) const</div><div class="ttdoc">Whether a local variable is in function recursions. </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00466">DDAVFSolver.h:466</a></div></div>
82
- <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a7d0775354df32f293e98578ed071d33c"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a7d0775354df32f293e98578ed071d33c">SVF::DDAVFSolver::rmSUStat</a></div><div class="ttdeci">void rmSUStat(const DPIm &amp;dpm, const SVFGNode *node)</div><div class="ttdoc">remove strong updates num if the dpm goes to weak updates branch </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00762">DDAVFSolver.h:762</a></div></div>
81
+ <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a7b35588de00e322afd742041bf735571"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a7b35588de00e322afd742041bf735571">SVF::DDAVFSolver::isTopLevelPtrStmt</a></div><div class="ttdeci">bool isTopLevelPtrStmt(const SVFGNode *stmt)</div><div class="ttdoc">Whether this is a top-level pointer statement. </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00579">DDAVFSolver.h:579</a></div></div>
82
+ <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a20cadb651b41343437e135e985c4e566"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a20cadb651b41343437e135e985c4e566">SVF::DDAVFSolver::isLocalCVarInRecursion</a></div><div class="ttdeci">virtual bool isLocalCVarInRecursion(const CVar &amp;var) const</div><div class="ttdoc">Whether a local variable is in function recursions. </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00465">DDAVFSolver.h:465</a></div></div>
83
+ <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a7d0775354df32f293e98578ed071d33c"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a7d0775354df32f293e98578ed071d33c">SVF::DDAVFSolver::rmSUStat</a></div><div class="ttdeci">void rmSUStat(const DPIm &amp;dpm, const SVFGNode *node)</div><div class="ttdoc">remove strong updates num if the dpm goes to weak updates branch </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00758">DDAVFSolver.h:758</a></div></div>
83
84
  <div class="ttc" id="namespaceSVF_html_a4f21e91ff8eaea5207afe5c60dbd78d7"><div class="ttname"><a href="namespaceSVF.html#a4f21e91ff8eaea5207afe5c60dbd78d7">SVF::OrderedSet</a></div><div class="ttdeci">std::set&lt; Key, Compare, Allocator &gt; OrderedSet</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00102">SVFType.h:102</a></div></div>
84
85
  <div class="ttc" id="classSVF_1_1StmtVFGNode_html_a04986961ad507be9fcf141ab51787da8"><div class="ttname"><a href="classSVF_1_1StmtVFGNode.html#a04986961ad507be9fcf141ab51787da8">SVF::StmtVFGNode::getPAGDstNodeID</a></div><div class="ttdeci">NodeID getPAGDstNodeID() const</div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00146">VFGNode.h:146</a></div></div>
85
86
  <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a99764ee5bc19378795fe464e9036e78b"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a99764ee5bc19378795fe464e9036e78b">SVF::DDAVFSolver::unionDDAPts</a></div><div class="ttdeci">virtual bool unionDDAPts(CPtSet &amp;pts, const CPtSet &amp;targetPts)</div><div class="ttdoc">Union pts. </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00102">DDAVFSolver.h:102</a></div></div>
86
- <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a1cd1023bca18db16bc54e622c881e494"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a1cd1023bca18db16bc54e622c881e494">SVF::DDAVFSolver::addLoadDpmAndCVar</a></div><div class="ttdeci">void addLoadDpmAndCVar(const DPIm &amp;dpm, const DPIm &amp;loadDpm, const CVar &amp;loadVar)</div><div class="ttdoc">LoadDpm for must-alias analysis. </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00681">DDAVFSolver.h:681</a></div></div>
87
- <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a2a2b3783074c9f509fc265b97b979704"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a2a2b3783074c9f509fc265b97b979704">SVF::DDAVFSolver::getCachedADPointsTo</a></div><div class="ttdeci">virtual const CPtSet &amp; getCachedADPointsTo(const DPIm &amp;dpm)</div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00573">DDAVFSolver.h:573</a></div></div>
88
- <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a9005f1f0e4a808838276ff44b300f96d"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a9005f1f0e4a808838276ff44b300f96d">SVF::DDAVFSolver::handleOutOfBudgetDpm</a></div><div class="ttdeci">void handleOutOfBudgetDpm(const DPIm &amp;dpm)</div><div class="ttdoc">handle out-of-budget queries </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00724">DDAVFSolver.h:724</a></div></div>
87
+ <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a1cd1023bca18db16bc54e622c881e494"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a1cd1023bca18db16bc54e622c881e494">SVF::DDAVFSolver::addLoadDpmAndCVar</a></div><div class="ttdeci">void addLoadDpmAndCVar(const DPIm &amp;dpm, const DPIm &amp;loadDpm, const CVar &amp;loadVar)</div><div class="ttdoc">LoadDpm for must-alias analysis. </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00677">DDAVFSolver.h:677</a></div></div>
88
+ <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a2a2b3783074c9f509fc265b97b979704"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a2a2b3783074c9f509fc265b97b979704">SVF::DDAVFSolver::getCachedADPointsTo</a></div><div class="ttdeci">virtual const CPtSet &amp; getCachedADPointsTo(const DPIm &amp;dpm)</div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00572">DDAVFSolver.h:572</a></div></div>
89
+ <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a9005f1f0e4a808838276ff44b300f96d"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a9005f1f0e4a808838276ff44b300f96d">SVF::DDAVFSolver::handleOutOfBudgetDpm</a></div><div class="ttdeci">void handleOutOfBudgetDpm(const DPIm &amp;dpm)</div><div class="ttdoc">handle out-of-budget queries </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00720">DDAVFSolver.h:720</a></div></div>
89
90
  <div class="ttc" id="namespaceSVF_html_a350ae9bf8606bdfe23c8679681b969dc"><div class="ttname"><a href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="include_2MTA_2MTAResultValidator_8h_source.html#l00020">MTAResultValidator.h:20</a></div></div>
90
91
  <div class="ttc" id="classSVF_1_1GenericNode_html_afc8b5f86d7795b6a0dfc0687d942d79b"><div class="ttname"><a href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">SVF::GenericNode::getInEdges</a></div><div class="ttdeci">const GEdgeSetTy &amp; getInEdges() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00188">GenericGraph.h:188</a></div></div>
91
92
  <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a38f5a6b666b2a427d55f1217f9c5595f"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a38f5a6b666b2a427d55f1217f9c5595f">SVF::DDAVFSolver::getConservativeCPts</a></div><div class="ttdeci">virtual CPtSet getConservativeCPts(const DPIm &amp;dpm)=0</div><div class="ttdoc">Get conservative points-to results when the query is out of budget. </div></div>
92
- <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a55803a2d30137b5ad15c5afeec7c6b28"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a55803a2d30137b5ad15c5afeec7c6b28">SVF::DDAVFSolver::getDefSVFGNode</a></div><div class="ttdeci">const SVFGNode * getDefSVFGNode(const PAGNode *pagNode) const</div><div class="ttdoc">GetDefinition SVFG. </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00342">DDAVFSolver.h:342</a></div></div>
93
+ <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a55803a2d30137b5ad15c5afeec7c6b28"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a55803a2d30137b5ad15c5afeec7c6b28">SVF::DDAVFSolver::getDefSVFGNode</a></div><div class="ttdeci">const SVFGNode * getDefSVFGNode(const PAGNode *pagNode) const</div><div class="ttdoc">GetDefinition SVFG. </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00341">DDAVFSolver.h:341</a></div></div>
93
94
  <div class="ttc" id="classSVF_1_1GenericEdge_html_ad9edb45e74ae675d9da82f5acf02d56e"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">SVF::GenericEdge::getDstID</a></div><div class="ttdeci">NodeID getDstID() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00079">GenericGraph.h:79</a></div></div>
94
- <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a0d563fe8b016b27a58f5b054fec9c38a"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a0d563fe8b016b27a58f5b054fec9c38a">SVF::DDAVFSolver::svfgBuilder</a></div><div class="ttdeci">SVFGBuilder svfgBuilder</div><div class="ttdoc">SVFG Builder. </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00790">DDAVFSolver.h:790</a></div></div>
95
+ <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a0d563fe8b016b27a58f5b054fec9c38a"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a0d563fe8b016b27a58f5b054fec9c38a">SVF::DDAVFSolver::svfgBuilder</a></div><div class="ttdeci">SVFGBuilder svfgBuilder</div><div class="ttdoc">SVFG Builder. </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00786">DDAVFSolver.h:786</a></div></div>
95
96
  <div class="ttc" id="classSVF_1_1SVFIR_html_a3dbe0b17694daa74f648a70e77efaf23"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a3dbe0b17694daa74f648a70e77efaf23">SVF::SVFIR::isIndirectCallSites</a></div><div class="ttdeci">bool isIndirectCallSites(const CallICFGNode *cs) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00336">SVFIR.h:336</a></div></div>
96
- <div class="ttc" id="classSVF_1_1DDAVFSolver_html_afe518d3d7f8051de5b9860f2460aa1b7"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#afe518d3d7f8051de5b9860f2460aa1b7">SVF::DDAVFSolver::resetQuery</a></div><div class="ttdeci">virtual void resetQuery()</div><div class="ttdoc">Reset visited map for next points-to query. </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00319">DDAVFSolver.h:319</a></div></div>
97
- <div class="ttc" id="classSVF_1_1DDAVFSolver_html_ab60c701f1881d88aa4440991fb972638"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#ab60c701f1881d88aa4440991fb972638">SVF::DDAVFSolver::OOBResetVisited</a></div><div class="ttdeci">void OOBResetVisited()</div><div class="ttdoc">Reset visited map if the current query is out-of-budget. </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00331">DDAVFSolver.h:331</a></div></div>
98
- <div class="ttc" id="classSVF_1_1DDAVFSolver_html_af7be3fa6c73dde97d6f9fd0395c9aee0"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#af7be3fa6c73dde97d6f9fd0395c9aee0">SVF::DDAVFSolver::addDpmToLoc</a></div><div class="ttdeci">void addDpmToLoc(const DPIm &amp;dpm)</div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00668">DDAVFSolver.h:668</a></div></div>
97
+ <div class="ttc" id="classSVF_1_1DDAVFSolver_html_afe518d3d7f8051de5b9860f2460aa1b7"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#afe518d3d7f8051de5b9860f2460aa1b7">SVF::DDAVFSolver::resetQuery</a></div><div class="ttdeci">virtual void resetQuery()</div><div class="ttdoc">Reset visited map for next points-to query. </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00318">DDAVFSolver.h:318</a></div></div>
98
+ <div class="ttc" id="classSVF_1_1DDAVFSolver_html_ab60c701f1881d88aa4440991fb972638"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#ab60c701f1881d88aa4440991fb972638">SVF::DDAVFSolver::OOBResetVisited</a></div><div class="ttdeci">void OOBResetVisited()</div><div class="ttdoc">Reset visited map if the current query is out-of-budget. </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00330">DDAVFSolver.h:330</a></div></div>
99
+ <div class="ttc" id="classSVF_1_1DDAVFSolver_html_af7be3fa6c73dde97d6f9fd0395c9aee0"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#af7be3fa6c73dde97d6f9fd0395c9aee0">SVF::DDAVFSolver::addDpmToLoc</a></div><div class="ttdeci">void addDpmToLoc(const DPIm &amp;dpm)</div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00664">DDAVFSolver.h:664</a></div></div>
99
100
  <div class="ttc" id="classSVF_1_1DDAStat_html_a9625c4623acc4f6ccaca1ec8f04f5a54"><div class="ttname"><a href="classSVF_1_1DDAStat.html#a9625c4623acc4f6ccaca1ec8f04f5a54">SVF::DDAStat::_TotalTimeOfBKCondition</a></div><div class="ttdeci">double _TotalTimeOfBKCondition</div><div class="ttdef"><b>Definition:</b> <a href="DDAStat_8h_source.html#l00064">DDAStat.h:64</a></div></div>
100
101
  <div class="ttc" id="classSVF_1_1SVFIR_html_af76a55c3b8255a81a566bdce35ffc749"><div class="ttname"><a href="classSVF_1_1SVFIR.html#af76a55c3b8255a81a566bdce35ffc749">SVF::SVFIR::getBaseObj</a></div><div class="ttdeci">const MemObj * getBaseObj(NodeID id) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00431">SVFIR.h:431</a></div></div>
101
102
  <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>
@@ -107,122 +108,125 @@ $(function() {
107
108
  <div class="ttc" id="classSVF_1_1DDAStat_html_aae8366a4876154fa66298c7bf0fc47c4"><div class="ttname"><a href="classSVF_1_1DDAStat.html#aae8366a4876154fa66298c7bf0fc47c4">SVF::DDAStat::_AnaTimeCyclePerQuery</a></div><div class="ttdeci">double _AnaTimeCyclePerQuery</div><div class="ttdef"><b>Definition:</b> <a href="DDAStat_8h_source.html#l00062">DDAStat.h:62</a></div></div>
108
109
  <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="SVFValue_8h_source.html#l00257">SVFValue.h:257</a></div></div>
109
110
  <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a1fdd7c0efa8f0506edfba2da8f2b3cc0"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a1fdd7c0efa8f0506edfba2da8f2b3cc0">SVF::DDAVFSolver::getSVFGSCC</a></div><div class="ttdeci">SVFGSCC * getSVFGSCC() const</div><div class="ttdoc">Return SVFGSCC. </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00123">DDAVFSolver.h:123</a></div></div>
110
- <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a034e3c8b2eec00aee9de439dfeeda332"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a034e3c8b2eec00aee9de439dfeeda332">SVF::DDAVFSolver::edgeInSVFGSCC</a></div><div class="ttdeci">bool edgeInSVFGSCC(const SVFGEdge *edge)</div><div class="ttdoc">Return TRUE if this edge is inside a SVFG SCC, i.e., src node and dst node are in the same SCC on the...</div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00622">DDAVFSolver.h:622</a></div></div>
111
- <div class="ttc" id="classSVF_1_1DDAVFSolver_html_aba0ec611a5cfd096ac0b8b11e0bd5580"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#aba0ec611a5cfd096ac0b8b11e0bd5580">SVF::DDAVFSolver::SVFGSCCDetection</a></div><div class="ttdeci">void SVFGSCCDetection()</div><div class="ttdoc">SVFG SCC detection. </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00603">DDAVFSolver.h:603</a></div></div>
111
+ <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a034e3c8b2eec00aee9de439dfeeda332"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a034e3c8b2eec00aee9de439dfeeda332">SVF::DDAVFSolver::edgeInSVFGSCC</a></div><div class="ttdeci">bool edgeInSVFGSCC(const SVFGEdge *edge)</div><div class="ttdoc">Return TRUE if this edge is inside a SVFG SCC, i.e., src node and dst node are in the same SCC on the...</div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00618">DDAVFSolver.h:618</a></div></div>
112
+ <div class="ttc" id="classSVF_1_1DDAVFSolver_html_aba0ec611a5cfd096ac0b8b11e0bd5580"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#aba0ec611a5cfd096ac0b8b11e0bd5580">SVF::DDAVFSolver::SVFGSCCDetection</a></div><div class="ttdeci">void SVFGSCCDetection()</div><div class="ttdoc">SVFG SCC detection. </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00599">DDAVFSolver.h:599</a></div></div>
112
113
  <div class="ttc" id="SVFGBuilder_8h_html"><div class="ttname"><a href="SVFGBuilder_8h.html">SVFGBuilder.h</a></div></div>
113
114
  <div class="ttc" id="classSVF_1_1SCCDetection_html_a123b5006a6da7053e5e357140da3c5a3"><div class="ttname"><a href="classSVF_1_1SCCDetection.html#a123b5006a6da7053e5e357140da3c5a3">SVF::SCCDetection::find</a></div><div class="ttdeci">void find(void)</div><div class="ttdef"><b>Definition:</b> <a href="SCC_8h_source.html#l00308">SCC.h:308</a></div></div>
114
- <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a63d04c3af4529d0e0f82acd76ed57f6c"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a63d04c3af4529d0e0f82acd76ed57f6c">SVF::DDAVFSolver::backwardVisited</a></div><div class="ttdeci">DPTItemSet backwardVisited</div><div class="ttdoc">visited map during backward traversing </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00781">DDAVFSolver.h:781</a></div></div>
115
- <div class="ttc" id="classSVF_1_1DDAVFSolver_html_ace037388135f272365cee2e87844bfba"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#ace037388135f272365cee2e87844bfba">SVF::DDAVFSolver::reComputeForEdges</a></div><div class="ttdeci">void reComputeForEdges(const DPIm &amp;dpm, const SVFGEdgeSet &amp;edgeSet, bool indirectCall=false)</div><div class="ttdoc">Traverse along out edges to find all nodes which may be affected by locDPM. </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00271">DDAVFSolver.h:271</a></div></div>
115
+ <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a63d04c3af4529d0e0f82acd76ed57f6c"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a63d04c3af4529d0e0f82acd76ed57f6c">SVF::DDAVFSolver::backwardVisited</a></div><div class="ttdeci">DPTItemSet backwardVisited</div><div class="ttdoc">visited map during backward traversing </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00777">DDAVFSolver.h:777</a></div></div>
116
+ <div class="ttc" id="classSVF_1_1CopyVFGNode_html"><div class="ttname"><a href="classSVF_1_1CopyVFGNode.html">SVF::CopyVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00281">VFGNode.h:281</a></div></div>
117
+ <div class="ttc" id="classSVF_1_1DDAVFSolver_html_ace037388135f272365cee2e87844bfba"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#ace037388135f272365cee2e87844bfba">SVF::DDAVFSolver::reComputeForEdges</a></div><div class="ttdeci">void reComputeForEdges(const DPIm &amp;dpm, const SVFGEdgeSet &amp;edgeSet, bool indirectCall=false)</div><div class="ttdoc">Traverse along out edges to find all nodes which may be affected by locDPM. </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00270">DDAVFSolver.h:270</a></div></div>
116
118
  <div class="ttc" id="classSVF_1_1SparseBitVector_html_a112f2ede1240c95f9fe810f2882fab80"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html#a112f2ede1240c95f9fe810f2882fab80">SVF::SparseBitVector::test</a></div><div class="ttdeci">bool test(unsigned Idx) const</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l00708">SparseBitVector.h:708</a></div></div>
119
+ <div class="ttc" id="classSVF_1_1PHIVFGNode_html"><div class="ttname"><a href="classSVF_1_1PHIVFGNode.html">SVF::PHIVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00635">VFGNode.h:635</a></div></div>
117
120
  <div class="ttc" id="SCC_8h_html"><div class="ttname"><a href="SCC_8h.html">SCC.h</a></div></div>
118
121
  <div class="ttc" id="classSVF_1_1DDAVFSolver_html_accaacd2dd680f92ff83cfe75eef6ffab"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#accaacd2dd680f92ff83cfe75eef6ffab">SVF::DDAVFSolver::StoreToPMSetMap</a></div><div class="ttdeci">OrderedMap&lt; const SVFGNode *, DPTItemSet &gt; StoreToPMSetMap</div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00062">DDAVFSolver.h:62</a></div></div>
119
122
  <div class="ttc" id="classSVF_1_1VFGEdge_html_a557334ef75bb5479b045f68c27b38701"><div class="ttname"><a href="classSVF_1_1VFGEdge.html#a557334ef75bb5479b045f68c27b38701">SVF::VFGEdge::SVFGEdgeSetTy</a></div><div class="ttdeci">VFGEdgeSetTy SVFGEdgeSetTy</div><div class="ttdef"><b>Definition:</b> <a href="VFGEdge_8h_source.html#l00118">VFGEdge.h:118</a></div></div>
120
123
  <div class="ttc" id="classSVF_1_1DDAStat_html_a674248754300d58fcef8eaf09436249e"><div class="ttname"><a href="classSVF_1_1DDAStat.html#a674248754300d58fcef8eaf09436249e">SVF::DDAStat::_NumOfStep</a></div><div class="ttdeci">u64_t _NumOfStep</div><div class="ttdef"><b>Definition:</b> <a href="DDAStat_8h_source.html#l00059">DDAStat.h:59</a></div></div>
121
- <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a9aaa5ee3dc8abc51c4b6e463e1949ee7"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a9aaa5ee3dc8abc51c4b6e463e1949ee7">SVF::DDAVFSolver::isArrayCondMemObj</a></div><div class="ttdeci">bool isArrayCondMemObj(const CVar &amp;var) const</div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00645">DDAVFSolver.h:645</a></div></div>
124
+ <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a9aaa5ee3dc8abc51c4b6e463e1949ee7"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a9aaa5ee3dc8abc51c4b6e463e1949ee7">SVF::DDAVFSolver::isArrayCondMemObj</a></div><div class="ttdeci">bool isArrayCondMemObj(const CVar &amp;var) const</div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00641">DDAVFSolver.h:641</a></div></div>
122
125
  <div class="ttc" id="classSVF_1_1GepVFGNode_html"><div class="ttname"><a href="classSVF_1_1GepVFGNode.html">SVF::GepVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00594">VFGNode.h:594</a></div></div>
123
126
  <div class="ttc" id="classSVF_1_1SparseBitVector_html_ad5337b5aeed50f8b7ffd56b14ee25c9f"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html#ad5337b5aeed50f8b7ffd56b14ee25c9f">SVF::SparseBitVector::reset</a></div><div class="ttdeci">void reset(unsigned Idx)</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l00724">SparseBitVector.h:724</a></div></div>
124
127
  <div class="ttc" id="cJSON_8cpp_html_a65e9886d74aaee76545e83dd09011727"><div class="ttname"><a href="cJSON_8cpp.html#a65e9886d74aaee76545e83dd09011727">false</a></div><div class="ttdeci">#define false</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l00070">cJSON.cpp:70</a></div></div>
125
128
  <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>
126
129
  <div class="ttc" id="classSVF_1_1VFG_html_a7622e381fbc1601b3f9a8384df2751bd"><div class="ttname"><a href="classSVF_1_1VFG.html#a7622e381fbc1601b3f9a8384df2751bd">SVF::VFG::getPAG</a></div><div class="ttdeci">SVFIR * getPAG() const</div><div class="ttdoc">Return SVFIR. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00133">VFG.h:133</a></div></div>
127
130
  <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a211f2f0c572d5085d22c2cb40341b606"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a211f2f0c572d5085d22c2cb40341b606">SVF::DDAVFSolver::~DDAVFSolver</a></div><div class="ttdeci">virtual ~DDAVFSolver()</div><div class="ttdoc">Destructor. </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00069">DDAVFSolver.h:69</a></div></div>
128
- <div class="ttc" id="classSVF_1_1DDAVFSolver_html_aff744e724dcf06a2b1cdd7ba2b1093f1"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#aff744e724dcf06a2b1cdd7ba2b1093f1">SVF::DDAVFSolver::startNewPTCompFromStoreDst</a></div><div class="ttdeci">void startNewPTCompFromStoreDst(CPtSet &amp;pts, const DPIm &amp;oldDpm)</div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00398">DDAVFSolver.h:398</a></div></div>
131
+ <div class="ttc" id="classSVF_1_1DDAVFSolver_html_aff744e724dcf06a2b1cdd7ba2b1093f1"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#aff744e724dcf06a2b1cdd7ba2b1093f1">SVF::DDAVFSolver::startNewPTCompFromStoreDst</a></div><div class="ttdeci">void startNewPTCompFromStoreDst(CPtSet &amp;pts, const DPIm &amp;oldDpm)</div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00397">DDAVFSolver.h:397</a></div></div>
129
132
  <div class="ttc" id="classSVF_1_1DDAVFSolver_html_aab76f98ae4f0c1f62f101ac5c5fdbf83"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#aab76f98ae4f0c1f62f101ac5c5fdbf83">SVF::DDAVFSolver::LocToDPMVecMap</a></div><div class="ttdeci">OrderedMap&lt; NodeID, DPTItemSet &gt; LocToDPMVecMap</div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00059">DDAVFSolver.h:59</a></div></div>
130
- <div class="ttc" id="classSVF_1_1DDAVFSolver_html_adbd209b4a2327b2b068fbb56e12042f7"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#adbd209b4a2327b2b068fbb56e12042f7">SVF::DDAVFSolver::backtraceToStoreSrc</a></div><div class="ttdeci">void backtraceToStoreSrc(CPtSet &amp;pts, const DPIm &amp;oldDpm)</div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00408">DDAVFSolver.h:408</a></div></div>
133
+ <div class="ttc" id="classSVF_1_1DDAVFSolver_html_adbd209b4a2327b2b068fbb56e12042f7"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#adbd209b4a2327b2b068fbb56e12042f7">SVF::DDAVFSolver::backtraceToStoreSrc</a></div><div class="ttdeci">void backtraceToStoreSrc(CPtSet &amp;pts, const DPIm &amp;oldDpm)</div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00407">DDAVFSolver.h:407</a></div></div>
131
134
  <div class="ttc" id="classSVF_1_1SVFIR_html_a5d15e4b09784f438568ebe61f8aa5156"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a5d15e4b09784f438568ebe61f8aa5156">SVF::SVFIR::isConstantObj</a></div><div class="ttdeci">bool isConstantObj(NodeID id) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00413">SVFIR.h:413</a></div></div>
132
- <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a2d6df8149b45d719e22fc505df94171a"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a2d6df8149b45d719e22fc505df94171a">SVF::DDAVFSolver::dpmToTLCPtSetMap</a></div><div class="ttdeci">DPImToCPtSetMap dpmToTLCPtSetMap</div><div class="ttdoc">points-to caching map for top-level vars </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00782">DDAVFSolver.h:782</a></div></div>
135
+ <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a2d6df8149b45d719e22fc505df94171a"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a2d6df8149b45d719e22fc505df94171a">SVF::DDAVFSolver::dpmToTLCPtSetMap</a></div><div class="ttdeci">DPImToCPtSetMap dpmToTLCPtSetMap</div><div class="ttdoc">points-to caching map for top-level vars </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00778">DDAVFSolver.h:778</a></div></div>
133
136
  <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a73bbf4f763316e8d5db62d163da35a18"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a73bbf4f763316e8d5db62d163da35a18">SVF::DDAVFSolver::getCandidateQueries</a></div><div class="ttdeci">NodeBS &amp; getCandidateQueries()</div><div class="ttdoc">Return candidate pointers for DDA. </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00091">DDAVFSolver.h:91</a></div></div>
134
- <div class="ttc" id="classSVF_1_1DDAVFSolver_html_afc2b0eeb1d5d5f292690f3c949217c38"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#afc2b0eeb1d5d5f292690f3c949217c38">SVF::DDAVFSolver::setCallGraph</a></div><div class="ttdeci">void setCallGraph(PTACallGraph *cg)</div><div class="ttdoc">Set callgraph. </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00627">DDAVFSolver.h:627</a></div></div>
137
+ <div class="ttc" id="classSVF_1_1DDAVFSolver_html_afc2b0eeb1d5d5f292690f3c949217c38"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#afc2b0eeb1d5d5f292690f3c949217c38">SVF::DDAVFSolver::setCallGraph</a></div><div class="ttdeci">void setCallGraph(PTACallGraph *cg)</div><div class="ttdoc">Set callgraph. </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00623">DDAVFSolver.h:623</a></div></div>
135
138
  <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a3fa002d4ba4194ffde62ecbdd361a24d"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a3fa002d4ba4194ffde62ecbdd361a24d">SVF::DDAVFSolver::getPtrNodeID</a></div><div class="ttdeci">virtual NodeID getPtrNodeID(const CVar &amp;var) const =0</div><div class="ttdoc">Methods to be implemented in child class. </div></div>
136
- <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a0b1f774883adc7d535f8363bf3c8b1e8"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a0b1f774883adc7d535f8363bf3c8b1e8">SVF::DDAVFSolver::isOutOfBudgetDpm</a></div><div class="ttdeci">bool isOutOfBudgetDpm(const DPIm &amp;dpm) const</div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00740">DDAVFSolver.h:740</a></div></div>
137
- <div class="ttc" id="classSVF_1_1DDAVFSolver_html_ad42efad8e857290459689833c224e467"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#ad42efad8e857290459689833c224e467">SVF::DDAVFSolver::getLoadCVar</a></div><div class="ttdeci">const CVar &amp; getLoadCVar(const DPIm &amp;dpm) const</div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00709">DDAVFSolver.h:709</a></div></div>
139
+ <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a0b1f774883adc7d535f8363bf3c8b1e8"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a0b1f774883adc7d535f8363bf3c8b1e8">SVF::DDAVFSolver::isOutOfBudgetDpm</a></div><div class="ttdeci">bool isOutOfBudgetDpm(const DPIm &amp;dpm) const</div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00736">DDAVFSolver.h:736</a></div></div>
140
+ <div class="ttc" id="classSVF_1_1DDAVFSolver_html_ad42efad8e857290459689833c224e467"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#ad42efad8e857290459689833c224e467">SVF::DDAVFSolver::getLoadCVar</a></div><div class="ttdeci">const CVar &amp; getLoadCVar(const DPIm &amp;dpm) const</div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00705">DDAVFSolver.h:705</a></div></div>
138
141
  <div class="ttc" id="classSVF_1_1DDAStat_html_ad53ad7a958c05b45624d2859a6a9e647"><div class="ttname"><a href="classSVF_1_1DDAStat.html#ad53ad7a958c05b45624d2859a6a9e647">SVF::DDAStat::_StrongUpdateStores</a></div><div class="ttdeci">NodeBS _StrongUpdateStores</div><div class="ttdef"><b>Definition:</b> <a href="DDAStat_8h_source.html#l00066">DDAStat.h:66</a></div></div>
139
- <div class="ttc" id="classSVF_1_1DDAVFSolver_html_ace35b8247204d9806ca1a4f01bff2364"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#ace35b8247204d9806ca1a4f01bff2364">SVF::DDAVFSolver::propagateViaObj</a></div><div class="ttdeci">virtual bool propagateViaObj(const CVar &amp;storeObj, const CVar &amp;loadObj)</div><div class="ttdoc">If the points-to contain the object obj, we could move forward along indirect value-flow edge...</div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00482">DDAVFSolver.h:482</a></div></div>
142
+ <div class="ttc" id="classSVF_1_1DDAVFSolver_html_ace35b8247204d9806ca1a4f01bff2364"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#ace35b8247204d9806ca1a4f01bff2364">SVF::DDAVFSolver::propagateViaObj</a></div><div class="ttdeci">virtual bool propagateViaObj(const CVar &amp;storeObj, const CVar &amp;loadObj)</div><div class="ttdoc">If the points-to contain the object obj, we could move forward along indirect value-flow edge...</div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00481">DDAVFSolver.h:481</a></div></div>
140
143
  <div class="ttc" id="classSVF_1_1PTACallGraphEdge_html_adbedb15ac0f9395c5264f087a63bad3b"><div class="ttname"><a href="classSVF_1_1PTACallGraphEdge.html#adbedb15ac0f9395c5264f087a63bad3b">SVF::PTACallGraphEdge::CallInstSet</a></div><div class="ttdeci">Set&lt; const CallICFGNode * &gt; CallInstSet</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00055">PTACallGraph.h:55</a></div></div>
141
- <div class="ttc" id="classSVF_1_1DDAVFSolver_html_af34ed8482d3737a8aaaff2d5c75960ec"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#af34ed8482d3737a8aaaff2d5c75960ec">SVF::DDAVFSolver::buildSVFG</a></div><div class="ttdeci">virtual void buildSVFG(SVFIR *pag)</div><div class="ttdoc">Build SVFG. </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00312">DDAVFSolver.h:312</a></div></div>
144
+ <div class="ttc" id="classSVF_1_1DDAVFSolver_html_af34ed8482d3737a8aaaff2d5c75960ec"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#af34ed8482d3737a8aaaff2d5c75960ec">SVF::DDAVFSolver::buildSVFG</a></div><div class="ttdeci">virtual void buildSVFG(SVFIR *pag)</div><div class="ttdoc">Build SVFG. </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00311">DDAVFSolver.h:311</a></div></div>
142
145
  <div class="ttc" id="classSVF_1_1DirectSVFGEdge_html"><div class="ttname"><a href="classSVF_1_1DirectSVFGEdge.html">SVF::DirectSVFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGEdge_8h_source.html#l00141">VFGEdge.h:141</a></div></div>
143
146
  <div class="ttc" id="classSVF_1_1SVFIR_html_a9235a60e7332c8416e113e7360441d97"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a9235a60e7332c8416e113e7360441d97">SVF::SVFIR::isFunPtr</a></div><div class="ttdeci">bool isFunPtr(NodeID id) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00340">SVFIR.h:340</a></div></div>
144
147
  <div class="ttc" id="classSVF_1_1VFGEdge_html"><div class="ttname"><a href="classSVF_1_1VFGEdge.html">SVF::VFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGEdge_8h_source.html#l00044">VFGEdge.h:44</a></div></div>
145
148
  <div class="ttc" id="classSVF_1_1MemObj_html_aeba6eeed4843a1a90cf1d4b7deb197af"><div class="ttname"><a href="classSVF_1_1MemObj.html#aeba6eeed4843a1a90cf1d4b7deb197af">SVF::MemObj::isArray</a></div><div class="ttdeci">bool isArray() const</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00498">SymbolTableInfo.cpp:498</a></div></div>
146
149
  <div class="ttc" id="classSVF_1_1SCCDetection_html"><div class="ttname"><a href="classSVF_1_1SCCDetection.html">SVF::SCCDetection</a></div><div class="ttdef"><b>Definition:</b> <a href="SCC_8h_source.html#l00054">SCC.h:54</a></div></div>
147
- <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a630aad14a285c954a50c632f9cb13fa9"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a630aad14a285c954a50c632f9cb13fa9">SVF::DDAVFSolver::getLoadDpm</a></div><div class="ttdeci">const DPIm &amp; getLoadDpm(const DPIm &amp;dpm) const</div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00695">DDAVFSolver.h:695</a></div></div>
150
+ <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a630aad14a285c954a50c632f9cb13fa9"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a630aad14a285c954a50c632f9cb13fa9">SVF::DDAVFSolver::getLoadDpm</a></div><div class="ttdeci">const DPIm &amp; getLoadDpm(const DPIm &amp;dpm) const</div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00691">DDAVFSolver.h:691</a></div></div>
148
151
  <div class="ttc" id="classSVF_1_1DDAStat_html_a5ad94d2109b293d306f67741effc73aa"><div class="ttname"><a href="classSVF_1_1DDAStat.html#a5ad94d2109b293d306f67741effc73aa">SVF::DDAStat::_NumOfDPM</a></div><div class="ttdeci">u32_t _NumOfDPM</div><div class="ttdef"><b>Definition:</b> <a href="DDAStat_8h_source.html#l00054">DDAStat.h:54</a></div></div>
149
- <div class="ttc" id="classSVF_1_1DDAVFSolver_html_ad849ae4509e88832f784c748468ab959"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#ad849ae4509e88832f784c748468ab959">SVF::DDAVFSolver::getLocToDPMVecMap</a></div><div class="ttdeci">const LocToDPMVecMap &amp; getLocToDPMVecMap() const</div><div class="ttdoc">Map a SVFGNode to its dpms for handling value-flow cycles. </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00660">DDAVFSolver.h:660</a></div></div>
152
+ <div class="ttc" id="classSVF_1_1DDAVFSolver_html_ad849ae4509e88832f784c748468ab959"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#ad849ae4509e88832f784c748468ab959">SVF::DDAVFSolver::getLocToDPMVecMap</a></div><div class="ttdeci">const LocToDPMVecMap &amp; getLocToDPMVecMap() const</div><div class="ttdoc">Map a SVFGNode to its dpms for handling value-flow cycles. </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00656">DDAVFSolver.h:656</a></div></div>
150
153
  <div class="ttc" id="classSVF_1_1DDAVFSolver_html_acfe7d961caac8f0f558881a9a006b1fa"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#acfe7d961caac8f0f558881a9a006b1fa">SVF::DDAVFSolver::handleAddr</a></div><div class="ttdeci">virtual void handleAddr(CPtSet &amp;pts, const DPIm &amp;dpm, const AddrSVFGNode *addr)=0</div><div class="ttdoc">Handle AddrSVFGNode to add proper points-to. </div></div>
151
154
  <div class="ttc" id="DDAStat_8h_html"><div class="ttname"><a href="DDAStat_8h.html">DDAStat.h</a></div></div>
152
155
  <div class="ttc" id="classSVF_1_1SVFGBuilder_html_ab7353191edd06568e2598177d253c1d9"><div class="ttname"><a href="classSVF_1_1SVFGBuilder.html#ab7353191edd06568e2598177d253c1d9">SVF::SVFGBuilder::buildPTROnlySVFG</a></div><div class="ttdeci">SVFG * buildPTROnlySVFG(BVDataPTAImpl *pta)</div><div class="ttdef"><b>Definition:</b> <a href="SVFGBuilder_8cpp_source.html#l00044">SVFGBuilder.cpp:44</a></div></div>
153
156
  <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a52737dd41c63404ef91691154aa250ce"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a52737dd41c63404ef91691154aa250ce">SVF::DDAVFSolver::findPT</a></div><div class="ttdeci">virtual const CPtSet &amp; findPT(const DPIm &amp;dpm)</div><div class="ttdoc">Compute points-to. </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00138">DDAVFSolver.h:138</a></div></div>
154
- <div class="ttc" id="classSVF_1_1DDAVFSolver_html_aad57a954473f3099188cf8c8fba87880"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#aad57a954473f3099188cf8c8fba87880">SVF::DDAVFSolver::outOfBudgetDpms</a></div><div class="ttdeci">DPTItemSet outOfBudgetDpms</div><div class="ttdoc">out of budget dpm set </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00787">DDAVFSolver.h:787</a></div></div>
157
+ <div class="ttc" id="classSVF_1_1DDAVFSolver_html_aad57a954473f3099188cf8c8fba87880"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#aad57a954473f3099188cf8c8fba87880">SVF::DDAVFSolver::outOfBudgetDpms</a></div><div class="ttdeci">DPTItemSet outOfBudgetDpms</div><div class="ttdoc">out of budget dpm set </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00783">DDAVFSolver.h:783</a></div></div>
155
158
  <div class="ttc" id="classSVF_1_1SCCDetection_html_a3a5fdc9330a657240f77199f5aee602d"><div class="ttname"><a href="classSVF_1_1SCCDetection.html#a3a5fdc9330a657240f77199f5aee602d">SVF::SCCDetection::repNode</a></div><div class="ttdeci">NodeID repNode(NodeID n) const</div><div class="ttdoc">get the rep node if not found return itself </div><div class="ttdef"><b>Definition:</b> <a href="SCC_8h_source.html#l00139">SCC.h:139</a></div></div>
156
159
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a7c9b7e5fe37ae31ba84d167945ca57df"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a7c9b7e5fe37ae31ba84d167945ca57df">SVF::PointerAnalysis::getPTACallGraph</a></div><div class="ttdeci">PTACallGraph * getPTACallGraph() const</div><div class="ttdoc">Return call graph. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00174">PointerAnalysis.h:174</a></div></div>
157
- <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a74d83f06e8fc0ecedc1e1846030c99c6"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a74d83f06e8fc0ecedc1e1846030c99c6">SVF::DDAVFSolver::_svfg</a></div><div class="ttdeci">SVFG * _svfg</div><div class="ttdoc">SVFG. </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00775">DDAVFSolver.h:775</a></div></div>
158
- <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a6d62420837fe0c7814fc4da68a91eda4"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a6d62420837fe0c7814fc4da68a91eda4">SVF::DDAVFSolver::loadToPTCVarMap</a></div><div class="ttdeci">DPMToCVarMap loadToPTCVarMap</div><div class="ttdoc">map a load dpm to its cvar pointed by its pointer operand </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00786">DDAVFSolver.h:786</a></div></div>
159
- <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a9d8959dfee05685cd74d0d7a78069692"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a9d8959dfee05685cd74d0d7a78069692">SVF::DDAVFSolver::dpmToloadDpmMap</a></div><div class="ttdeci">DPMToDPMMap dpmToloadDpmMap</div><div class="ttdoc">dpms at loads for may/must-alias analysis with stores </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00785">DDAVFSolver.h:785</a></div></div>
160
- <div class="ttc" id="classSVF_1_1DDAVFSolver_html_ac4cb0b666d68d135c5e385bfc880fd67"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#ac4cb0b666d68d135c5e385bfc880fd67">SVF::DDAVFSolver::getDPImWithOldCond</a></div><div class="ttdeci">virtual DPIm getDPImWithOldCond(const DPIm &amp;oldDpm, const CVar &amp;var, const SVFGNode *loc)</div><div class="ttdoc">Return dpm with old context and path conditions. </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00588">DDAVFSolver.h:588</a></div></div>
161
- <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a345e5379f53b618adef014aa6887bfe7"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a345e5379f53b618adef014aa6887bfe7">SVF::DDAVFSolver::isMustAlias</a></div><div class="ttdeci">virtual bool isMustAlias(const DPIm &amp;, const DPIm &amp;)</div><div class="ttdoc">whether load and store are aliased </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00444">DDAVFSolver.h:444</a></div></div>
160
+ <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a74d83f06e8fc0ecedc1e1846030c99c6"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a74d83f06e8fc0ecedc1e1846030c99c6">SVF::DDAVFSolver::_svfg</a></div><div class="ttdeci">SVFG * _svfg</div><div class="ttdoc">SVFG. </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00771">DDAVFSolver.h:771</a></div></div>
161
+ <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a6d62420837fe0c7814fc4da68a91eda4"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a6d62420837fe0c7814fc4da68a91eda4">SVF::DDAVFSolver::loadToPTCVarMap</a></div><div class="ttdeci">DPMToCVarMap loadToPTCVarMap</div><div class="ttdoc">map a load dpm to its cvar pointed by its pointer operand </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00782">DDAVFSolver.h:782</a></div></div>
162
+ <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a9d8959dfee05685cd74d0d7a78069692"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a9d8959dfee05685cd74d0d7a78069692">SVF::DDAVFSolver::dpmToloadDpmMap</a></div><div class="ttdeci">DPMToDPMMap dpmToloadDpmMap</div><div class="ttdoc">dpms at loads for may/must-alias analysis with stores </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00781">DDAVFSolver.h:781</a></div></div>
163
+ <div class="ttc" id="classSVF_1_1DDAVFSolver_html_ac4cb0b666d68d135c5e385bfc880fd67"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#ac4cb0b666d68d135c5e385bfc880fd67">SVF::DDAVFSolver::getDPImWithOldCond</a></div><div class="ttdeci">virtual DPIm getDPImWithOldCond(const DPIm &amp;oldDpm, const CVar &amp;var, const SVFGNode *loc)</div><div class="ttdoc">Return dpm with old context and path conditions. </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00584">DDAVFSolver.h:584</a></div></div>
164
+ <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a345e5379f53b618adef014aa6887bfe7"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a345e5379f53b618adef014aa6887bfe7">SVF::DDAVFSolver::isMustAlias</a></div><div class="ttdeci">virtual bool isMustAlias(const DPIm &amp;, const DPIm &amp;)</div><div class="ttdoc">whether load and store are aliased </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00443">DDAVFSolver.h:443</a></div></div>
162
165
  <div class="ttc" id="classSVF_1_1GenericEdge_html_aeaa31a2c8479e831b36ce2e2582ceb86"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">SVF::GenericEdge::getDstNode</a></div><div class="ttdeci">NodeType * getDstNode() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00095">GenericGraph.h:95</a></div></div>
163
- <div class="ttc" id="classSVF_1_1DDAVFSolver_html_ac39860015b45b9af6351d0343f8983bb"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#ac39860015b45b9af6351d0343f8983bb">SVF::DDAVFSolver::getAndersenAnalysis</a></div><div class="ttdeci">AndersenWaveDiff * getAndersenAnalysis() const</div><div class="ttdoc">Return Andersen&amp;#39;s analysis. </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00717">DDAVFSolver.h:717</a></div></div>
164
- <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a6c32a1cdcdbea0151c8cf17ffe598f29"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a6c32a1cdcdbea0151c8cf17ffe598f29">SVF::DDAVFSolver::getDpmSetAtLoc</a></div><div class="ttdeci">const DPTItemSet &amp; getDpmSetAtLoc(const SVFGNode *loc)</div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00664">DDAVFSolver.h:664</a></div></div>
165
- <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a645c7d0637b49e139898016ff652e1f3"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a645c7d0637b49e139898016ff652e1f3">SVF::DDAVFSolver::isHeapCondMemObj</a></div><div class="ttdeci">virtual bool isHeapCondMemObj(const CVar &amp;var, const StoreSVFGNode *)</div><div class="ttdoc">Check heap and array object. </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00638">DDAVFSolver.h:638</a></div></div>
166
+ <div class="ttc" id="classSVF_1_1DDAVFSolver_html_ac39860015b45b9af6351d0343f8983bb"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#ac39860015b45b9af6351d0343f8983bb">SVF::DDAVFSolver::getAndersenAnalysis</a></div><div class="ttdeci">AndersenWaveDiff * getAndersenAnalysis() const</div><div class="ttdoc">Return Andersen&amp;#39;s analysis. </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00713">DDAVFSolver.h:713</a></div></div>
167
+ <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a6c32a1cdcdbea0151c8cf17ffe598f29"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a6c32a1cdcdbea0151c8cf17ffe598f29">SVF::DDAVFSolver::getDpmSetAtLoc</a></div><div class="ttdeci">const DPTItemSet &amp; getDpmSetAtLoc(const SVFGNode *loc)</div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00660">DDAVFSolver.h:660</a></div></div>
168
+ <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a645c7d0637b49e139898016ff652e1f3"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a645c7d0637b49e139898016ff652e1f3">SVF::DDAVFSolver::isHeapCondMemObj</a></div><div class="ttdeci">virtual bool isHeapCondMemObj(const CVar &amp;var, const StoreSVFGNode *)</div><div class="ttdoc">Check heap and array object. </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00634">DDAVFSolver.h:634</a></div></div>
166
169
  <div class="ttc" id="classSVF_1_1DDAVFSolver_html_aa4dc73ea65f736282a413a9d286141e5"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#aa4dc73ea65f736282a413a9d286141e5">SVF::DDAVFSolver::dumpCPtSet</a></div><div class="ttdeci">void dumpCPtSet(const CPtSet &amp;cpts) const</div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00128">DDAVFSolver.h:128</a></div></div>
167
170
  <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a99f631cf1bc438e3f08f7f935e98e38d"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a99f631cf1bc438e3f08f7f935e98e38d">SVF::DDAVFSolver::handleSingleStatement</a></div><div class="ttdeci">virtual void handleSingleStatement(const DPIm &amp;dpm, CPtSet &amp;pts)</div><div class="ttdoc">Handle single statement. </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00170">DDAVFSolver.h:170</a></div></div>
168
171
  <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a502207f81ed22fa42f9e18ccba83ad4e"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a502207f81ed22fa42f9e18ccba83ad4e">SVF::DDAVFSolver::SVFGSCC</a></div><div class="ttdeci">SCCDetection&lt; SVFG * &gt; SVFGSCC</div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00051">DDAVFSolver.h:51</a></div></div>
169
- <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a3fb52286c5324ea3d58e22c630b307e3"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a3fb52286c5324ea3d58e22c630b307e3">SVF::DDAVFSolver::testOutOfBudget</a></div><div class="ttdeci">bool testOutOfBudget(const DPIm &amp;dpm)</div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00725">DDAVFSolver.h:725</a></div></div>
172
+ <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a3fb52286c5324ea3d58e22c630b307e3"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a3fb52286c5324ea3d58e22c630b307e3">SVF::DDAVFSolver::testOutOfBudget</a></div><div class="ttdeci">bool testOutOfBudget(const DPIm &amp;dpm)</div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00721">DDAVFSolver.h:721</a></div></div>
170
173
  <div class="ttc" id="classSVF_1_1DDAVFSolver_html_ae7949e141978474f3b6cb510bacafa37"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#ae7949e141978474f3b6cb510bacafa37">SVF::DDAVFSolver::unionDDAPts</a></div><div class="ttdeci">virtual bool unionDDAPts(DPIm dpm, const CPtSet &amp;targetPts)</div><div class="ttdoc">Union pts. </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00107">DDAVFSolver.h:107</a></div></div>
171
174
  <div class="ttc" id="classSVF_1_1PTACallGraph_html"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html">SVF::PTACallGraph</a></div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00218">PTACallGraph.h:218</a></div></div>
172
- <div class="ttc" id="classSVF_1_1DDAVFSolver_html_acd694c2092adf8c516d1aba5f798cec7"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#acd694c2092adf8c516d1aba5f798cec7">SVF::DDAVFSolver::startNewPTCompFromLoadSrc</a></div><div class="ttdeci">void startNewPTCompFromLoadSrc(CPtSet &amp;pts, const DPIm &amp;oldDpm)</div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00387">DDAVFSolver.h:387</a></div></div>
173
- <div class="ttc" id="classSVF_1_1DDAVFSolver_html_af6a6243b497df5fdab9f658b9add9c8a"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#af6a6243b497df5fdab9f658b9add9c8a">SVF::DDAVFSolver::backwardPropDpm</a></div><div class="ttdeci">virtual void backwardPropDpm(CPtSet &amp;pts, NodeID ptr, const DPIm &amp;oldDpm, const SVFGEdge *edge)</div><div class="ttdoc">dpm transit during backward tracing </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00421">DDAVFSolver.h:421</a></div></div>
175
+ <div class="ttc" id="classSVF_1_1DDAVFSolver_html_acd694c2092adf8c516d1aba5f798cec7"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#acd694c2092adf8c516d1aba5f798cec7">SVF::DDAVFSolver::startNewPTCompFromLoadSrc</a></div><div class="ttdeci">void startNewPTCompFromLoadSrc(CPtSet &amp;pts, const DPIm &amp;oldDpm)</div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00386">DDAVFSolver.h:386</a></div></div>
176
+ <div class="ttc" id="classSVF_1_1DDAVFSolver_html_af6a6243b497df5fdab9f658b9add9c8a"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#af6a6243b497df5fdab9f658b9add9c8a">SVF::DDAVFSolver::backwardPropDpm</a></div><div class="ttdeci">virtual void backwardPropDpm(CPtSet &amp;pts, NodeID ptr, const DPIm &amp;oldDpm, const SVFGEdge *edge)</div><div class="ttdoc">dpm transit during backward tracing </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00420">DDAVFSolver.h:420</a></div></div>
174
177
  <div class="ttc" id="classSVF_1_1DDAVFSolver_html_ad7d92fad8606d5512786a7b7a08930e2"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#ad7d92fad8606d5512786a7b7a08930e2">SVF::DDAVFSolver::getDPIm</a></div><div class="ttdeci">virtual DPIm getDPIm(const CVar &amp;var, const SVFGNode *loc) const</div><div class="ttdoc">Given CVar and location (SVFGNode) return a new DPItem. </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00096">DDAVFSolver.h:96</a></div></div>
175
178
  <div class="ttc" id="SVFType_8h_html_ab6f41e9db3675dc689c5492418885041"><div class="ttname"><a href="SVFType_8h.html#ab6f41e9db3675dc689c5492418885041">DOTIMESTAT</a></div><div class="ttdeci">#define DOTIMESTAT(X)</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00421">SVFType.h:421</a></div></div>
176
- <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a54f5d4972238ae69f19c9da3b9f51644"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a54f5d4972238ae69f19c9da3b9f51644">SVF::DDAVFSolver::_svfgSCC</a></div><div class="ttdeci">SVFGSCC * _svfgSCC</div><div class="ttdoc">SCC for SVFG. </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00780">DDAVFSolver.h:780</a></div></div>
179
+ <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a54f5d4972238ae69f19c9da3b9f51644"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a54f5d4972238ae69f19c9da3b9f51644">SVF::DDAVFSolver::_svfgSCC</a></div><div class="ttdeci">SVFGSCC * _svfgSCC</div><div class="ttdoc">SCC for SVFG. </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00776">DDAVFSolver.h:776</a></div></div>
177
180
  <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a05d6b074b04aad7dc1f3cbe0ca587467"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a05d6b074b04aad7dc1f3cbe0ca587467">SVF::DDAVFSolver::DPTItemSet</a></div><div class="ttdeci">OrderedSet&lt; DPIm &gt; DPTItemSet</div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00055">DDAVFSolver.h:55</a></div></div>
178
181
  <div class="ttc" id="SVFType_8h_html_a40845b3027a1237076aa8297ca39e730"><div class="ttname"><a href="SVFType_8h.html#a40845b3027a1237076aa8297ca39e730">DDDA</a></div><div class="ttdeci">#define DDDA</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00430">SVFType.h:430</a></div></div>
179
- <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a7a6af30f30f32d55fc910f2ae4909791"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a7a6af30f30f32d55fc910f2ae4909791">SVF::DDAVFSolver::backtraceAlongDirectVF</a></div><div class="ttdeci">void backtraceAlongDirectVF(CPtSet &amp;pts, const DPIm &amp;oldDpm)</div><div class="ttdoc">Backward traverse along direct value flows. </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00369">DDAVFSolver.h:369</a></div></div>
182
+ <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a7a6af30f30f32d55fc910f2ae4909791"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a7a6af30f30f32d55fc910f2ae4909791">SVF::DDAVFSolver::backtraceAlongDirectVF</a></div><div class="ttdeci">void backtraceAlongDirectVF(CPtSet &amp;pts, const DPIm &amp;oldDpm)</div><div class="ttdoc">Backward traverse along direct value flows. </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00368">DDAVFSolver.h:368</a></div></div>
180
183
  <div class="ttc" id="classSVF_1_1PTACallGraph_html_a9a4b0c6672288b9201ab254b4c49548d"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#a9a4b0c6672288b9201ab254b4c49548d">SVF::PTACallGraph::getIndCallSitesInvokingCallee</a></div><div class="ttdeci">void getIndCallSitesInvokingCallee(const SVFFunction *callee, PTACallGraphEdge::CallInstSet &amp;csSet)</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8cpp_source.html#l00249">PTACallGraph.cpp:249</a></div></div>
181
184
  <div class="ttc" id="classSVF_1_1DDAVFSolver_html"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html">SVF::DDAVFSolver</a></div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00047">DDAVFSolver.h:47</a></div></div>
182
185
  <div class="ttc" id="classSVF_1_1SVFIR_html_a2b237e55fd8d7fd61eb3ac6968e4a76e"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a2b237e55fd8d7fd61eb3ac6968e4a76e">SVF::SVFIR::CallSiteSet</a></div><div class="ttdeci">Set&lt; const CallICFGNode * &gt; CallSiteSet</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00052">SVFIR.h:52</a></div></div>
183
186
  <div class="ttc" id="classSVF_1_1DDAVFSolver_html_ab10a34efa1acb6125ea32cf7a8cf919f"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#ab10a34efa1acb6125ea32cf7a8cf919f">SVF::DDAVFSolver::processGepPts</a></div><div class="ttdeci">virtual CPtSet processGepPts(const GepSVFGNode *gep, const CPtSet &amp;srcPts)=0</div><div class="ttdoc">ProcessGep node to generate field object nodes of a struct. </div></div>
184
187
  <div class="ttc" id="classSVF_1_1StmtVFGNode_html_a791a01f5d3528f8a8bf19369b5c61c37"><div class="ttname"><a href="classSVF_1_1StmtVFGNode.html#a791a01f5d3528f8a8bf19369b5c61c37">SVF::StmtVFGNode::getPAGSrcNodeID</a></div><div class="ttdeci">NodeID getPAGSrcNodeID() const</div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00141">VFGNode.h:141</a></div></div>
185
- <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a239a55960dfbbe73df63063070a18b56"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a239a55960dfbbe73df63063070a18b56">SVF::DDAVFSolver::updateCachedPointsTo</a></div><div class="ttdeci">virtual void updateCachedPointsTo(const DPIm &amp;dpm, const CPtSet &amp;pts)</div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00560">DDAVFSolver.h:560</a></div></div>
186
- <div class="ttc" id="classSVF_1_1DDAVFSolver_html_abf24080617c6a74abed9f0bb0bc9c0c5"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#abf24080617c6a74abed9f0bb0bc9c0c5">SVF::DDAVFSolver::_callGraph</a></div><div class="ttdeci">PTACallGraph * _callGraph</div><div class="ttdoc">CallGraph. </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00778">DDAVFSolver.h:778</a></div></div>
188
+ <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a239a55960dfbbe73df63063070a18b56"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a239a55960dfbbe73df63063070a18b56">SVF::DDAVFSolver::updateCachedPointsTo</a></div><div class="ttdeci">virtual void updateCachedPointsTo(const DPIm &amp;dpm, const CPtSet &amp;pts)</div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00559">DDAVFSolver.h:559</a></div></div>
189
+ <div class="ttc" id="classSVF_1_1DDAVFSolver_html_abf24080617c6a74abed9f0bb0bc9c0c5"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#abf24080617c6a74abed9f0bb0bc9c0c5">SVF::DDAVFSolver::_callGraph</a></div><div class="ttdeci">PTACallGraph * _callGraph</div><div class="ttdoc">CallGraph. </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00774">DDAVFSolver.h:774</a></div></div>
187
190
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aed0b0b9f035057552a6a82154fd88e61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVF::SVFUtil::outs</a></div><div class="ttdeci">std::ostream &amp; outs()</div><div class="ttdoc">Overwrite llvm::outs() </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00049">SVFUtil.h:49</a></div></div>
188
191
  <div class="ttc" id="classSVF_1_1StmtVFGNode_html_a8ba0e783f7fcbfa7cbd1d3a709ffa07f"><div class="ttname"><a href="classSVF_1_1StmtVFGNode.html#a8ba0e783f7fcbfa7cbd1d3a709ffa07f">SVF::StmtVFGNode::getPAGDstNode</a></div><div class="ttdeci">PAGNode * getPAGDstNode() const</div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00156">VFGNode.h:156</a></div></div>
189
192
  <div class="ttc" id="classSVF_1_1DDAStat_html_aa9daed44e9d2ca2722ea9ab9d4517a21"><div class="ttname"><a href="classSVF_1_1DDAStat.html#aa9daed44e9d2ca2722ea9ab9d4517a21">SVF::DDAStat::_NumOfStepInCycle</a></div><div class="ttdeci">u64_t _NumOfStepInCycle</div><div class="ttdef"><b>Definition:</b> <a href="DDAStat_8h_source.html#l00060">DDAStat.h:60</a></div></div>
190
193
  <div class="ttc" id="PointsTo_8h_html"><div class="ttname"><a href="PointsTo_8h.html">PointsTo.h</a></div></div>
191
194
  <div class="ttc" id="classSVF_1_1SVFStat_html_ac9d390c417df6f6af6b274618b87010d"><div class="ttname"><a href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">SVF::SVFStat::getClk</a></div><div class="ttdeci">static double getClk(bool mark=false)</div><div class="ttdef"><b>Definition:</b> <a href="SVFStat_8cpp_source.html#l00047">SVFStat.cpp:47</a></div></div>
192
- <div class="ttc" id="classSVF_1_1DDAVFSolver_html_add7daee4a0ecae479a5ab015130c8c93"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#add7daee4a0ecae479a5ab015130c8c93">SVF::DDAVFSolver::isSVFGNodeInCycle</a></div><div class="ttdeci">bool isSVFGNodeInCycle(const SVFGNode *node)</div><div class="ttdoc">Return whether this SVFGNode is in cycle. </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00617">DDAVFSolver.h:617</a></div></div>
195
+ <div class="ttc" id="classSVF_1_1DDAVFSolver_html_add7daee4a0ecae479a5ab015130c8c93"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#add7daee4a0ecae479a5ab015130c8c93">SVF::DDAVFSolver::isSVFGNodeInCycle</a></div><div class="ttdeci">bool isSVFGNodeInCycle(const SVFGNode *node)</div><div class="ttdoc">Return whether this SVFGNode is in cycle. </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00613">DDAVFSolver.h:613</a></div></div>
193
196
  <div class="ttc" id="classSVF_1_1DDAStat_html_a5ebc592d6bd7ef40aff848fb63e9e166"><div class="ttname"><a href="classSVF_1_1DDAStat.html#a5ebc592d6bd7ef40aff848fb63e9e166">SVF::DDAStat::_NumOfInfeasiblePath</a></div><div class="ttdeci">u32_t _NumOfInfeasiblePath</div><div class="ttdef"><b>Definition:</b> <a href="DDAStat_8h_source.html#l00057">DDAStat.h:57</a></div></div>
194
- <div class="ttc" id="classSVF_1_1DDAVFSolver_html_ae0e78fafb7eec0fbc1a02d24547335e9"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#ae0e78fafb7eec0fbc1a02d24547335e9">SVF::DDAVFSolver::candidateQueries</a></div><div class="ttdeci">NodeBS candidateQueries</div><div class="ttdoc">candidate pointers; </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00777">DDAVFSolver.h:777</a></div></div>
197
+ <div class="ttc" id="classSVF_1_1DDAVFSolver_html_ae0e78fafb7eec0fbc1a02d24547335e9"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#ae0e78fafb7eec0fbc1a02d24547335e9">SVF::DDAVFSolver::candidateQueries</a></div><div class="ttdeci">NodeBS candidateQueries</div><div class="ttdoc">candidate pointers; </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00773">DDAVFSolver.h:773</a></div></div>
195
198
  <div class="ttc" id="classSVF_1_1LoadVFGNode_html"><div class="ttname"><a href="classSVF_1_1LoadVFGNode.html">SVF::LoadVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00199">VFGNode.h:199</a></div></div>
196
- <div class="ttc" id="classSVF_1_1DDAVFSolver_html_af66895278f0ecbc882f9e4f43ef9c8a8"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#af66895278f0ecbc882f9e4f43ef9c8a8">SVF::DDAVFSolver::storeToDPMs</a></div><div class="ttdeci">StoreToPMSetMap storeToDPMs</div><div class="ttdoc">map store to set of DPM which have been stong updated there </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00788">DDAVFSolver.h:788</a></div></div>
199
+ <div class="ttc" id="classSVF_1_1DDAVFSolver_html_af66895278f0ecbc882f9e4f43ef9c8a8"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#af66895278f0ecbc882f9e4f43ef9c8a8">SVF::DDAVFSolver::storeToDPMs</a></div><div class="ttdeci">StoreToPMSetMap storeToDPMs</div><div class="ttdoc">map store to set of DPM which have been stong updated there </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00784">DDAVFSolver.h:784</a></div></div>
197
200
  <div class="ttc" id="classSVF_1_1DDAStat_html_a5c007645d73bfc5cfefef672f3c1dcf1"><div class="ttname"><a href="classSVF_1_1DDAStat.html#a5c007645d73bfc5cfefef672f3c1dcf1">SVF::DDAStat::_NumOfStrongUpdates</a></div><div class="ttdeci">u32_t _NumOfStrongUpdates</div><div class="ttdef"><b>Definition:</b> <a href="DDAStat_8h_source.html#l00055">DDAStat.h:55</a></div></div>
198
201
  <div class="ttc" id="classSVF_1_1StmtVFGNode_html_a837da5917c31e14aa51c6fa3e2640849"><div class="ttname"><a href="classSVF_1_1StmtVFGNode.html#a837da5917c31e14aa51c6fa3e2640849">SVF::StmtVFGNode::getPAGSrcNode</a></div><div class="ttdeci">PAGNode * getPAGSrcNode() const</div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00151">VFGNode.h:151</a></div></div>
199
202
  <div class="ttc" id="classSVF_1_1GenericEdge_html_ab47ca533c415841ef75456cbad439589"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">SVF::GenericEdge::getSrcNode</a></div><div class="ttdeci">NodeType * getSrcNode() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00091">GenericGraph.h:91</a></div></div>
200
- <div class="ttc" id="classSVF_1_1DDAVFSolver_html_aac432dfa7ccfc3434d9e0e2eb65afe7f"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#aac432dfa7ccfc3434d9e0e2eb65afe7f">SVF::DDAVFSolver::getCachedTLPointsTo</a></div><div class="ttdeci">virtual const CPtSet &amp; getCachedTLPointsTo(const DPIm &amp;dpm)</div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00569">DDAVFSolver.h:569</a></div></div>
203
+ <div class="ttc" id="classSVF_1_1DDAVFSolver_html_aac432dfa7ccfc3434d9e0e2eb65afe7f"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#aac432dfa7ccfc3434d9e0e2eb65afe7f">SVF::DDAVFSolver::getCachedTLPointsTo</a></div><div class="ttdeci">virtual const CPtSet &amp; getCachedTLPointsTo(const DPIm &amp;dpm)</div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00568">DDAVFSolver.h:568</a></div></div>
201
204
  <div class="ttc" id="classSVF_1_1DDAVFSolver_html_af0538abf12c01d31a0296553e2f7c92d"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#af0538abf12c01d31a0296553e2f7c92d">SVF::DDAVFSolver::DPMToCVarMap</a></div><div class="ttdeci">OrderedMap&lt; DPIm, CVar &gt; DPMToCVarMap</div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00057">DDAVFSolver.h:57</a></div></div>
202
205
  <div class="ttc" id="classSVF_1_1DDAStat_html"><div class="ttname"><a href="classSVF_1_1DDAStat.html">SVF::DDAStat</a></div><div class="ttdef"><b>Definition:</b> <a href="DDAStat_8h_source.html#l00047">DDAStat.h:47</a></div></div>
203
- <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a637dddedd96942d56de6fd6d10c09169"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a637dddedd96942d56de6fd6d10c09169">SVF::DDAVFSolver::updateCallGraphAndSVFG</a></div><div class="ttdeci">virtual void updateCallGraphAndSVFG(const DPIm &amp;, const CallICFGNode *, SVFGEdgeSet &amp;)</div><div class="ttdoc">Update call graph. </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00531">DDAVFSolver.h:531</a></div></div>
206
+ <div class="ttc" id="classSVF_1_1ActualRetVFGNode_html"><div class="ttname"><a href="classSVF_1_1ActualRetVFGNode.html">SVF::ActualRetVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00967">VFGNode.h:967</a></div></div>
207
+ <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a637dddedd96942d56de6fd6d10c09169"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a637dddedd96942d56de6fd6d10c09169">SVF::DDAVFSolver::updateCallGraphAndSVFG</a></div><div class="ttdeci">virtual void updateCallGraphAndSVFG(const DPIm &amp;, const CallICFGNode *, SVFGEdgeSet &amp;)</div><div class="ttdoc">Update call graph. </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00530">DDAVFSolver.h:530</a></div></div>
204
208
  <div class="ttc" id="classSVF_1_1DDAStat_html_a0aec64ca944ea4f914a6fa799b7a8b38"><div class="ttname"><a href="classSVF_1_1DDAStat.html#a0aec64ca944ea4f914a6fa799b7a8b38">SVF::DDAStat::_NumOfMustAliases</a></div><div class="ttdeci">u32_t _NumOfMustAliases</div><div class="ttdef"><b>Definition:</b> <a href="DDAStat_8h_source.html#l00056">DDAStat.h:56</a></div></div>
205
- <div class="ttc" id="classSVF_1_1DDAVFSolver_html_aeb6b56cf3d140d251b0524eb5cbd6dce"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#aeb6b56cf3d140d251b0524eb5cbd6dce">SVF::DDAVFSolver::addSUStat</a></div><div class="ttdeci">void addSUStat(const DPIm &amp;dpm, const SVFGNode *node)</div><div class="ttdoc">stat strong updates num </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00753">DDAVFSolver.h:753</a></div></div>
206
- <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a5521918cc06c182c821b9fae8136e4fe"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a5521918cc06c182c821b9fae8136e4fe">SVF::DDAVFSolver::_pag</a></div><div class="ttdeci">SVFIR * _pag</div><div class="ttdoc">SVFIR. </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00774">DDAVFSolver.h:774</a></div></div>
207
- <div class="ttc" id="classSVF_1_1DDAVFSolver_html_afdecfbacc64cb8d694268aa73ec8a7b6"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#afdecfbacc64cb8d694268aa73ec8a7b6">SVF::DDAVFSolver::outOfBudgetQuery</a></div><div class="ttdeci">bool outOfBudgetQuery</div><div class="ttdoc">Whether the current query is out of step limits. </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00773">DDAVFSolver.h:773</a></div></div>
209
+ <div class="ttc" id="classSVF_1_1DDAVFSolver_html_aeb6b56cf3d140d251b0524eb5cbd6dce"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#aeb6b56cf3d140d251b0524eb5cbd6dce">SVF::DDAVFSolver::addSUStat</a></div><div class="ttdeci">void addSUStat(const DPIm &amp;dpm, const SVFGNode *node)</div><div class="ttdoc">stat strong updates num </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00749">DDAVFSolver.h:749</a></div></div>
210
+ <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a5521918cc06c182c821b9fae8136e4fe"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a5521918cc06c182c821b9fae8136e4fe">SVF::DDAVFSolver::_pag</a></div><div class="ttdeci">SVFIR * _pag</div><div class="ttdoc">SVFIR. </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00770">DDAVFSolver.h:770</a></div></div>
211
+ <div class="ttc" id="classSVF_1_1DDAVFSolver_html_afdecfbacc64cb8d694268aa73ec8a7b6"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#afdecfbacc64cb8d694268aa73ec8a7b6">SVF::DDAVFSolver::outOfBudgetQuery</a></div><div class="ttdeci">bool outOfBudgetQuery</div><div class="ttdoc">Whether the current query is out of step limits. </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00769">DDAVFSolver.h:769</a></div></div>
208
212
  <div class="ttc" id="classSVF_1_1DDAVFSolver_html_ac227096ad71dfda8bc48c139fccb3af2"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#ac227096ad71dfda8bc48c139fccb3af2">SVF::DDAVFSolver::CallInstSet</a></div><div class="ttdeci">PTACallGraphEdge::CallInstSet CallInstSet</div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00053">DDAVFSolver.h:53</a></div></div>
209
213
  <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a2ccbcfa949a1796094b5d9499177fc2b"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a2ccbcfa949a1796094b5d9499177fc2b">SVF::DDAVFSolver::DPMToDPMMap</a></div><div class="ttdeci">OrderedMap&lt; DPIm, DPIm &gt; DPMToDPMMap</div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00058">DDAVFSolver.h:58</a></div></div>
210
- <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a2565bf8dcacb22350dc1dc98ec7595f2"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a2565bf8dcacb22350dc1dc98ec7595f2">SVF::DDAVFSolver::dpmToADCPtSetMap</a></div><div class="ttdeci">DPImToCPtSetMap dpmToADCPtSetMap</div><div class="ttdoc">points-to caching map for address-taken vars </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00783">DDAVFSolver.h:783</a></div></div>
214
+ <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a2565bf8dcacb22350dc1dc98ec7595f2"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a2565bf8dcacb22350dc1dc98ec7595f2">SVF::DDAVFSolver::dpmToADCPtSetMap</a></div><div class="ttdeci">DPImToCPtSetMap dpmToADCPtSetMap</div><div class="ttdoc">points-to caching map for address-taken vars </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00779">DDAVFSolver.h:779</a></div></div>
211
215
  <div class="ttc" id="classSVF_1_1MemObj_html_a898c5bb3956402578266a6fb142e02b1"><div class="ttname"><a href="classSVF_1_1MemObj.html#a898c5bb3956402578266a6fb142e02b1">SVF::MemObj::isHeap</a></div><div class="ttdeci">bool isHeap() const</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00488">SymbolTableInfo.cpp:488</a></div></div>
212
216
  <div class="ttc" id="classSVF_1_1SVFVar_html_a79b35a312248e96a89a28cbf1b99b6fe"><div class="ttname"><a href="classSVF_1_1SVFVar.html#a79b35a312248e96a89a28cbf1b99b6fe">SVF::SVFVar::getFunction</a></div><div class="ttdeci">virtual const SVFFunction * getFunction() const</div><div class="ttdoc">Return the function that this SVFVar resides in. Return nullptr if it is a global or constantexpr nod...</div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00127">SVFVariables.h:127</a></div></div>
213
217
  <div class="ttc" id="classSVF_1_1SVFIR_html_a17c5d9fa7c0bd3cd03c06b5ff0906eb6"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a17c5d9fa7c0bd3cd03c06b5ff0906eb6">SVF::SVFIR::getFunPtr</a></div><div class="ttdeci">NodeID getFunPtr(const CallICFGNode *cs) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00324">SVFIR.h:324</a></div></div>
214
218
  <div class="ttc" id="classSVF_1_1AndersenWaveDiff_html_a48ff6fc4badc79ad3204ae9bd95cc540"><div class="ttname"><a href="classSVF_1_1AndersenWaveDiff.html#a48ff6fc4badc79ad3204ae9bd95cc540">SVF::AndersenWaveDiff::createAndersenWaveDiff</a></div><div class="ttdeci">static AndersenWaveDiff * createAndersenWaveDiff(SVFIR *_pag)</div><div class="ttdoc">Create an singleton instance directly instead of invoking llvm pass manager. </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00389">Andersen.h:389</a></div></div>
215
219
  <div class="ttc" id="classSVF_1_1VFGNode_html_a3c558955f60c237c558d8faafed781e8"><div class="ttname"><a href="classSVF_1_1VFGNode.html#a3c558955f60c237c558d8faafed781e8">SVF::VFGNode::const_iterator</a></div><div class="ttdeci">VFGEdge::VFGEdgeSetTy::const_iterator const_iterator</div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00060">VFGNode.h:60</a></div></div>
216
- <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a4725013a7617645e1418ed670d4837b5"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a4725013a7617645e1418ed670d4837b5">SVF::DDAVFSolver::addLoadDpm</a></div><div class="ttdeci">void addLoadDpm(const DPIm &amp;dpm, const DPIm &amp;loadDpm)</div><div class="ttdoc">Note that simply use &quot;dpmToloadDpmMap[dpm]=loadDpm&quot;, requires DPIm have a default constructor...</div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00687">DDAVFSolver.h:687</a></div></div>
217
- <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a601282325e55badc15f3ba9141816af5"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a601282325e55badc15f3ba9141816af5">SVF::DDAVFSolver::handleBKCondition</a></div><div class="ttdeci">virtual bool handleBKCondition(DPIm &amp;, const SVFGEdge *)</div><div class="ttdoc">Handle condition for context or path analysis (backward analysis) </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00526">DDAVFSolver.h:526</a></div></div>
220
+ <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a4725013a7617645e1418ed670d4837b5"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a4725013a7617645e1418ed670d4837b5">SVF::DDAVFSolver::addLoadDpm</a></div><div class="ttdeci">void addLoadDpm(const DPIm &amp;dpm, const DPIm &amp;loadDpm)</div><div class="ttdoc">Note that simply use &quot;dpmToloadDpmMap[dpm]=loadDpm&quot;, requires DPIm have a default constructor...</div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00683">DDAVFSolver.h:683</a></div></div>
221
+ <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a601282325e55badc15f3ba9141816af5"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a601282325e55badc15f3ba9141816af5">SVF::DDAVFSolver::handleBKCondition</a></div><div class="ttdeci">virtual bool handleBKCondition(DPIm &amp;, const SVFGEdge *)</div><div class="ttdoc">Handle condition for context or path analysis (backward analysis) </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00525">DDAVFSolver.h:525</a></div></div>
218
222
  <div class="ttc" id="classSVF_1_1VFG_html_ae1348fd6d196ee8a6bd8d98022464d50"><div class="ttname"><a href="classSVF_1_1VFG.html#ae1348fd6d196ee8a6bd8d98022464d50">SVF::VFG::getIntraVFGEdge</a></div><div class="ttdeci">VFGEdge * getIntraVFGEdge(const VFGNode *src, const VFGNode *dst, VFGEdge::VFGEdgeK kind)</div><div class="ttdoc">Get a SVFG edge according to src and dst. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00919">VFG.cpp:919</a></div></div>
219
- <div class="ttc" id="classSVF_1_1DDAVFSolver_html_ae31e9281e4f1e0585fdf328b7339e1bf"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#ae31e9281e4f1e0585fdf328b7339e1bf">SVF::DDAVFSolver::getCachedPointsTo</a></div><div class="ttdeci">virtual const CPtSet &amp; getCachedPointsTo(const DPIm &amp;dpm)</div><div class="ttdoc">Points-to Caching for top-level pointers and address-taken objects. </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00553">DDAVFSolver.h:553</a></div></div>
220
- <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a7994236bff84ba8244592fdf5e546734"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a7994236bff84ba8244592fdf5e546734">SVF::DDAVFSolver::isOutOfBudgetQuery</a></div><div class="ttdeci">bool isOutOfBudgetQuery() const</div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00732">DDAVFSolver.h:732</a></div></div>
223
+ <div class="ttc" id="classSVF_1_1DDAVFSolver_html_ae31e9281e4f1e0585fdf328b7339e1bf"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#ae31e9281e4f1e0585fdf328b7339e1bf">SVF::DDAVFSolver::getCachedPointsTo</a></div><div class="ttdeci">virtual const CPtSet &amp; getCachedPointsTo(const DPIm &amp;dpm)</div><div class="ttdoc">Points-to Caching for top-level pointers and address-taken objects. </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00552">DDAVFSolver.h:552</a></div></div>
224
+ <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a7994236bff84ba8244592fdf5e546734"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a7994236bff84ba8244592fdf5e546734">SVF::DDAVFSolver::isOutOfBudgetQuery</a></div><div class="ttdeci">bool isOutOfBudgetQuery() const</div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00728">DDAVFSolver.h:728</a></div></div>
221
225
  <div class="ttc" id="classSVF_1_1DDAVFSolver_html_aef98e8e9144a69bb7481fef5d2dcb303"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#aef98e8e9144a69bb7481fef5d2dcb303">SVF::DDAVFSolver::ConstSVFGEdgeSet</a></div><div class="ttdeci">OrderedSet&lt; const SVFGEdge *&gt; ConstSVFGEdgeSet</div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00060">DDAVFSolver.h:60</a></div></div>
222
226
  <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>
223
227
  <div class="ttc" id="classSVF_1_1SparseBitVector_html"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html">SVF::SparseBitVector</a></div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l00462">SparseBitVector.h:462</a></div></div>
224
228
  <div class="ttc" id="classSVF_1_1MemObj_html_a41d85883d44ad77832b020455951c6fc"><div class="ttname"><a href="classSVF_1_1MemObj.html#a41d85883d44ad77832b020455951c6fc">SVF::MemObj::isFieldInsensitive</a></div><div class="ttdeci">bool isFieldInsensitive() const</div><div class="ttdoc">Return true if its field limit is 0. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00457">SymbolTableInfo.cpp:457</a></div></div>
225
- <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a7112ce6145be0855f8b035bb0d8a331c"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a7112ce6145be0855f8b035bb0d8a331c">SVF::DDAVFSolver::markbkVisited</a></div><div class="ttdeci">void markbkVisited(const DPIm &amp;dpm)</div><div class="ttdoc">Visited flags to avoid cycles. </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00536">DDAVFSolver.h:536</a></div></div>
229
+ <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a7112ce6145be0855f8b035bb0d8a331c"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a7112ce6145be0855f8b035bb0d8a331c">SVF::DDAVFSolver::markbkVisited</a></div><div class="ttdeci">void markbkVisited(const DPIm &amp;dpm)</div><div class="ttdoc">Visited flags to avoid cycles. </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00535">DDAVFSolver.h:535</a></div></div>
226
230
  <div class="ttc" id="classSVF_1_1SVFG_html"><div class="ttname"><a href="classSVF_1_1SVFG.html">SVF::SVFG</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00065">SVFG.h:65</a></div></div>
227
231
  <div class="ttc" id="namespaceSVF_html"><div class="ttname"><a href="namespaceSVF.html">SVF</a></div><div class="ttdoc">for isBitcode </div><div class="ttdef"><b>Definition:</b> <a href="CFGNormalizer_8h_source.html#l00035">CFGNormalizer.h:35</a></div></div>
228
232
  <div class="ttc" id="classSVF_1_1GenericNode_html_ac3e55ef37aefb411ea4c87b1aa3b1895"><div class="ttname"><a href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">SVF::GenericNode::getId</a></div><div class="ttdeci">NodeID getId() const</div><div class="ttdoc">Get ID. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00171">GenericGraph.h:171</a></div></div>
@@ -231,28 +235,32 @@ $(function() {
231
235
  <div class="ttc" id="classSVF_1_1SVFGBuilder_html"><div class="ttname"><a href="classSVF_1_1SVFGBuilder.html">SVF::SVFGBuilder</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFGBuilder_8h_source.html#l00042">SVFGBuilder.h:42</a></div></div>
232
236
  <div class="ttc" id="classSVF_1_1DDAVFSolver_html_acb7980c7e0d1d8ad6abab0b80831d2a9"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#acb7980c7e0d1d8ad6abab0b80831d2a9">SVF::DDAVFSolver::getSVFG</a></div><div class="ttdeci">SVFG * getSVFG() const</div><div class="ttdoc">Return SVFG. </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00118">DDAVFSolver.h:118</a></div></div>
233
237
  <div class="ttc" id="classSVF_1_1SparseBitVector_html_a61bd86909a141f9de873d92c0f904832"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html#a61bd86909a141f9de873d92c0f904832">SVF::SparseBitVector::set</a></div><div class="ttdeci">void set(unsigned Idx)</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l00747">SparseBitVector.h:747</a></div></div>
234
- <div class="ttc" id="classSVF_1_1DDAVFSolver_html_adcb641eec4f620effdb3f61a46429f40"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#adcb641eec4f620effdb3f61a46429f40">SVF::DDAVFSolver::setDDAStat</a></div><div class="ttdeci">DDAStat * setDDAStat(DDAStat *s)</div><div class="ttdoc">Set DDAStat. </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00747">DDAVFSolver.h:747</a></div></div>
238
+ <div class="ttc" id="classSVF_1_1DDAVFSolver_html_adcb641eec4f620effdb3f61a46429f40"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#adcb641eec4f620effdb3f61a46429f40">SVF::DDAVFSolver::setDDAStat</a></div><div class="ttdeci">DDAStat * setDDAStat(DDAStat *s)</div><div class="ttdoc">Set DDAStat. </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00743">DDAVFSolver.h:743</a></div></div>
235
239
  <div class="ttc" id="namespaceSVF_html_aae350f79ebcb9efd22ec9efa6678cd13"><div class="ttname"><a href="namespaceSVF.html#aae350f79ebcb9efd22ec9efa6678cd13">SVF::dump</a></div><div class="ttdeci">void dump(const SparseBitVector&lt; ElementSize &gt; &amp;LHS, std::ostream &amp;out)</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l01191">SparseBitVector.h:1191</a></div></div>
236
- <div class="ttc" id="classSVF_1_1DDAVFSolver_html_aa1d1b6e8cc23f0a6d3935cbe4f02cbdf"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#aa1d1b6e8cc23f0a6d3935cbe4f02cbdf">SVF::DDAVFSolver::_ander</a></div><div class="ttdeci">AndersenWaveDiff * _ander</div><div class="ttdoc">Andersen&amp;#39;s analysis. </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00776">DDAVFSolver.h:776</a></div></div>
237
- <div class="ttc" id="classSVF_1_1DDAVFSolver_html_ae1e77060ac22d465b5cc9430962e280c"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#ae1e77060ac22d465b5cc9430962e280c">SVF::DDAVFSolver::addOutOfBudgetDpm</a></div><div class="ttdeci">void addOutOfBudgetDpm(const DPIm &amp;dpm)</div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00736">DDAVFSolver.h:736</a></div></div>
238
- <div class="ttc" id="classSVF_1_1DDAVFSolver_html_afcc074be34dd0c45418ff16b3d9d4192"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#afcc074be34dd0c45418ff16b3d9d4192">SVF::DDAVFSolver::resolveFunPtr</a></div><div class="ttdeci">void resolveFunPtr(const DPIm &amp;dpm)</div><div class="ttdoc">resolve function pointer </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00489">DDAVFSolver.h:489</a></div></div>
240
+ <div class="ttc" id="classSVF_1_1DDAVFSolver_html_aa1d1b6e8cc23f0a6d3935cbe4f02cbdf"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#aa1d1b6e8cc23f0a6d3935cbe4f02cbdf">SVF::DDAVFSolver::_ander</a></div><div class="ttdeci">AndersenWaveDiff * _ander</div><div class="ttdoc">Andersen&amp;#39;s analysis. </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00772">DDAVFSolver.h:772</a></div></div>
241
+ <div class="ttc" id="classSVF_1_1DDAVFSolver_html_ae1e77060ac22d465b5cc9430962e280c"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#ae1e77060ac22d465b5cc9430962e280c">SVF::DDAVFSolver::addOutOfBudgetDpm</a></div><div class="ttdeci">void addOutOfBudgetDpm(const DPIm &amp;dpm)</div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00732">DDAVFSolver.h:732</a></div></div>
242
+ <div class="ttc" id="classSVF_1_1DDAVFSolver_html_afcc074be34dd0c45418ff16b3d9d4192"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#afcc074be34dd0c45418ff16b3d9d4192">SVF::DDAVFSolver::resolveFunPtr</a></div><div class="ttdeci">void resolveFunPtr(const DPIm &amp;dpm)</div><div class="ttdoc">resolve function pointer </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00488">DDAVFSolver.h:488</a></div></div>
243
+ <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a5c8cbc986cccb9d84f87aae162df3737"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a5c8cbc986cccb9d84f87aae162df3737">SVF::SVFUtil::isa</a></div><div class="ttdeci">LLVM_NODISCARD bool isa(const Y &amp;Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00241">Casting.h:241</a></div></div>
244
+ <div class="ttc" id="classSVF_1_1FormalParmVFGNode_html"><div class="ttname"><a href="classSVF_1_1FormalParmVFGNode.html">SVF::FormalParmVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00898">VFGNode.h:898</a></div></div>
239
245
  <div class="ttc" id="classSVF_1_1SCCDetection_html_a5d699af73b1e7ad4e3a5f6d26b8b6d15"><div class="ttname"><a href="classSVF_1_1SCCDetection.html#a5d699af73b1e7ad4e3a5f6d26b8b6d15">SVF::SCCDetection::isInCycle</a></div><div class="ttdeci">bool isInCycle(NodeID n) const</div><div class="ttdoc">whether the node is in a cycle </div><div class="ttdef"><b>Definition:</b> <a href="SCC_8h_source.html#l00149">SCC.h:149</a></div></div>
240
246
  <div class="ttc" id="classSVF_1_1IndirectSVFGEdge_html"><div class="ttname"><a href="classSVF_1_1IndirectSVFGEdge.html">SVF::IndirectSVFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFGEdge_8h_source.html#l00042">SVFGEdge.h:42</a></div></div>
241
- <div class="ttc" id="classSVF_1_1DDAVFSolver_html_aa7e5839c5bc6f913561de10bce61e74b"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#aa7e5839c5bc6f913561de10bce61e74b">SVF::DDAVFSolver::clearbkVisited</a></div><div class="ttdeci">void clearbkVisited(const DPIm &amp;dpm)</div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00544">DDAVFSolver.h:544</a></div></div>
242
- <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a1583ed2eb1d4b88dc2a5b4c0b6842496"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a1583ed2eb1d4b88dc2a5b4c0b6842496">SVF::DDAVFSolver::getSVFGSCCRepNode</a></div><div class="ttdeci">NodeID getSVFGSCCRepNode(NodeID id)</div><div class="ttdoc">Get SCC rep node of a SVFG node. </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00612">DDAVFSolver.h:612</a></div></div>
247
+ <div class="ttc" id="classSVF_1_1FormalRetVFGNode_html"><div class="ttname"><a href="classSVF_1_1FormalRetVFGNode.html">SVF::FormalRetVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l01025">VFGNode.h:1025</a></div></div>
248
+ <div class="ttc" id="classSVF_1_1DDAVFSolver_html_aa7e5839c5bc6f913561de10bce61e74b"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#aa7e5839c5bc6f913561de10bce61e74b">SVF::DDAVFSolver::clearbkVisited</a></div><div class="ttdeci">void clearbkVisited(const DPIm &amp;dpm)</div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00543">DDAVFSolver.h:543</a></div></div>
249
+ <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a1583ed2eb1d4b88dc2a5b4c0b6842496"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a1583ed2eb1d4b88dc2a5b4c0b6842496">SVF::DDAVFSolver::getSVFGSCCRepNode</a></div><div class="ttdeci">NodeID getSVFGSCCRepNode(NodeID id)</div><div class="ttdoc">Get SCC rep node of a SVFG node. </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00608">DDAVFSolver.h:608</a></div></div>
243
250
  <div class="ttc" id="SVFType_8h_html_a6c9e2209a2c38607a9e3b7fab242886a"><div class="ttname"><a href="SVFType_8h.html#a6c9e2209a2c38607a9e3b7fab242886a">DOSTAT</a></div><div class="ttdeci">#define DOSTAT(X)</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00420">SVFType.h:420</a></div></div>
244
251
  <div class="ttc" id="classSVF_1_1GenericGraph_html_a43c9c773bfa17abf481c33073e30d01b"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">SVF::GenericGraph::getGNode</a></div><div class="ttdeci">NodeType * getGNode(NodeID id) const</div><div class="ttdoc">Get a node. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00395">GenericGraph.h:395</a></div></div>
245
- <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a7579491400f1781356cb7d1913537547"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a7579491400f1781356cb7d1913537547">SVF::DDAVFSolver::addLoadCVar</a></div><div class="ttdeci">void addLoadCVar(const DPIm &amp;dpm, const CVar &amp;loadVar)</div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00701">DDAVFSolver.h:701</a></div></div>
246
- <div class="ttc" id="classSVF_1_1DDAVFSolver_html_abd652b2627f68d7d4f8bf3bdb20ce975"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#abd652b2627f68d7d4f8bf3bdb20ce975">SVF::DDAVFSolver::setCallGraphSCC</a></div><div class="ttdeci">void setCallGraphSCC(CallGraphSCC *scc)</div><div class="ttdoc">Set callgraphSCC. </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00632">DDAVFSolver.h:632</a></div></div>
247
- <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a9a9c3a8b5e4ffc89418073110e446f20"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a9a9c3a8b5e4ffc89418073110e446f20">SVF::DDAVFSolver::isbkVisited</a></div><div class="ttdeci">bool isbkVisited(const DPIm &amp;dpm)</div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00540">DDAVFSolver.h:540</a></div></div>
252
+ <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a7579491400f1781356cb7d1913537547"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a7579491400f1781356cb7d1913537547">SVF::DDAVFSolver::addLoadCVar</a></div><div class="ttdeci">void addLoadCVar(const DPIm &amp;dpm, const CVar &amp;loadVar)</div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00697">DDAVFSolver.h:697</a></div></div>
253
+ <div class="ttc" id="classSVF_1_1DDAVFSolver_html_abd652b2627f68d7d4f8bf3bdb20ce975"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#abd652b2627f68d7d4f8bf3bdb20ce975">SVF::DDAVFSolver::setCallGraphSCC</a></div><div class="ttdeci">void setCallGraphSCC(CallGraphSCC *scc)</div><div class="ttdoc">Set callgraphSCC. </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00628">DDAVFSolver.h:628</a></div></div>
254
+ <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a9a9c3a8b5e4ffc89418073110e446f20"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a9a9c3a8b5e4ffc89418073110e446f20">SVF::DDAVFSolver::isbkVisited</a></div><div class="ttdeci">bool isbkVisited(const DPIm &amp;dpm)</div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00539">DDAVFSolver.h:539</a></div></div>
248
255
  <div class="ttc" id="classSVF_1_1SVFIR_html_abf209739a97b96ae0d1c8451fdc684e8"><div class="ttname"><a href="classSVF_1_1SVFIR.html#abf209739a97b96ae0d1c8451fdc684e8">SVF::SVFIR::getIndCallSites</a></div><div class="ttdeci">const CallSiteSet &amp; getIndCallSites(NodeID funPtr) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00330">SVFIR.h:330</a></div></div>
249
256
  <div class="ttc" id="classSVF_1_1SVFIR_html"><div class="ttname"><a href="classSVF_1_1SVFIR.html">SVF::SVFIR</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00043">SVFIR.h:43</a></div></div>
250
257
  <div class="ttc" id="classSVF_1_1SVFIR_html_a980e54129ece0757d7f0373f37428507"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a980e54129ece0757d7f0373f37428507">SVF::SVFIR::isNonPointerObj</a></div><div class="ttdeci">bool isNonPointerObj(NodeID id) const</div><div class="ttdoc">Whether an object can point to any other object or any of its fields is a pointer type...</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00671">SVFIR.cpp:671</a></div></div>
258
+ <div class="ttc" id="classSVF_1_1NullPtrVFGNode_html"><div class="ttname"><a href="classSVF_1_1NullPtrVFGNode.html">SVF::NullPtrVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l01154">VFGNode.h:1154</a></div></div>
251
259
  <div class="ttc" id="SVFType_8h_html_a173ce1b9b505fdadf5613b663749d3b0"><div class="ttname"><a href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a></div><div class="ttdeci">#define DBOUT(TYPE, X)</div><div class="ttdoc">LLVM debug macros, define type of your DEBUG model of each pass. </div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00419">SVFType.h:419</a></div></div>
252
- <div class="ttc" id="classSVF_1_1DDAVFSolver_html_aa724698d499615bce7caf8f312b746a7"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#aa724698d499615bce7caf8f312b746a7">SVF::DDAVFSolver::locToDpmSetMap</a></div><div class="ttdeci">LocToDPMVecMap locToDpmSetMap</div><div class="ttdoc">map location to its dpms </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00784">DDAVFSolver.h:784</a></div></div>
253
- <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a94bcddbc7b9ccecb3fbb693b13372785"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a94bcddbc7b9ccecb3fbb693b13372785">SVF::DDAVFSolver::isStrongUpdate</a></div><div class="ttdeci">virtual bool isStrongUpdate(const CPtSet &amp;dstCPSet, const StoreSVFGNode *store)</div><div class="ttdoc">Return TRUE if this is a strong update STORE statement. </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00449">DDAVFSolver.h:449</a></div></div>
254
- <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a8c5220108a65fa281959529cb1e9cc57"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a8c5220108a65fa281959529cb1e9cc57">SVF::DDAVFSolver::reCompute</a></div><div class="ttdeci">void reCompute(const DPIm &amp;dpm)</div><div class="ttdoc">recompute points-to for value-flow cycles and indirect calls </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00250">DDAVFSolver.h:250</a></div></div>
255
- <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a00ae738a76564b7b334faae567674e34"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a00ae738a76564b7b334faae567674e34">SVF::DDAVFSolver::removeDpmFromLoc</a></div><div class="ttdeci">void removeDpmFromLoc(const DPIm &amp;dpm)</div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00672">DDAVFSolver.h:672</a></div></div>
260
+ <div class="ttc" id="classSVF_1_1DDAVFSolver_html_aa724698d499615bce7caf8f312b746a7"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#aa724698d499615bce7caf8f312b746a7">SVF::DDAVFSolver::locToDpmSetMap</a></div><div class="ttdeci">LocToDPMVecMap locToDpmSetMap</div><div class="ttdoc">map location to its dpms </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00780">DDAVFSolver.h:780</a></div></div>
261
+ <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a94bcddbc7b9ccecb3fbb693b13372785"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a94bcddbc7b9ccecb3fbb693b13372785">SVF::DDAVFSolver::isStrongUpdate</a></div><div class="ttdeci">virtual bool isStrongUpdate(const CPtSet &amp;dstCPSet, const StoreSVFGNode *store)</div><div class="ttdoc">Return TRUE if this is a strong update STORE statement. </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00448">DDAVFSolver.h:448</a></div></div>
262
+ <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a8c5220108a65fa281959529cb1e9cc57"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a8c5220108a65fa281959529cb1e9cc57">SVF::DDAVFSolver::reCompute</a></div><div class="ttdeci">void reCompute(const DPIm &amp;dpm)</div><div class="ttdoc">recompute points-to for value-flow cycles and indirect calls </div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00249">DDAVFSolver.h:249</a></div></div>
263
+ <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a00ae738a76564b7b334faae567674e34"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a00ae738a76564b7b334faae567674e34">SVF::DDAVFSolver::removeDpmFromLoc</a></div><div class="ttdeci">void removeDpmFromLoc(const DPIm &amp;dpm)</div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00668">DDAVFSolver.h:668</a></div></div>
256
264
  <div class="ttc" id="classSVF_1_1VFGNode_html"><div class="ttname"><a href="classSVF_1_1VFGNode.html">SVF::VFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00046">VFGNode.h:46</a></div></div>
257
265
  <div class="ttc" id="namespaceSVF_html_aedf0d6718ca176e0b9e17ab4b30729c6"><div class="ttname"><a href="namespaceSVF.html#aedf0d6718ca176e0b9e17ab4b30729c6">SVF::OrderedMap</a></div><div class="ttdeci">std::map&lt; Key, Value, Compare, Allocator &gt; OrderedMap</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00106">SVFType.h:106</a></div></div>
258
266
  <div class="ttc" id="classSVF_1_1DDAVFSolver_html_a0c590e9d56b6d37cb6e0c9081363a0ef"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a0c590e9d56b6d37cb6e0c9081363a0ef">SVF::DDAVFSolver::CallSiteSet</a></div><div class="ttdeci">SVFIR::CallSiteSet CallSiteSet</div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00054">DDAVFSolver.h:54</a></div></div>