svf-tools 1.0.402 → 1.0.403
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.
- package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/AndersenSFR_8h_source.html +2 -2
- package/SVF-doxygen/html/html/CHG_8h_source.html +2 -2
- package/SVF-doxygen/html/html/CPPUtil_8cpp.html +3 -3
- package/SVF-doxygen/html/html/CPPUtil_8cpp_source.html +3 -2
- package/SVF-doxygen/html/html/CSC_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/CSC_8h_source.html +2 -2
- package/SVF-doxygen/html/html/Conditions_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/ConsGEdge_8h_source.html +2 -2
- package/SVF-doxygen/html/html/GenericGraph_8h_source.html +2 -2
- package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/ICFGEdge_8h_source.html +2 -2
- package/SVF-doxygen/html/html/ICFG_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/ICFG_8h_source.html +2 -2
- package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +2 -2
- package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/LocationSet_8h_source.html +2 -2
- package/SVF-doxygen/html/html/MHP_8cpp.html +2 -2
- package/SVF-doxygen/html/html/MHP_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/PAGBuilderFromFile_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/PAGBuilderFromFile_8h_source.html +2 -2
- package/SVF-doxygen/html/html/SVFBasicTypes_8h.html +2 -2
- package/SVF-doxygen/html/html/SVFBasicTypes_8h_source.html +2 -2
- package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +2 -2
- package/SVF-doxygen/html/html/SVFStatements_8h_source.html +2 -2
- package/SVF-doxygen/html/html/SVFVariables_8h_source.html +2 -2
- package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +2 -2
- package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ActualParmVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ActualRetVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AddrCGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AddrStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AddrVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1ArgumentVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AssignStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1BranchVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CHEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CHGraph.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1CHNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CSC.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1CallCFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CallDirSVFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CallICFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CallIndSVFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CloneDummyObjVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CloneFIObjVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CmpStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CondManager.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ConstraintEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CopyCGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CopyStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CopyVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DCHEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DCHNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DirectSVFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DummyValVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DummyVersionPropSVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FormalINSVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FormalOUTSVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FormalParmVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FormalRetVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FunEntryICFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FunExitICFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GenericEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1GenericNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1GepCGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1GepVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GepValVar.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1GlobalICFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1HareParForEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ICFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ICFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IRAnnotator.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1IndirectSVFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1InterICFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1InterMSSAPHISVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraCFGEdge.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1IntraDirSVFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraICFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraIndSVFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraMSSAPHISVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LoadCGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LoadStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LoadVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1MRSVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MSSAPHISVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MultiOpndStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1NormalGepCGEdge.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1NullPtrVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PhiStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1RetCFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1RetDirSVFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1RetICFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1RetIndSVFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1RetPN.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFBasicBlock.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFFunction.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFGlobal.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1SVFStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFValue.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SelectStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1StmtVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1StoreCGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1StoreStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1StoreVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1TCTEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1TCTNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ThreadForkEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ThreadJoinEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ThreadMHPIndSVFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ValVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VarArgPN.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VariantGepCGEdge.html +1 -1
- package/SVF-doxygen/html/html/namespaceSVF.html +5 -5
- package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +2 -2
- package/SVF-doxygen/html/html/namespaceSVF_1_1cppUtil.html +4 -4
- package/SVF-doxygen/html/html/namespacemembers_s.html +1 -1
- package/SVF-doxygen/html/html/namespacemembers_type_s.html +1 -1
- package/SVF-doxygen/html/html/search/all_13.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_11.js +1 -1
- package/include/Util/SVFBasicTypes.h +1 -1
- package/lib/SVF-FE/CPPUtil.cpp +2 -2
- package/package.json +1 -1
|
@@ -66,7 +66,7 @@ $(function() {
|
|
|
66
66
|
<div class="title">SVFStatements.h</div> </div>
|
|
67
67
|
</div><!--header-->
|
|
68
68
|
<div class="contents">
|
|
69
|
-
<a href="SVFStatements_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> <span class="comment">//===- SVFStatements.h -- SVF statements-------------------------------------------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// SVF: Static Value-Flow Analysis</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// Copyright (C) <2013-2017> <Yulei Sui></span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> </div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <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> <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> <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> <span class="comment">// (at your option) any later version.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <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> <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> <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> <span class="comment">// GNU General Public License for more details.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <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> <span class="comment">// along with this program. If not, see <http://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment">//</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment">/*</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment"> * SVFStatements.h</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"> *</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment"> * Created on: Nov 10, 2013</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment"> * Author: Yulei Sui</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment"> */</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#ifndef PAGEDGE_H_</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#define PAGEDGE_H_</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include "<a class="code" href="GenericGraph_8h.html">Graphs/GenericGraph.h</a>"</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include "<a class="code" href="LocationSet_8h.html">MemoryModel/LocationSet.h</a>"</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#include "<a class="code" href="ICFGNode_8h.html">Graphs/ICFGNode.h</a>"</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="namespaceSVF.html#ab502ff5e204678640c1081d104f60971"> 41</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="comment">/*</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="comment"> * SVFIR program statements (PAGEdges)</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="comment"> */</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1GenericEdge.html">GenericEdge<SVFVar></a> <a class="code" href="namespaceSVF.html#ab502ff5e204678640c1081d104f60971">GenericPAGEdgeTy</a>;</div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html"> 47</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> : <span class="keyword">public</span> GenericPAGEdgeTy</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9"> 54</a></span>  <span class="keyword">enum</span> <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9">PEDGEK</a></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  {</div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad2a5e6fe0f2b5fefb53abb9e91c57688"> 56</a></span>  <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a0a9a0f650e864e89b7cbb3dc8c8aa197">Addr</a>, <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad3469cdfb64f05163b5310b731b221da">Copy</a>, <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9aa0f700b514c431ec5329aec49df56dcc">Store</a>, <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a62ac8480c43fcc657c631ec0003b15d5">Load</a>, <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a97ca16eba4c5f92e16388f0cdbcfcc00">Call</a>, <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a8d269a45adf13e69468f0357222ab2af">Ret</a>, <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a20d960c19118d1ed319e0dbea94405e8">Gep</a>, <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a6b3cd98eeb47c8475e7ee64480dcdee9">Phi</a>, <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad9397ec243a61992dc2b5681bea587fa">Select</a>, <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a610d6662d1814cffbf23db29e7e620c0">Cmp</a>, <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad58f5e59c55e1ffd23b83d16224fed13">BinaryOp</a>, <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad2a5e6fe0f2b5fefb53abb9e91c57688">UnaryOp</a>, <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad52703e3ec09b6a4f565e5d82279b6a3">Branch</a>, <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a375b956af2119d7abca8f1995f7701fd">ThreadFork</a>, <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a3c3f8883c2d3b50aef6331d5da97ffb0">ThreadJoin</a></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  };</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a6a689f62af301bd6ac09d7019aba1c17"> 60</a></span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* <a class="code" href="classSVF_1_1SVFStmt.html#a6a689f62af301bd6ac09d7019aba1c17">value</a>; </div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a877c7137875233e147faeb1198243f36"> 61</a></span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *<a class="code" href="classSVF_1_1SVFStmt.html#a877c7137875233e147faeb1198243f36">basicBlock</a>; </div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a50046a1500ec6e2819ef55162e70cc71"> 62</a></span>  <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a> *<a class="code" href="classSVF_1_1SVFStmt.html#a50046a1500ec6e2819ef55162e70cc71">icfgNode</a>; </div><div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a593cc8136f2138a518476405e667e060"> 63</a></span>  <a class="code" href="namespaceSVF.html#ae71551d6a1fc300e0403297aa25ddf94">EdgeID</a> <a class="code" href="classSVF_1_1SVFStmt.html#a593cc8136f2138a518476405e667e060">edgeId</a>; </div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#af1a9c2a18805560e46425bd98a35dea9"> 65</a></span>  <span class="keyword">static</span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1SVFStmt.html#af1a9c2a18805560e46425bd98a35dea9">totalEdgeNum</a>; </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <a class="code" href="classSVF_1_1SVFStmt.html#a2ab7295fe26d2c6d2d5c9fd027f96a47">SVFStmt</a>(<a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* s, <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* d, <a class="code" href="classSVF_1_1GenericEdge.html#aab8892b73370c32b48621cd1d0cce614">GEdgeFlag</a> k, <span class="keywordtype">bool</span> real=<span class="keyword">true</span>);</div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#aac79c7e8d390f297002782afb0ba3ff0"> 70</a></span>  <a class="code" href="classSVF_1_1SVFStmt.html#aac79c7e8d390f297002782afb0ba3ff0">~SVFStmt</a>()</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  {</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  }</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> </div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#ac517a3166a3afe45d04480534ac3bb50"> 76</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFStmt.html#ac517a3166a3afe45d04480534ac3bb50">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>*)</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  }</div><div class="line"><a name="l00080"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a00339663741d9f581d2f3ecae5a3e7e3"> 80</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFStmt.html#a00339663741d9f581d2f3ecae5a3e7e3">classof</a>(<span class="keyword">const</span> GenericPAGEdgeTy *edge)</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  {</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a0a9a0f650e864e89b7cbb3dc8c8aa197">SVFStmt::Addr</a> ||</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad3469cdfb64f05163b5310b731b221da">SVFStmt::Copy</a> ||</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9aa0f700b514c431ec5329aec49df56dcc">SVFStmt::Store</a> ||</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a62ac8480c43fcc657c631ec0003b15d5">SVFStmt::Load</a> ||</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a97ca16eba4c5f92e16388f0cdbcfcc00">SVFStmt::Call</a> ||</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a8d269a45adf13e69468f0357222ab2af">SVFStmt::Ret</a> ||</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a20d960c19118d1ed319e0dbea94405e8">SVFStmt::Gep</a> ||</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a610d6662d1814cffbf23db29e7e620c0">SVFStmt::Cmp</a> ||</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad58f5e59c55e1ffd23b83d16224fed13">SVFStmt::BinaryOp</a> ||</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad2a5e6fe0f2b5fefb53abb9e91c57688">SVFStmt::UnaryOp</a> ||</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a375b956af2119d7abca8f1995f7701fd">SVFStmt::ThreadFork</a> ||</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a3c3f8883c2d3b50aef6331d5da97ffb0">SVFStmt::ThreadJoin</a>;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  }</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div><div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#af7bb0d687fc61cae1de639c88e472491"> 98</a></span>  <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#ae71551d6a1fc300e0403297aa25ddf94">EdgeID</a> <a class="code" href="classSVF_1_1SVFStmt.html#af7bb0d687fc61cae1de639c88e472491">getEdgeID</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFStmt.html#a593cc8136f2138a518476405e667e060">edgeId</a>;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  }</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFStmt.html#a0b6c03af568b70903da6b200ac86c951">isPTAEdge</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> </div><div class="line"><a name="l00107"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a86628ea173dec4934322f5d1caf2e1db"> 107</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* <a class="code" href="classSVF_1_1SVFStmt.html#a86628ea173dec4934322f5d1caf2e1db">getInst</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a><<a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>>(<a class="code" href="classSVF_1_1SVFStmt.html#a6a689f62af301bd6ac09d7019aba1c17">value</a>);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  }</div><div class="line"><a name="l00111"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a24dddb4e346a6e569908e3efe8a6ecc0"> 111</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFStmt.html#a24dddb4e346a6e569908e3efe8a6ecc0">setValue</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *val)</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  {</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  value = val;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  }</div><div class="line"><a name="l00115"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a65ee8b43a3a4999eb112a197d1a9f882"> 115</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* <a class="code" href="classSVF_1_1SVFStmt.html#a65ee8b43a3a4999eb112a197d1a9f882">getValue</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFStmt.html#a6a689f62af301bd6ac09d7019aba1c17">value</a>;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  }</div><div class="line"><a name="l00119"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a852730edf374d18a3fb3985211ed7623"> 119</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFStmt.html#a852730edf374d18a3fb3985211ed7623">setBB</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *bb)</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  {</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  basicBlock = bb;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  }</div><div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a793c53e0b4f9a58099c096f0a0856495"> 123</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* <a class="code" href="classSVF_1_1SVFStmt.html#a793c53e0b4f9a58099c096f0a0856495">getBB</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFStmt.html#a877c7137875233e147faeb1198243f36">basicBlock</a>;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  }</div><div class="line"><a name="l00127"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#adb92a92f5c878576dff26cb38eab8c8c"> 127</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFStmt.html#adb92a92f5c878576dff26cb38eab8c8c">setICFGNode</a>(<a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a> *node)</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  {</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  icfgNode = node;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  }</div><div class="line"><a name="l00131"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#aa809a57c8cdaaa35dfc3cc0f3b33b52b"> 131</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* <a class="code" href="classSVF_1_1SVFStmt.html#aa809a57c8cdaaa35dfc3cc0f3b33b52b">getICFGNode</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFStmt.html#a50046a1500ec6e2819ef55162e70cc71">icfgNode</a>;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  }</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> </div><div class="line"><a name="l00138"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a3b20523aed66ac8943d7d00ff777137b"> 138</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classSVF_1_1GenericEdge.html#aab8892b73370c32b48621cd1d0cce614">GEdgeFlag</a> <a class="code" href="classSVF_1_1SVFStmt.html#a3b20523aed66ac8943d7d00ff777137b">makeEdgeFlagWithAddionalOpnd</a>(<a class="code" href="classSVF_1_1GenericEdge.html#a5aceeb48929f54264807b36569019a8a">GEdgeKind</a> k, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* var)</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  {</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  Var2LabelMap::const_iterator iter = <a class="code" href="classSVF_1_1SVFStmt.html#a24c64109d27ef7549d1c7a07c391e007">var2LabelMap</a>.find(var);</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <a class="code" href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">u64_t</a> label = (iter != <a class="code" href="classSVF_1_1SVFStmt.html#a24c64109d27ef7549d1c7a07c391e007">var2LabelMap</a>.end()) ?</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  iter->second : <a class="code" href="classSVF_1_1SVFStmt.html#a9ea22adbfc307dddee42ffec07cc88ed">multiOpndLabelCounter</a>++;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  return (label << <a class="code" href="classSVF_1_1GenericEdge.html#af1c2fd4b5ef1d7b7605572bf2489c298">EdgeKindMaskBits</a>) | k;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  }</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> </div><div class="line"><a name="l00147"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a4513c6e66b46c36219ba6d7403f3eb00"> 147</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classSVF_1_1GenericEdge.html#aab8892b73370c32b48621cd1d0cce614">GEdgeFlag</a> <a class="code" href="classSVF_1_1SVFStmt.html#a4513c6e66b46c36219ba6d7403f3eb00">makeEdgeFlagWithCallInst</a>(<a class="code" href="classSVF_1_1GenericEdge.html#a5aceeb48929f54264807b36569019a8a">GEdgeKind</a> k, <span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* cs)</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  {</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  Inst2LabelMap::const_iterator iter = <a class="code" href="classSVF_1_1SVFStmt.html#abb83549118bcd7216a053d82f7180d1c">inst2LabelMap</a>.find(cs);</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <a class="code" href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">u64_t</a> label = (iter != <a class="code" href="classSVF_1_1SVFStmt.html#abb83549118bcd7216a053d82f7180d1c">inst2LabelMap</a>.end()) ?</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  iter->second : <a class="code" href="classSVF_1_1SVFStmt.html#a24227d7f1dd472f47bf94cb5db8505c4">callEdgeLabelCounter</a>++;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  return (label << <a class="code" href="classSVF_1_1GenericEdge.html#af1c2fd4b5ef1d7b7605572bf2489c298">EdgeKindMaskBits</a>) | k;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  }</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> </div><div class="line"><a name="l00157"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#ad61722f886afaaee722ac55a4eed4d18"> 157</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classSVF_1_1GenericEdge.html#aab8892b73370c32b48621cd1d0cce614">GEdgeFlag</a> <a class="code" href="classSVF_1_1SVFStmt.html#ad61722f886afaaee722ac55a4eed4d18">makeEdgeFlagWithStoreInst</a>(<a class="code" href="classSVF_1_1GenericEdge.html#a5aceeb48929f54264807b36569019a8a">GEdgeKind</a> k, <span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* store)</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  {</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  Inst2LabelMap::const_iterator iter = <a class="code" href="classSVF_1_1SVFStmt.html#abb83549118bcd7216a053d82f7180d1c">inst2LabelMap</a>.find(store);</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <a class="code" href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">u64_t</a> label = (iter != <a class="code" href="classSVF_1_1SVFStmt.html#abb83549118bcd7216a053d82f7180d1c">inst2LabelMap</a>.end()) ?</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  iter->second : <a class="code" href="classSVF_1_1SVFStmt.html#a53b7e0d8666e37c23dc2c7d0fc931f27">storeEdgeLabelCounter</a>++;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  return (label << <a class="code" href="classSVF_1_1GenericEdge.html#af1c2fd4b5ef1d7b7605572bf2489c298">EdgeKindMaskBits</a>) | k;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  }</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> </div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1SVFStmt.html#ad0b4dbe87e009518f22360c48b0d0c22">toString</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span> </div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> </div><div class="line"><a name="l00170"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a02c04239d33d2334f5835bff50994dba"> 170</a></span>  <span class="keyword">friend</span> <a class="code" href="namespaceSVF.html#a8bd74fdcb0e58d0249003df9c3fb8b31">OutStream</a>& <a class="code" href="classSVF_1_1SVFStmt.html#a02c04239d33d2334f5835bff50994dba">operator<< </a>(<a class="code" href="namespaceSVF.html#a8bd74fdcb0e58d0249003df9c3fb8b31">OutStream</a> &o, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> &edge)</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  {</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  o << edge.<a class="code" href="classSVF_1_1SVFStmt.html#ad0b4dbe87e009518f22360c48b0d0c22">toString</a>();</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="keywordflow">return</span> o;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  }</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> </div><div class="line"><a name="l00177"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4"> 177</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1GenericNode.html#a03c6da4a73c47f84f5c5b47252bc339a">GenericNode<SVFVar,SVFStmt>::GEdgeSetTy</a> <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmtSetTy</a>;</div><div class="line"><a name="l00178"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a229c78147511f2a581c761552179b6fa"> 178</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<EdgeID, SVFStmtSetTy></a> <a class="code" href="classSVF_1_1SVFStmt.html#a229c78147511f2a581c761552179b6fa">PAGEdgeToSetMapTy</a>;</div><div class="line"><a name="l00179"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a93fc6c4c991931c78c48500c2db50f66"> 179</a></span>  <span class="keyword">typedef</span> PAGEdgeToSetMapTy <a class="code" href="classSVF_1_1SVFStmt.html#a93fc6c4c991931c78c48500c2db50f66">KindToSVFStmtMapTy</a>;</div><div class="line"><a name="l00180"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a2bdfa37167b5496629e5cae62705d5f2"> 180</a></span>  <span class="keyword">typedef</span> SVFStmtSetTy <a class="code" href="classSVF_1_1SVFStmt.html#a2bdfa37167b5496629e5cae62705d5f2">PAGEdgeSetTy</a>;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> </div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00183"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a5a3db6b1335b4adc55b961a6f480f228"> 183</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const ICFGNode*, u32_t></a> <a class="code" href="classSVF_1_1SVFStmt.html#a5a3db6b1335b4adc55b961a6f480f228">Inst2LabelMap</a>;</div><div class="line"><a name="l00184"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#ad178ccbc7800527c3dc406ad5fa069bb"> 184</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const SVFVar*, u32_t></a> <a class="code" href="classSVF_1_1SVFStmt.html#ad178ccbc7800527c3dc406ad5fa069bb">Var2LabelMap</a>;</div><div class="line"><a name="l00185"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#abb83549118bcd7216a053d82f7180d1c"> 185</a></span>  <span class="keyword">static</span> Inst2LabelMap <a class="code" href="classSVF_1_1SVFStmt.html#abb83549118bcd7216a053d82f7180d1c">inst2LabelMap</a>; </div><div class="line"><a name="l00186"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a24c64109d27ef7549d1c7a07c391e007"> 186</a></span>  <span class="keyword">static</span> Var2LabelMap <a class="code" href="classSVF_1_1SVFStmt.html#a24c64109d27ef7549d1c7a07c391e007">var2LabelMap</a>; </div><div class="line"><a name="l00187"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a24227d7f1dd472f47bf94cb5db8505c4"> 187</a></span>  <span class="keyword">static</span> <a class="code" href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">u64_t</a> <a class="code" href="classSVF_1_1SVFStmt.html#a24227d7f1dd472f47bf94cb5db8505c4">callEdgeLabelCounter</a>; </div><div class="line"><a name="l00188"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a53b7e0d8666e37c23dc2c7d0fc931f27"> 188</a></span>  <span class="keyword">static</span> <a class="code" href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">u64_t</a> <a class="code" href="classSVF_1_1SVFStmt.html#a53b7e0d8666e37c23dc2c7d0fc931f27">storeEdgeLabelCounter</a>; </div><div class="line"><a name="l00189"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a9ea22adbfc307dddee42ffec07cc88ed"> 189</a></span>  <span class="keyword">static</span> <a class="code" href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">u64_t</a> <a class="code" href="classSVF_1_1SVFStmt.html#a9ea22adbfc307dddee42ffec07cc88ed">multiOpndLabelCounter</a>; </div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> };</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span> </div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span> <span class="comment">/*</span></div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span> <span class="comment"> Parent class of Addr, Copy, Store, Load, Call, Ret, NormalGep, VariantGep, ThreadFork, ThreadJoin</span></div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span> <span class="comment"> connecting RHS expression and LHS expression with an assignment (e.g., LHSExpr = RHSExpr)</span></div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> <span class="comment"> Only one operand on the right handside of an assignment</span></div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span> <span class="comment">*/</span></div><div class="line"><a name="l00197"></a><span class="lineno"><a class="line" href="classSVF_1_1AssignStmt.html"> 197</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1AssignStmt.html">AssignStmt</a> : <span class="keyword">public</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>{</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span> </div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <a class="code" href="classSVF_1_1AssignStmt.html">AssignStmt</a>(); </div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <a class="code" href="classSVF_1_1AssignStmt.html">AssignStmt</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1AssignStmt.html">AssignStmt</a> &); </div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="keywordtype">void</span> operator=(<span class="keyword">const</span> <a class="code" href="classSVF_1_1AssignStmt.html">AssignStmt</a> &); </div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* <a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>(); </div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* <a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>(); </div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">getSrcID</a>(); </div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">getDstID</a>(); </div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span> </div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00210"></a><span class="lineno"><a class="line" href="classSVF_1_1AssignStmt.html#aff4c35109790daed3c6170c985153620"> 210</a></span>  <a class="code" href="classSVF_1_1AssignStmt.html#aff4c35109790daed3c6170c985153620">AssignStmt</a>(<a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* s, <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* d, <a class="code" href="classSVF_1_1GenericEdge.html#aab8892b73370c32b48621cd1d0cce614">GEdgeFlag</a> k) : <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>(s,d,k)</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  {</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  }</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span> </div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span> </div><div class="line"><a name="l00217"></a><span class="lineno"><a class="line" href="classSVF_1_1AssignStmt.html#a4f94b6731f324e44fc4d4e06d7acdbf7"> 217</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1AssignStmt.html#a4f94b6731f324e44fc4d4e06d7acdbf7">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1AssignStmt.html">AssignStmt</a> *)</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  {</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  }</div><div class="line"><a name="l00221"></a><span class="lineno"><a class="line" href="classSVF_1_1AssignStmt.html#ad5e2d41b8cd548628b59227368388ed0"> 221</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1AssignStmt.html#ad5e2d41b8cd548628b59227368388ed0">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *edge)</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  {</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a0a9a0f650e864e89b7cbb3dc8c8aa197">SVFStmt::Addr</a> ||</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad3469cdfb64f05163b5310b731b221da">SVFStmt::Copy</a> ||</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9aa0f700b514c431ec5329aec49df56dcc">SVFStmt::Store</a> ||</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a62ac8480c43fcc657c631ec0003b15d5">SVFStmt::Load</a> ||</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a97ca16eba4c5f92e16388f0cdbcfcc00">SVFStmt::Call</a> ||</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a8d269a45adf13e69468f0357222ab2af">SVFStmt::Ret</a> ||</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a20d960c19118d1ed319e0dbea94405e8">SVFStmt::Gep</a> ||</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a375b956af2119d7abca8f1995f7701fd">SVFStmt::ThreadFork</a> ||</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a3c3f8883c2d3b50aef6331d5da97ffb0">SVFStmt::ThreadJoin</a>;</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  }</div><div class="line"><a name="l00233"></a><span class="lineno"><a class="line" href="classSVF_1_1AssignStmt.html#a8b2837153dcf9f7e2adc3b30b2dd0245"> 233</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1AssignStmt.html#a8b2837153dcf9f7e2adc3b30b2dd0245">classof</a>(<span class="keyword">const</span> GenericPAGEdgeTy *edge)</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  {</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a0a9a0f650e864e89b7cbb3dc8c8aa197">SVFStmt::Addr</a> ||</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad3469cdfb64f05163b5310b731b221da">SVFStmt::Copy</a> ||</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9aa0f700b514c431ec5329aec49df56dcc">SVFStmt::Store</a> ||</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a62ac8480c43fcc657c631ec0003b15d5">SVFStmt::Load</a> ||</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a97ca16eba4c5f92e16388f0cdbcfcc00">SVFStmt::Call</a> ||</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a8d269a45adf13e69468f0357222ab2af">SVFStmt::Ret</a> ||</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a20d960c19118d1ed319e0dbea94405e8">SVFStmt::Gep</a> ||</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a375b956af2119d7abca8f1995f7701fd">SVFStmt::ThreadFork</a> ||</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a3c3f8883c2d3b50aef6331d5da97ffb0">SVFStmt::ThreadJoin</a>;</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  }</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span> </div><div class="line"><a name="l00247"></a><span class="lineno"><a class="line" href="classSVF_1_1AssignStmt.html#ad03d28d16754c9049dd4d0ad3b6c1e28"> 247</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* <a class="code" href="classSVF_1_1AssignStmt.html#ad03d28d16754c9049dd4d0ad3b6c1e28">getRHSVar</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">SVFStmt::getSrcNode</a>();</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  } </div><div class="line"><a name="l00250"></a><span class="lineno"><a class="line" href="classSVF_1_1AssignStmt.html#a973a2b79da223275ed6a1831837b89c7"> 250</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* <a class="code" href="classSVF_1_1AssignStmt.html#a973a2b79da223275ed6a1831837b89c7">getLHSVar</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">SVFStmt::getDstNode</a>();</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  } </div><div class="line"><a name="l00253"></a><span class="lineno"><a class="line" href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d"> 253</a></span>  <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d">getRHSVarID</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">SVFStmt::getSrcID</a>();</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  } </div><div class="line"><a name="l00256"></a><span class="lineno"><a class="line" href="classSVF_1_1AssignStmt.html#a98f731be7be9bc8e7fd09f5c2204c840"> 256</a></span>  <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1AssignStmt.html#a98f731be7be9bc8e7fd09f5c2204c840">getLHSVarID</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">SVFStmt::getDstID</a>();</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  } </div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span> </div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1SVFStmt.html#ad0b4dbe87e009518f22360c48b0d0c22">toString</a>() <span class="keyword">const</span> = 0;</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span> };</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span> </div><div class="line"><a name="l00266"></a><span class="lineno"><a class="line" href="classSVF_1_1AddrStmt.html"> 266</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1AddrStmt.html">AddrStmt</a>: <span class="keyword">public</span> <a class="code" href="classSVF_1_1AssignStmt.html">AssignStmt</a></div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span> {</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  <a class="code" href="classSVF_1_1AddrStmt.html">AddrStmt</a>(); </div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  <a class="code" href="classSVF_1_1AddrStmt.html">AddrStmt</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1AddrStmt.html">AddrStmt</a> &); </div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  <span class="keywordtype">void</span> operator=(<span class="keyword">const</span> <a class="code" href="classSVF_1_1AddrStmt.html">AddrStmt</a> &); </div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span> </div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span> </div><div class="line"><a name="l00276"></a><span class="lineno"><a class="line" href="classSVF_1_1AddrStmt.html#a32e129c9f7aa16be8c5c8569989f691f"> 276</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1AddrStmt.html#a32e129c9f7aa16be8c5c8569989f691f">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1AddrStmt.html">AddrStmt</a> *)</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  {</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  }</div><div class="line"><a name="l00280"></a><span class="lineno"><a class="line" href="classSVF_1_1AddrStmt.html#aeec83dc4e79ee62c92c75aa778a475ad"> 280</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1AddrStmt.html#aeec83dc4e79ee62c92c75aa778a475ad">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *edge)</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  {</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a0a9a0f650e864e89b7cbb3dc8c8aa197">SVFStmt::Addr</a>;</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  }</div><div class="line"><a name="l00284"></a><span class="lineno"><a class="line" href="classSVF_1_1AddrStmt.html#a6876ffc2c97c5ba64155891b55a7884c"> 284</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1AddrStmt.html#a6876ffc2c97c5ba64155891b55a7884c">classof</a>(<span class="keyword">const</span> GenericPAGEdgeTy *edge)</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  {</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a0a9a0f650e864e89b7cbb3dc8c8aa197">SVFStmt::Addr</a>;</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  }</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span> </div><div class="line"><a name="l00291"></a><span class="lineno"><a class="line" href="classSVF_1_1AddrStmt.html#a42caa75acb42ce8e290c1278622f139c"> 291</a></span>  <a class="code" href="classSVF_1_1AddrStmt.html#a42caa75acb42ce8e290c1278622f139c">AddrStmt</a>(<a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* s, <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* d) : <a class="code" href="classSVF_1_1AssignStmt.html">AssignStmt</a>(s,d,<a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>::<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a0a9a0f650e864e89b7cbb3dc8c8aa197">Addr</a>)</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  {</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  }</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span> </div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1SVFStmt.html#ad0b4dbe87e009518f22360c48b0d0c22">toString</a>() <span class="keyword">const override</span>;</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span> };</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span> </div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span> </div><div class="line"><a name="l00302"></a><span class="lineno"><a class="line" href="classSVF_1_1CopyStmt.html"> 302</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1CopyStmt.html">CopyStmt</a>: <span class="keyword">public</span> <a class="code" href="classSVF_1_1AssignStmt.html">AssignStmt</a></div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span> {</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  <a class="code" href="classSVF_1_1CopyStmt.html">CopyStmt</a>(); </div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  <a class="code" href="classSVF_1_1CopyStmt.html">CopyStmt</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CopyStmt.html">CopyStmt</a> &); </div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  <span class="keywordtype">void</span> operator=(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CopyStmt.html">CopyStmt</a> &); </div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span> </div><div class="line"><a name="l00311"></a><span class="lineno"><a class="line" href="classSVF_1_1CopyStmt.html#a253c81c922bef6e2d520262c2f7793c4"> 311</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CopyStmt.html#a253c81c922bef6e2d520262c2f7793c4">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CopyStmt.html">CopyStmt</a> *)</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  {</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  }</div><div class="line"><a name="l00315"></a><span class="lineno"><a class="line" href="classSVF_1_1CopyStmt.html#a5e883bb0bc30cf8b7d325b66f7a42848"> 315</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CopyStmt.html#a5e883bb0bc30cf8b7d325b66f7a42848">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *edge)</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  {</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad3469cdfb64f05163b5310b731b221da">SVFStmt::Copy</a>;</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  }</div><div class="line"><a name="l00319"></a><span class="lineno"><a class="line" href="classSVF_1_1CopyStmt.html#a12e960569a9f4beae99195a0fe2d3b68"> 319</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CopyStmt.html#a12e960569a9f4beae99195a0fe2d3b68">classof</a>(<span class="keyword">const</span> GenericPAGEdgeTy *edge)</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  {</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad3469cdfb64f05163b5310b731b221da">SVFStmt::Copy</a>;</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  }</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span> </div><div class="line"><a name="l00326"></a><span class="lineno"><a class="line" href="classSVF_1_1CopyStmt.html#a69b179ef052408034786d32a52c52389"> 326</a></span>  <a class="code" href="classSVF_1_1CopyStmt.html#a69b179ef052408034786d32a52c52389">CopyStmt</a>(<a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* s, <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* d) : <a class="code" href="classSVF_1_1AssignStmt.html">AssignStmt</a>(s,d,<a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>::<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad3469cdfb64f05163b5310b731b221da">Copy</a>)</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  {</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  }</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span> </div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1SVFStmt.html#ad0b4dbe87e009518f22360c48b0d0c22">toString</a>() <span class="keyword">const override</span>;</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span> };</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span> </div><div class="line"><a name="l00336"></a><span class="lineno"><a class="line" href="classSVF_1_1StoreStmt.html"> 336</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1StoreStmt.html">StoreStmt</a>: <span class="keyword">public</span> <a class="code" href="classSVF_1_1AssignStmt.html">AssignStmt</a></div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span> {</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  <a class="code" href="classSVF_1_1StoreStmt.html">StoreStmt</a>(); </div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  <a class="code" href="classSVF_1_1StoreStmt.html">StoreStmt</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1StoreStmt.html">StoreStmt</a> &); </div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  <span class="keywordtype">void</span> operator=(<span class="keyword">const</span> <a class="code" href="classSVF_1_1StoreStmt.html">StoreStmt</a> &); </div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span> </div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span> </div><div class="line"><a name="l00346"></a><span class="lineno"><a class="line" href="classSVF_1_1StoreStmt.html#ae3c219e8af92e222f55c930009db6e67"> 346</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1StoreStmt.html#ae3c219e8af92e222f55c930009db6e67">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1StoreStmt.html">StoreStmt</a> *)</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  {</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  }</div><div class="line"><a name="l00350"></a><span class="lineno"><a class="line" href="classSVF_1_1StoreStmt.html#a31f69e402887eff60e2055799ed561b9"> 350</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1StoreStmt.html#a31f69e402887eff60e2055799ed561b9">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *edge)</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  {</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9aa0f700b514c431ec5329aec49df56dcc">SVFStmt::Store</a>;</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  }</div><div class="line"><a name="l00354"></a><span class="lineno"><a class="line" href="classSVF_1_1StoreStmt.html#ab71bf959fce0e702556dd753636298b2"> 354</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1StoreStmt.html#ab71bf959fce0e702556dd753636298b2">classof</a>(<span class="keyword">const</span> GenericPAGEdgeTy *edge)</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  {</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9aa0f700b514c431ec5329aec49df56dcc">SVFStmt::Store</a>;</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  }</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span> </div><div class="line"><a name="l00361"></a><span class="lineno"><a class="line" href="classSVF_1_1StoreStmt.html#a39ee0d8cc951aff0d6418a3d743fb3ae"> 361</a></span>  <a class="code" href="classSVF_1_1StoreStmt.html#a39ee0d8cc951aff0d6418a3d743fb3ae">StoreStmt</a>(<a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* s, <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* d, <span class="keyword">const</span> <a class="code" href="classSVF_1_1IntraICFGNode.html">IntraICFGNode</a>* st) :</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  <a class="code" href="classSVF_1_1AssignStmt.html">AssignStmt</a>(s, d, <a class="code" href="classSVF_1_1SVFStmt.html#ad61722f886afaaee722ac55a4eed4d18">makeEdgeFlagWithStoreInst</a>(<a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>::<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9aa0f700b514c431ec5329aec49df56dcc">Store</a>, st))</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  {</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  }</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span> </div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1SVFStmt.html#ad0b4dbe87e009518f22360c48b0d0c22">toString</a>() <span class="keyword">const override</span>;</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span> };</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span> </div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span> </div><div class="line"><a name="l00373"></a><span class="lineno"><a class="line" href="classSVF_1_1LoadStmt.html"> 373</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a>: <span class="keyword">public</span> <a class="code" href="classSVF_1_1AssignStmt.html">AssignStmt</a></div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span> {</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  <a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a>(); </div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  <a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a> &); </div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  <span class="keywordtype">void</span> operator=(<span class="keyword">const</span> <a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a> &); </div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span> </div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span> </div><div class="line"><a name="l00383"></a><span class="lineno"><a class="line" href="classSVF_1_1LoadStmt.html#a03d6f1ee2f52b34d905b204eb53d6560"> 383</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LoadStmt.html#a03d6f1ee2f52b34d905b204eb53d6560">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a> *)</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  {</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  }</div><div class="line"><a name="l00387"></a><span class="lineno"><a class="line" href="classSVF_1_1LoadStmt.html#ac252b1e9b7c01108d1aff602fbe1ef40"> 387</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LoadStmt.html#ac252b1e9b7c01108d1aff602fbe1ef40">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *edge)</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  {</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a62ac8480c43fcc657c631ec0003b15d5">SVFStmt::Load</a>;</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  }</div><div class="line"><a name="l00391"></a><span class="lineno"><a class="line" href="classSVF_1_1LoadStmt.html#ab30f370a8a2a3e63765c1e4843f07826"> 391</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LoadStmt.html#ab30f370a8a2a3e63765c1e4843f07826">classof</a>(<span class="keyword">const</span> GenericPAGEdgeTy *edge)</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  {</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a62ac8480c43fcc657c631ec0003b15d5">SVFStmt::Load</a>;</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  }</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span> </div><div class="line"><a name="l00398"></a><span class="lineno"><a class="line" href="classSVF_1_1LoadStmt.html#a92c5817abfaa1f6fbc9ee911f458dfb2"> 398</a></span>  <a class="code" href="classSVF_1_1LoadStmt.html#a92c5817abfaa1f6fbc9ee911f458dfb2">LoadStmt</a>(<a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* s, <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* d) : <a class="code" href="classSVF_1_1AssignStmt.html">AssignStmt</a>(s,d,<a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>::<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a62ac8480c43fcc657c631ec0003b15d5">Load</a>)</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  {</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  }</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span> </div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1SVFStmt.html#ad0b4dbe87e009518f22360c48b0d0c22">toString</a>() <span class="keyword">const override</span>;</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span> };</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span> </div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span> </div><div class="line"><a name="l00409"></a><span class="lineno"><a class="line" href="classSVF_1_1GepStmt.html"> 409</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1GepStmt.html">GepStmt</a>: <span class="keyword">public</span> <a class="code" href="classSVF_1_1AssignStmt.html">AssignStmt</a></div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span> {</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  <a class="code" href="classSVF_1_1GepStmt.html">GepStmt</a>(); </div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  <a class="code" href="classSVF_1_1GepStmt.html">GepStmt</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1GepStmt.html">GepStmt</a> &); </div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  <span class="keywordtype">void</span> operator=(<span class="keyword">const</span> <a class="code" href="classSVF_1_1GepStmt.html">GepStmt</a> &); </div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span> </div><div class="line"><a name="l00416"></a><span class="lineno"><a class="line" href="classSVF_1_1GepStmt.html#a543a3f4801b22719f7b9677246bf2ac7"> 416</a></span>  <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a> <a class="code" href="classSVF_1_1GepStmt.html#a543a3f4801b22719f7b9677246bf2ac7">ls</a>; </div><div class="line"><a name="l00417"></a><span class="lineno"><a class="line" href="classSVF_1_1GepStmt.html#af8eefbd002ec36f36612b8e9ccdbc757"> 417</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1GepStmt.html#af8eefbd002ec36f36612b8e9ccdbc757">variantField</a>; </div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span> </div><div class="line"><a name="l00421"></a><span class="lineno"><a class="line" href="classSVF_1_1GepStmt.html#a441cd8487b320ceff9d62884b4f28176"> 421</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1GepStmt.html#a441cd8487b320ceff9d62884b4f28176">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1GepStmt.html">GepStmt</a> *)</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  {</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  }</div><div class="line"><a name="l00425"></a><span class="lineno"><a class="line" href="classSVF_1_1GepStmt.html#a92016e7d6061e4a157c9cd39ad94cc20"> 425</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1GepStmt.html#a92016e7d6061e4a157c9cd39ad94cc20">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *edge)</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  {</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a20d960c19118d1ed319e0dbea94405e8">SVFStmt::Gep</a>;</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  }</div><div class="line"><a name="l00429"></a><span class="lineno"><a class="line" href="classSVF_1_1GepStmt.html#ac47064e21e2afdf7bd85c6acba44367f"> 429</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1GepStmt.html#ac47064e21e2afdf7bd85c6acba44367f">classof</a>(<span class="keyword">const</span> GenericPAGEdgeTy *edge)</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  {</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a20d960c19118d1ed319e0dbea94405e8">SVFStmt::Gep</a>;</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  }</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span> </div><div class="line"><a name="l00435"></a><span class="lineno"><a class="line" href="classSVF_1_1GepStmt.html#abec33091e0dac0cdd5b95b6d7b0db3d8"> 435</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>& <a class="code" href="classSVF_1_1GepStmt.html#abec33091e0dac0cdd5b95b6d7b0db3d8">getLocationSet</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  <span class="keywordflow">return</span> ls;</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  }</div><div class="line"><a name="l00439"></a><span class="lineno"><a class="line" href="classSVF_1_1GepStmt.html#a37811e62495493454405cb33e4a2b904"> 439</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html#a9bb7e08f7cfb2859d25b0e68e21fec89">LocationSet::OffsetValueVec</a>& <a class="code" href="classSVF_1_1GepStmt.html#a37811e62495493454405cb33e4a2b904">getOffsetValueVec</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  <span class="keywordflow">return</span> getLocationSet().getOffsetValueVec();</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  }</div><div class="line"><a name="l00444"></a><span class="lineno"><a class="line" href="classSVF_1_1GepStmt.html#ab6f37c073e4755c4b8bb3ed6365687f4"> 444</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1GepStmt.html#ab6f37c073e4755c4b8bb3ed6365687f4">isConstantOffset</a>()<span class="keyword"> const</span>{</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  <span class="keywordflow">return</span> getLocationSet().isConstantOffset();</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  }</div><div class="line"><a name="l00448"></a><span class="lineno"><a class="line" href="classSVF_1_1GepStmt.html#a33b3b9ef0cf7e2ea6400aef74a399adf"> 448</a></span>  <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#abe09d99af006554a5c00803e9a89f9a6">s64_t</a> <a class="code" href="classSVF_1_1GepStmt.html#a33b3b9ef0cf7e2ea6400aef74a399adf">accumulateConstantOffset</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  <span class="keywordflow">return</span> getLocationSet().accumulateConstantOffset();</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  }</div><div class="line"><a name="l00453"></a><span class="lineno"><a class="line" href="classSVF_1_1GepStmt.html#adf6912f8ddae4f765b685a4f9d3be602"> 453</a></span>  <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#abe09d99af006554a5c00803e9a89f9a6">s64_t</a> <a class="code" href="classSVF_1_1GepStmt.html#adf6912f8ddae4f765b685a4f9d3be602">getConstantFieldIdx</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(isVariantFieldGep()==<span class="keyword">false</span> && <span class="stringliteral">"Can't retrieve the LocationSet if using a variable field index (pointer arithmetic) for struct field access "</span>);</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  <span class="keywordflow">return</span> getLocationSet().accumulateConstantFieldIdx();</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  }</div><div class="line"><a name="l00459"></a><span class="lineno"><a class="line" href="classSVF_1_1GepStmt.html#a0ddf180a0f7ba64fc8655687910e3788"> 459</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1GepStmt.html#a0ddf180a0f7ba64fc8655687910e3788">isVariantFieldGep</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  <span class="keywordflow">return</span> variantField;</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  } </div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span> </div><div class="line"><a name="l00465"></a><span class="lineno"><a class="line" href="classSVF_1_1GepStmt.html#ae4509ee7b57121da3c67de00e8bdf0b3"> 465</a></span>  <a class="code" href="classSVF_1_1GepStmt.html#ae4509ee7b57121da3c67de00e8bdf0b3">GepStmt</a>(<a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* s, <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* d, <span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>& l, <span class="keywordtype">bool</span> varfld=<span class="keyword">false</span>) : <a class="code" href="classSVF_1_1AssignStmt.html">AssignStmt</a>(s,d,<a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>::<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a20d960c19118d1ed319e0dbea94405e8">Gep</a>), ls(l), variantField(varfld)</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  {</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  }</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span> </div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1SVFStmt.html#ad0b4dbe87e009518f22360c48b0d0c22">toString</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span> </div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span> };</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span> </div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span> </div><div class="line"><a name="l00477"></a><span class="lineno"><a class="line" href="classSVF_1_1CallPE.html"> 477</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1CallPE.html">CallPE</a>: <span class="keyword">public</span> <a class="code" href="classSVF_1_1AssignStmt.html">AssignStmt</a></div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span> {</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  <a class="code" href="classSVF_1_1CallPE.html">CallPE</a>(); </div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  <a class="code" href="classSVF_1_1CallPE.html">CallPE</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallPE.html">CallPE</a> &); </div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  <span class="keywordtype">void</span> operator=(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallPE.html">CallPE</a> &); </div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span> </div><div class="line"><a name="l00484"></a><span class="lineno"><a class="line" href="classSVF_1_1CallPE.html#ace0704c65aa3637c50ff880f68808bba"> 484</a></span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* <a class="code" href="classSVF_1_1CallPE.html#ace0704c65aa3637c50ff880f68808bba">call</a>; </div><div class="line"><a name="l00485"></a><span class="lineno"><a class="line" href="classSVF_1_1CallPE.html#a88e420e259b8d7d34c9850ddde53d372"> 485</a></span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1FunEntryICFGNode.html">FunEntryICFGNode</a>* <a class="code" href="classSVF_1_1CallPE.html#a88e420e259b8d7d34c9850ddde53d372">entry</a>; </div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span> </div><div class="line"><a name="l00489"></a><span class="lineno"><a class="line" href="classSVF_1_1CallPE.html#a6df0149f79122c5a7d517f75d0235e73"> 489</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CallPE.html#a6df0149f79122c5a7d517f75d0235e73">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallPE.html">CallPE</a> *)</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  {</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  }</div><div class="line"><a name="l00493"></a><span class="lineno"><a class="line" href="classSVF_1_1CallPE.html#a188c51f3e378c451d34e90c96cca0cf5"> 493</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CallPE.html#a188c51f3e378c451d34e90c96cca0cf5">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *edge)</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  {</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a97ca16eba4c5f92e16388f0cdbcfcc00">SVFStmt::Call</a></div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  || edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a375b956af2119d7abca8f1995f7701fd">SVFStmt::ThreadFork</a>;</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>  }</div><div class="line"><a name="l00498"></a><span class="lineno"><a class="line" href="classSVF_1_1CallPE.html#a0d89c20d1d3ccee5f3e45a32085117aa"> 498</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CallPE.html#a0d89c20d1d3ccee5f3e45a32085117aa">classof</a>(<span class="keyword">const</span> GenericPAGEdgeTy *edge)</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  {</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a97ca16eba4c5f92e16388f0cdbcfcc00">SVFStmt::Call</a></div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  || edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a375b956af2119d7abca8f1995f7701fd">SVFStmt::ThreadFork</a>;</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>  }</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span> </div><div class="line"><a name="l00506"></a><span class="lineno"><a class="line" href="classSVF_1_1CallPE.html#a6b907624482ae697680c747e9b41fdab"> 506</a></span>  <a class="code" href="classSVF_1_1CallPE.html#a6b907624482ae697680c747e9b41fdab">CallPE</a>(<a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* s, <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* d, <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* i, <span class="keyword">const</span> <a class="code" href="classSVF_1_1FunEntryICFGNode.html">FunEntryICFGNode</a>* e, <a class="code" href="classSVF_1_1GenericEdge.html#a5aceeb48929f54264807b36569019a8a">GEdgeKind</a> k = <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a97ca16eba4c5f92e16388f0cdbcfcc00">SVFStmt::Call</a>) :</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  <a class="code" href="classSVF_1_1AssignStmt.html">AssignStmt</a>(s,d,<a class="code" href="classSVF_1_1SVFStmt.html#a4513c6e66b46c36219ba6d7403f3eb00">makeEdgeFlagWithCallInst</a>(k,i)), call(i), entry(e)</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  {</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  }</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span> </div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span> </div><div class="line"><a name="l00513"></a><span class="lineno"><a class="line" href="classSVF_1_1CallPE.html#aa50cca8bd91ffb135a7998b58ad7966f"> 513</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* <a class="code" href="classSVF_1_1CallPE.html#aa50cca8bd91ffb135a7998b58ad7966f">getCallInst</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  <span class="keywordflow">return</span> call;</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  }</div><div class="line"><a name="l00517"></a><span class="lineno"><a class="line" href="classSVF_1_1CallPE.html#ab548c22dfbfeeaeb8ffe83417b396c09"> 517</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* <a class="code" href="classSVF_1_1CallPE.html#ab548c22dfbfeeaeb8ffe83417b396c09">getCallSite</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  <span class="keywordflow">return</span> call;</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>  }</div><div class="line"><a name="l00521"></a><span class="lineno"><a class="line" href="classSVF_1_1CallPE.html#a9c9821c4e7dd031e3f82f2b29427e53e"> 521</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1FunEntryICFGNode.html">FunEntryICFGNode</a>* <a class="code" href="classSVF_1_1CallPE.html#a9c9821c4e7dd031e3f82f2b29427e53e">getFunEntryICFGNode</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  <span class="keywordflow">return</span> <a class="code" href="cuddInt_8c.html#a936a27e51e66afb57c2b3a12d78a238e">entry</a>;</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>  }</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span> </div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1SVFStmt.html#ad0b4dbe87e009518f22360c48b0d0c22">toString</a>() <span class="keyword">const override</span>;</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span> };</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span> </div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span> </div><div class="line"><a name="l00534"></a><span class="lineno"><a class="line" href="classSVF_1_1RetPE.html"> 534</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1RetPE.html">RetPE</a>: <span class="keyword">public</span> <a class="code" href="classSVF_1_1AssignStmt.html">AssignStmt</a></div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span> {</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>  <a class="code" href="classSVF_1_1RetPE.html">RetPE</a>(); </div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  <a class="code" href="classSVF_1_1RetPE.html">RetPE</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1RetPE.html">RetPE</a> &); </div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>  <span class="keywordtype">void</span> operator=(<span class="keyword">const</span> <a class="code" href="classSVF_1_1RetPE.html">RetPE</a> &); </div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span> </div><div class="line"><a name="l00541"></a><span class="lineno"><a class="line" href="classSVF_1_1RetPE.html#aa2d42edfce9d5a8c025c0bb529aee0f2"> 541</a></span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* <a class="code" href="classSVF_1_1RetPE.html#aa2d42edfce9d5a8c025c0bb529aee0f2">call</a>; </div><div class="line"><a name="l00542"></a><span class="lineno"><a class="line" href="classSVF_1_1RetPE.html#a6f6ccda153150b6acdd81550e45f640f"> 542</a></span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1FunExitICFGNode.html">FunExitICFGNode</a>* <a class="code" href="classSVF_1_1RetPE.html#a6f6ccda153150b6acdd81550e45f640f">exit</a>; </div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span> </div><div class="line"><a name="l00546"></a><span class="lineno"><a class="line" href="classSVF_1_1RetPE.html#a43c6965616d67e77087b486265139d21"> 546</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1RetPE.html#a43c6965616d67e77087b486265139d21">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1RetPE.html">RetPE</a> *)</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>  {</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>  }</div><div class="line"><a name="l00550"></a><span class="lineno"><a class="line" href="classSVF_1_1RetPE.html#a9cd78a723ed55ed6f334a329576a7471"> 550</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1RetPE.html#a9cd78a723ed55ed6f334a329576a7471">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *edge)</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>  {</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a8d269a45adf13e69468f0357222ab2af">SVFStmt::Ret</a></div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>  || edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a3c3f8883c2d3b50aef6331d5da97ffb0">SVFStmt::ThreadJoin</a>;</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>  }</div><div class="line"><a name="l00555"></a><span class="lineno"><a class="line" href="classSVF_1_1RetPE.html#a2f0121f26e79fe3766cba93b42dc1119"> 555</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1RetPE.html#a2f0121f26e79fe3766cba93b42dc1119">classof</a>(<span class="keyword">const</span> GenericPAGEdgeTy *edge)</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>  {</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a8d269a45adf13e69468f0357222ab2af">SVFStmt::Ret</a></div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>  || edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a3c3f8883c2d3b50aef6331d5da97ffb0">SVFStmt::ThreadJoin</a>;</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>  }</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span> </div><div class="line"><a name="l00563"></a><span class="lineno"><a class="line" href="classSVF_1_1RetPE.html#a60cb8a19e352547b22f197f4ca8e19d8"> 563</a></span>  <a class="code" href="classSVF_1_1RetPE.html#a60cb8a19e352547b22f197f4ca8e19d8">RetPE</a>(<a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* s, <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* d, <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* i, <span class="keyword">const</span> <a class="code" href="classSVF_1_1FunExitICFGNode.html">FunExitICFGNode</a>* e, <a class="code" href="classSVF_1_1GenericEdge.html#a5aceeb48929f54264807b36569019a8a">GEdgeKind</a> k = <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a8d269a45adf13e69468f0357222ab2af">SVFStmt::Ret</a>) :</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>  <a class="code" href="classSVF_1_1AssignStmt.html">AssignStmt</a>(s,d,<a class="code" href="classSVF_1_1SVFStmt.html#a4513c6e66b46c36219ba6d7403f3eb00">makeEdgeFlagWithCallInst</a>(k,i)), call(i), exit(e)</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  {</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>  }</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span> </div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span> </div><div class="line"><a name="l00570"></a><span class="lineno"><a class="line" href="classSVF_1_1RetPE.html#a9bbf558ffc8e3c1136e20d18d4c95f42"> 570</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* <a class="code" href="classSVF_1_1RetPE.html#a9bbf558ffc8e3c1136e20d18d4c95f42">getCallInst</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>  <span class="keywordflow">return</span> call;</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>  }</div><div class="line"><a name="l00574"></a><span class="lineno"><a class="line" href="classSVF_1_1RetPE.html#ab03f10c0375846a733f3257736a84f9d"> 574</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* <a class="code" href="classSVF_1_1RetPE.html#ab03f10c0375846a733f3257736a84f9d">getCallSite</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>  <span class="keywordflow">return</span> call;</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>  }</div><div class="line"><a name="l00578"></a><span class="lineno"><a class="line" href="classSVF_1_1RetPE.html#a274adbd91750d8d6de8ba997285c1c49"> 578</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1FunExitICFGNode.html">FunExitICFGNode</a>* <a class="code" href="classSVF_1_1RetPE.html#a274adbd91750d8d6de8ba997285c1c49">getFunExitICFGNode</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>  <span class="keywordflow">return</span> <a class="code" href="util_8h.html#a43b6ea6be735bb828bc062c70cadeff8">exit</a>;</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>  }</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span> </div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1SVFStmt.html#ad0b4dbe87e009518f22360c48b0d0c22">toString</a>() <span class="keyword">const override</span>;</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span> };</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span> </div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span> <span class="comment">/*</span></div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span> <span class="comment">* Program statements with multiple operands including BinaryOPStmt, CmpStmt and PhiStmt</span></div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span> <span class="comment">*/</span></div><div class="line"><a name="l00590"></a><span class="lineno"><a class="line" href="classSVF_1_1MultiOpndStmt.html"> 590</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1MultiOpndStmt.html">MultiOpndStmt</a> : <span class="keyword">public</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>{</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00592"></a><span class="lineno"><a class="line" href="classSVF_1_1MultiOpndStmt.html#acf8c7cfbf1c8baab672040635bb9a007"> 592</a></span>  <span class="keyword">typedef</span> std::vector<SVFVar*> <a class="code" href="classSVF_1_1MultiOpndStmt.html#acf8c7cfbf1c8baab672040635bb9a007">OPVars</a>;</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>  <a class="code" href="classSVF_1_1MultiOpndStmt.html">MultiOpndStmt</a>(); </div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>  <a class="code" href="classSVF_1_1MultiOpndStmt.html">MultiOpndStmt</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MultiOpndStmt.html">MultiOpndStmt</a> &); </div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>  <span class="keywordtype">void</span> operator=(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MultiOpndStmt.html">MultiOpndStmt</a> &); </div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>  <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* <a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>(); </div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>  <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* <a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>(); </div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">getSrcID</a>(); </div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">getDstID</a>(); </div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span> </div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00603"></a><span class="lineno"><a class="line" href="classSVF_1_1MultiOpndStmt.html#a172025849492f4de8f87564ef08f5880"> 603</a></span>  OPVars <a class="code" href="classSVF_1_1MultiOpndStmt.html#a172025849492f4de8f87564ef08f5880">opVars</a>;</div><div class="line"><a name="l00605"></a><span class="lineno"><a class="line" href="classSVF_1_1MultiOpndStmt.html#aad0c81aeb48e5d94dd8c60d87b41714c"> 605</a></span>  <a class="code" href="classSVF_1_1MultiOpndStmt.html#aad0c81aeb48e5d94dd8c60d87b41714c">MultiOpndStmt</a>(<a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* r, <span class="keyword">const</span> OPVars& opnds, <a class="code" href="classSVF_1_1GenericEdge.html#aab8892b73370c32b48621cd1d0cce614">GEdgeFlag</a> k): <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>(opnds.at(0), r, k), opVars(opnds)</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>  {</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>  }</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span> </div><div class="line"><a name="l00611"></a><span class="lineno"><a class="line" href="classSVF_1_1MultiOpndStmt.html#aa0d9a26d3ad17432505b1f5bb36368d9"> 611</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MultiOpndStmt.html#aa0d9a26d3ad17432505b1f5bb36368d9">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MultiOpndStmt.html">MultiOpndStmt</a> *)</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>  {</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>  }</div><div class="line"><a name="l00615"></a><span class="lineno"><a class="line" href="classSVF_1_1MultiOpndStmt.html#a5de8ff8363cb3f0b1427b69aa1058470"> 615</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MultiOpndStmt.html#a5de8ff8363cb3f0b1427b69aa1058470">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *node)</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>  {</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>  <span class="keywordflow">return</span> node-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a6b3cd98eeb47c8475e7ee64480dcdee9">Phi</a> ||</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>  node-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad9397ec243a61992dc2b5681bea587fa">Select</a> ||</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>  node-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad58f5e59c55e1ffd23b83d16224fed13">BinaryOp</a> ||</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>  node-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a610d6662d1814cffbf23db29e7e620c0">Cmp</a>;</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>  }</div><div class="line"><a name="l00622"></a><span class="lineno"><a class="line" href="classSVF_1_1MultiOpndStmt.html#ad20128715a7aaf173d60fe8f14575678"> 622</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MultiOpndStmt.html#ad20128715a7aaf173d60fe8f14575678">classof</a>(<span class="keyword">const</span> GenericPAGEdgeTy *node)</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>  {</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>  <span class="keywordflow">return</span> node-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a6b3cd98eeb47c8475e7ee64480dcdee9">Phi</a> ||</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>  node-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad9397ec243a61992dc2b5681bea587fa">Select</a> ||</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>  node-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad58f5e59c55e1ffd23b83d16224fed13">BinaryOp</a> ||</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>  node-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a610d6662d1814cffbf23db29e7e620c0">Cmp</a>;</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>  }</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span> </div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* getOpVar(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> pos)<span class="keyword"> const</span></div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>  <span class="keywordflow">return</span> opVars.at(pos);</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>  }</div><div class="line"><a name="l00638"></a><span class="lineno"><a class="line" href="classSVF_1_1MultiOpndStmt.html#a00a14ad8f49912b876fd9d729fea4601"> 638</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* <a class="code" href="classSVF_1_1MultiOpndStmt.html#a00a14ad8f49912b876fd9d729fea4601">getRes</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">SVFStmt::getDstNode</a>();</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>  }</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span> </div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> getOpVarID(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> pos) <span class="keyword">const</span>;</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> getResID() <span class="keyword">const</span>;</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span> </div><div class="line"><a name="l00646"></a><span class="lineno"><a class="line" href="classSVF_1_1MultiOpndStmt.html#af300571886b7aa2d84b0a70851c99bc3"> 646</a></span>  <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1MultiOpndStmt.html#af300571886b7aa2d84b0a70851c99bc3">getOpVarNum</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>  <span class="keywordflow">return</span> opVars.size();</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>  }</div><div class="line"><a name="l00650"></a><span class="lineno"><a class="line" href="classSVF_1_1MultiOpndStmt.html#a0441f2646fed28830439c41a0704ed4b"> 650</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> OPVars& <a class="code" href="classSVF_1_1MultiOpndStmt.html#a0441f2646fed28830439c41a0704ed4b">getOpndVars</a>()<span class="keyword"> const</span>{</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>  <span class="keywordflow">return</span> opVars;</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>  }</div><div class="line"><a name="l00653"></a><span class="lineno"><a class="line" href="classSVF_1_1MultiOpndStmt.html#abebed8985cb4d4d1361c42e5454c90b9"> 653</a></span>  <span class="keyword">inline</span> OPVars::const_iterator <a class="code" href="classSVF_1_1MultiOpndStmt.html#abebed8985cb4d4d1361c42e5454c90b9">opVarBegin</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>  <span class="keywordflow">return</span> opVars.begin();</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>  }</div><div class="line"><a name="l00657"></a><span class="lineno"><a class="line" href="classSVF_1_1MultiOpndStmt.html#ad53097d07487d564e7d13f9d7d9ab10c"> 657</a></span>  <span class="keyword">inline</span> OPVars::const_iterator <a class="code" href="classSVF_1_1MultiOpndStmt.html#ad53097d07487d564e7d13f9d7d9ab10c">opVerEnd</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>  <span class="keywordflow">return</span> opVars.end();</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>  }</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span> };</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span> </div><div class="line"><a name="l00668"></a><span class="lineno"><a class="line" href="classSVF_1_1PhiStmt.html"> 668</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1PhiStmt.html">PhiStmt</a>: <span class="keyword">public</span> <a class="code" href="classSVF_1_1MultiOpndStmt.html">MultiOpndStmt</a></div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span> {</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00671"></a><span class="lineno"><a class="line" href="classSVF_1_1PhiStmt.html#ac505a4fe33e82f555663872e81220ba4"> 671</a></span>  <span class="keyword">typedef</span> std::vector<const ICFGNode* > <a class="code" href="classSVF_1_1PhiStmt.html#ac505a4fe33e82f555663872e81220ba4">OpICFGNodeVec</a>;</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span> </div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>  <a class="code" href="classSVF_1_1PhiStmt.html">PhiStmt</a>(); </div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>  <a class="code" href="classSVF_1_1PhiStmt.html">PhiStmt</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PhiStmt.html">PhiStmt</a> &); </div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>  <span class="keywordtype">void</span> operator=(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PhiStmt.html">PhiStmt</a> &); </div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span> </div><div class="line"><a name="l00678"></a><span class="lineno"><a class="line" href="classSVF_1_1PhiStmt.html#a4c75a8f8430621aaec62a5189db136b5"> 678</a></span>  OpICFGNodeVec <a class="code" href="classSVF_1_1PhiStmt.html#a4c75a8f8430621aaec62a5189db136b5">opICFGNodes</a>;</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span> </div><div class="line"><a name="l00682"></a><span class="lineno"><a class="line" href="classSVF_1_1PhiStmt.html#abb620d35e77989c2f7f9ed480e5fa1e9"> 682</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PhiStmt.html#abb620d35e77989c2f7f9ed480e5fa1e9">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PhiStmt.html">PhiStmt</a> *)</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>  {</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>  }</div><div class="line"><a name="l00686"></a><span class="lineno"><a class="line" href="classSVF_1_1PhiStmt.html#ac214292370d79324f6da8624fe2c7139"> 686</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PhiStmt.html#ac214292370d79324f6da8624fe2c7139">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *edge)</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>  {</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a6b3cd98eeb47c8475e7ee64480dcdee9">SVFStmt::Phi</a>;</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>  }</div><div class="line"><a name="l00690"></a><span class="lineno"><a class="line" href="classSVF_1_1PhiStmt.html#ae547394a731d29b44565d3e56a326354"> 690</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PhiStmt.html#ae547394a731d29b44565d3e56a326354">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MultiOpndStmt.html">MultiOpndStmt</a> *edge)</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>  {</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a6b3cd98eeb47c8475e7ee64480dcdee9">SVFStmt::Phi</a>;</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>  }</div><div class="line"><a name="l00694"></a><span class="lineno"><a class="line" href="classSVF_1_1PhiStmt.html#a904591799ce401e8d3ee6aa634325ba3"> 694</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PhiStmt.html#a904591799ce401e8d3ee6aa634325ba3">classof</a>(<span class="keyword">const</span> GenericPAGEdgeTy *edge)</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>  {</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a6b3cd98eeb47c8475e7ee64480dcdee9">SVFStmt::Phi</a>;</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>  }</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span> </div><div class="line"><a name="l00701"></a><span class="lineno"><a class="line" href="classSVF_1_1PhiStmt.html#ac2374acf4477a4bc5d188797ea9baaf3"> 701</a></span>  <a class="code" href="classSVF_1_1PhiStmt.html#ac2374acf4477a4bc5d188797ea9baaf3">PhiStmt</a>(<a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* s, <span class="keyword">const</span> <a class="code" href="classSVF_1_1MultiOpndStmt.html#acf8c7cfbf1c8baab672040635bb9a007">OPVars</a>& opnds, <span class="keyword">const</span> OpICFGNodeVec& icfgNodes) : <a class="code" href="classSVF_1_1MultiOpndStmt.html">MultiOpndStmt</a>(s,opnds,<a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>::<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a6b3cd98eeb47c8475e7ee64480dcdee9">Phi</a>), opICFGNodes(icfgNodes)</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>  {</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(opnds.size()==icfgNodes.size() && <span class="stringliteral">"Numbers of operands and their ICFGNodes are not consistent?"</span>);</div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>  }</div><div class="line"><a name="l00705"></a><span class="lineno"><a class="line" href="classSVF_1_1PhiStmt.html#ac3541a25f83ce8465d7b35010ba50b37"> 705</a></span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PhiStmt.html#ac3541a25f83ce8465d7b35010ba50b37">addOpVar</a>(<a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* op, <span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* inode){</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>  opVars.push_back(op);</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>  opICFGNodes.push_back(inode);</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(opVars.size()==opICFGNodes.size() && <span class="stringliteral">"Numbers of operands and their ICFGNodes are not consistent?"</span>);</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>  }</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span> </div><div class="line"><a name="l00712"></a><span class="lineno"><a class="line" href="classSVF_1_1PhiStmt.html#a0b97394bc1946c0185d2c11fbc2181f4"> 712</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* <a class="code" href="classSVF_1_1PhiStmt.html#a0b97394bc1946c0185d2c11fbc2181f4">getOpICFGNode</a>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> op_idx)<span class="keyword"> const</span>{</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>  <span class="keywordflow">return</span> opICFGNodes.at(op_idx);</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>  }</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span> </div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>  <span class="keywordtype">bool</span> isFunctionRetPhi() <span class="keyword">const</span>;</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span> </div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1SVFStmt.html#ad0b4dbe87e009518f22360c48b0d0c22">toString</a>() <span class="keyword">const override</span>;</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span> };</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span> </div><div class="line"><a name="l00726"></a><span class="lineno"><a class="line" href="classSVF_1_1SelectStmt.html"> 726</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1SelectStmt.html">SelectStmt</a>: <span class="keyword">public</span> <a class="code" href="classSVF_1_1MultiOpndStmt.html">MultiOpndStmt</a></div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span> {</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>  <a class="code" href="classSVF_1_1SelectStmt.html">SelectStmt</a>(); </div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>  <a class="code" href="classSVF_1_1SelectStmt.html">SelectStmt</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SelectStmt.html">SelectStmt</a> &); </div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>  <span class="keywordtype">void</span> operator=(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SelectStmt.html">SelectStmt</a> &); </div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span> </div><div class="line"><a name="l00733"></a><span class="lineno"><a class="line" href="classSVF_1_1SelectStmt.html#a2d6e9d7131bc69a0e88b703c2c03d7e2"> 733</a></span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* <a class="code" href="classSVF_1_1SelectStmt.html#a2d6e9d7131bc69a0e88b703c2c03d7e2">condition</a>;</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span> </div><div class="line"><a name="l00737"></a><span class="lineno"><a class="line" href="classSVF_1_1SelectStmt.html#a89f27a20f9c2acc66c4c6152e79ee30e"> 737</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SelectStmt.html#a89f27a20f9c2acc66c4c6152e79ee30e">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SelectStmt.html">SelectStmt</a> *)</div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>  {</div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span>  }</div><div class="line"><a name="l00741"></a><span class="lineno"><a class="line" href="classSVF_1_1SelectStmt.html#a3cb54c9a91a32e12c5f8ee452fcf64be"> 741</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SelectStmt.html#a3cb54c9a91a32e12c5f8ee452fcf64be">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *edge)</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span>  {</div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad9397ec243a61992dc2b5681bea587fa">SVFStmt::Select</a>;</div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span>  }</div><div class="line"><a name="l00745"></a><span class="lineno"><a class="line" href="classSVF_1_1SelectStmt.html#a0b73ca0dedc4b7c718585577424fa0ce"> 745</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SelectStmt.html#a0b73ca0dedc4b7c718585577424fa0ce">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MultiOpndStmt.html">MultiOpndStmt</a> *edge)</div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>  {</div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad9397ec243a61992dc2b5681bea587fa">SVFStmt::Select</a>;</div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>  }</div><div class="line"><a name="l00749"></a><span class="lineno"><a class="line" href="classSVF_1_1SelectStmt.html#aa9d3eeb27fee7084bcd2921c98be1bd1"> 749</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SelectStmt.html#aa9d3eeb27fee7084bcd2921c98be1bd1">classof</a>(<span class="keyword">const</span> GenericPAGEdgeTy *edge)</div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span>  {</div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad9397ec243a61992dc2b5681bea587fa">SVFStmt::Select</a>;</div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span>  }</div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span> </div><div class="line"><a name="l00756"></a><span class="lineno"><a class="line" href="classSVF_1_1SelectStmt.html#ae654d9036e291e723a3f1f7eab5b018b"> 756</a></span>  <a class="code" href="classSVF_1_1SelectStmt.html#ae654d9036e291e723a3f1f7eab5b018b">SelectStmt</a>(<a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* s, <span class="keyword">const</span> <a class="code" href="classSVF_1_1MultiOpndStmt.html#acf8c7cfbf1c8baab672040635bb9a007">OPVars</a>& opnds, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* cond) : <a class="code" href="classSVF_1_1MultiOpndStmt.html">MultiOpndStmt</a>(s,opnds,<a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>::<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad9397ec243a61992dc2b5681bea587fa">Select</a>), condition(cond)</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>  {</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(opnds.size()==2 && <span class="stringliteral">"SelectStmt can only have two operands!"</span>);</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>  }</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1SVFStmt.html#ad0b4dbe87e009518f22360c48b0d0c22">toString</a>() <span class="keyword">const override</span>;</div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span> </div><div class="line"><a name="l00762"></a><span class="lineno"><a class="line" href="classSVF_1_1SelectStmt.html#ad4c3e9529176478bb726279a76050e8c"> 762</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* <a class="code" href="classSVF_1_1SelectStmt.html#ad4c3e9529176478bb726279a76050e8c">getCondition</a>()<span class="keyword"> const</span>{</div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>  <span class="keywordflow">return</span> condition;</div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>  }</div><div class="line"><a name="l00765"></a><span class="lineno"><a class="line" href="classSVF_1_1SelectStmt.html#a537c03b08444da34c26b9e989bb0e568"> 765</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* <a class="code" href="classSVF_1_1SelectStmt.html#a537c03b08444da34c26b9e989bb0e568">getTrueValue</a>()<span class="keyword"> const</span>{</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>  <span class="keywordflow">return</span> getOpVar(0);</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>  }</div><div class="line"><a name="l00768"></a><span class="lineno"><a class="line" href="classSVF_1_1SelectStmt.html#af64d7855e352a0afb5d2e98a8622a4ad"> 768</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* <a class="code" href="classSVF_1_1SelectStmt.html#af64d7855e352a0afb5d2e98a8622a4ad">getFalseValue</a>()<span class="keyword"> const</span>{</div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span>  <span class="keywordflow">return</span> getOpVar(1);</div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>  }</div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span> };</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span> </div><div class="line"><a name="l00776"></a><span class="lineno"><a class="line" href="classSVF_1_1CmpStmt.html"> 776</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1CmpStmt.html">CmpStmt</a>: <span class="keyword">public</span> <a class="code" href="classSVF_1_1MultiOpndStmt.html">MultiOpndStmt</a></div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span> {</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>  <a class="code" href="classSVF_1_1CmpStmt.html">CmpStmt</a>(); </div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>  <a class="code" href="classSVF_1_1CmpStmt.html">CmpStmt</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CmpStmt.html">CmpStmt</a> &); </div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>  <span class="keywordtype">void</span> operator=(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CmpStmt.html">CmpStmt</a> &); </div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span> </div><div class="line"><a name="l00783"></a><span class="lineno"><a class="line" href="classSVF_1_1CmpStmt.html#a26fc263da6ab3fee40a335d367419328"> 783</a></span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1CmpStmt.html#a26fc263da6ab3fee40a335d367419328">predicate</a>;</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span> </div><div class="line"><a name="l00787"></a><span class="lineno"><a class="line" href="classSVF_1_1CmpStmt.html#adec661dd23b7806b35abba2d44aebc61"> 787</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CmpStmt.html#adec661dd23b7806b35abba2d44aebc61">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CmpStmt.html">CmpStmt</a> *)</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>  {</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>  }</div><div class="line"><a name="l00791"></a><span class="lineno"><a class="line" href="classSVF_1_1CmpStmt.html#a16a5fddf61f6a13ee34dde0c4267d0e5"> 791</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CmpStmt.html#a16a5fddf61f6a13ee34dde0c4267d0e5">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *edge)</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span>  {</div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a610d6662d1814cffbf23db29e7e620c0">SVFStmt::Cmp</a>;</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>  }</div><div class="line"><a name="l00795"></a><span class="lineno"><a class="line" href="classSVF_1_1CmpStmt.html#a679ec89e3fa17a17dcc8fafeb30d3a61"> 795</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CmpStmt.html#a679ec89e3fa17a17dcc8fafeb30d3a61">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MultiOpndStmt.html">MultiOpndStmt</a> *edge)</div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span>  {</div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a610d6662d1814cffbf23db29e7e620c0">SVFStmt::Cmp</a>;</div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span>  }</div><div class="line"><a name="l00799"></a><span class="lineno"><a class="line" href="classSVF_1_1CmpStmt.html#af9f7fe4aa92bb443cd517f06a8fb94cd"> 799</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CmpStmt.html#af9f7fe4aa92bb443cd517f06a8fb94cd">classof</a>(<span class="keyword">const</span> GenericPAGEdgeTy *edge)</div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span>  {</div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a610d6662d1814cffbf23db29e7e620c0">SVFStmt::Cmp</a>;</div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span>  }</div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span> </div><div class="line"><a name="l00806"></a><span class="lineno"><a class="line" href="classSVF_1_1CmpStmt.html#a02c4846269bd28bd4e8b127532cb737a"> 806</a></span>  <a class="code" href="classSVF_1_1CmpStmt.html#a02c4846269bd28bd4e8b127532cb737a">CmpStmt</a>(<a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* s, <span class="keyword">const</span> <a class="code" href="classSVF_1_1MultiOpndStmt.html#acf8c7cfbf1c8baab672040635bb9a007">OPVars</a>& opnds, <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> pre) : <a class="code" href="classSVF_1_1MultiOpndStmt.html">MultiOpndStmt</a>(s,opnds,<a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>::<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a610d6662d1814cffbf23db29e7e620c0">Cmp</a>), predicate(pre)</div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span>  {</div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span>  }</div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span> </div><div class="line"><a name="l00810"></a><span class="lineno"><a class="line" href="classSVF_1_1CmpStmt.html#aa6a21fb1cfbc263bb38651176c495632"> 810</a></span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1CmpStmt.html#aa6a21fb1cfbc263bb38651176c495632">getPredicate</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span>  <span class="keywordflow">return</span> predicate;</div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span>  }</div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span>  </div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1SVFStmt.html#ad0b4dbe87e009518f22360c48b0d0c22">toString</a>() <span class="keyword">const override</span>;</div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span> };</div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span> </div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span> </div><div class="line"><a name="l00822"></a><span class="lineno"><a class="line" href="classSVF_1_1BinaryOPStmt.html"> 822</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1BinaryOPStmt.html">BinaryOPStmt</a>: <span class="keyword">public</span> <a class="code" href="classSVF_1_1MultiOpndStmt.html">MultiOpndStmt</a></div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span> {</div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span>  <a class="code" href="classSVF_1_1BinaryOPStmt.html">BinaryOPStmt</a>(); </div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>  <a class="code" href="classSVF_1_1BinaryOPStmt.html">BinaryOPStmt</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html">BinaryOPStmt</a> &); </div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>  <span class="keywordtype">void</span> operator=(<span class="keyword">const</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html">BinaryOPStmt</a> &); </div><div class="line"><a name="l00828"></a><span class="lineno"><a class="line" href="classSVF_1_1BinaryOPStmt.html#a0c4f900cf7321e8385b4f45e5cba3d1a"> 828</a></span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1BinaryOPStmt.html#a0c4f900cf7321e8385b4f45e5cba3d1a">opcode</a>;</div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span> </div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span> </div><div class="line"><a name="l00833"></a><span class="lineno"><a class="line" href="classSVF_1_1BinaryOPStmt.html#ab5a0f41455474643e8dd97aaab0aaab5"> 833</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#ab5a0f41455474643e8dd97aaab0aaab5">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html">BinaryOPStmt</a> *)</div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span>  {</div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span>  }</div><div class="line"><a name="l00837"></a><span class="lineno"><a class="line" href="classSVF_1_1BinaryOPStmt.html#abc24c2d50b164a637ad0cec371cb7e63"> 837</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#abc24c2d50b164a637ad0cec371cb7e63">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *edge)</div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span>  {</div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad58f5e59c55e1ffd23b83d16224fed13">SVFStmt::BinaryOp</a>;</div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>  }</div><div class="line"><a name="l00841"></a><span class="lineno"><a class="line" href="classSVF_1_1BinaryOPStmt.html#a7cae2a90a33225c90eb035cf9e663d3d"> 841</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#a7cae2a90a33225c90eb035cf9e663d3d">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MultiOpndStmt.html">MultiOpndStmt</a> *edge)</div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span>  {</div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad58f5e59c55e1ffd23b83d16224fed13">SVFStmt::BinaryOp</a>;</div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span>  }</div><div class="line"><a name="l00845"></a><span class="lineno"><a class="line" href="classSVF_1_1BinaryOPStmt.html#ac8831079a5a9c6d50fbd09ff545e7cfd"> 845</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#ac8831079a5a9c6d50fbd09ff545e7cfd">classof</a>(<span class="keyword">const</span> GenericPAGEdgeTy *edge)</div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span>  {</div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad58f5e59c55e1ffd23b83d16224fed13">SVFStmt::BinaryOp</a>;</div><div class="line"><a name="l00848"></a><span class="lineno"> 848</span>  }</div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span> </div><div class="line"><a name="l00852"></a><span class="lineno"><a class="line" href="classSVF_1_1BinaryOPStmt.html#a7470a2412985bbb227bb62d8a297b7f1"> 852</a></span>  <a class="code" href="classSVF_1_1BinaryOPStmt.html#a7470a2412985bbb227bb62d8a297b7f1">BinaryOPStmt</a>(<a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* s, <span class="keyword">const</span> <a class="code" href="classSVF_1_1MultiOpndStmt.html#acf8c7cfbf1c8baab672040635bb9a007">OPVars</a>& opnds, <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> oc) : <a class="code" href="classSVF_1_1MultiOpndStmt.html">MultiOpndStmt</a>(s,opnds,<a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>::<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad58f5e59c55e1ffd23b83d16224fed13">BinaryOp</a>), opcode(oc)</div><div class="line"><a name="l00853"></a><span class="lineno"> 853</span>  {</div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span>  }</div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span> </div><div class="line"><a name="l00856"></a><span class="lineno"><a class="line" href="classSVF_1_1BinaryOPStmt.html#ad0a7c5e87355d7a83176343322db448f"> 856</a></span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1BinaryOPStmt.html#ad0a7c5e87355d7a83176343322db448f">getOpcode</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00857"></a><span class="lineno"> 857</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00858"></a><span class="lineno"> 858</span>  <span class="keywordflow">return</span> opcode;</div><div class="line"><a name="l00859"></a><span class="lineno"> 859</span>  }</div><div class="line"><a name="l00860"></a><span class="lineno"> 860</span> </div><div class="line"><a name="l00861"></a><span class="lineno"> 861</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1SVFStmt.html#ad0b4dbe87e009518f22360c48b0d0c22">toString</a>() <span class="keyword">const override</span>;</div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span> };</div><div class="line"><a name="l00863"></a><span class="lineno"> 863</span> </div><div class="line"><a name="l00867"></a><span class="lineno"><a class="line" href="classSVF_1_1UnaryOPStmt.html"> 867</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1UnaryOPStmt.html">UnaryOPStmt</a>: <span class="keyword">public</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a></div><div class="line"><a name="l00868"></a><span class="lineno"> 868</span> {</div><div class="line"><a name="l00869"></a><span class="lineno"> 869</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span>  <a class="code" href="classSVF_1_1UnaryOPStmt.html">UnaryOPStmt</a>(); </div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span>  <a class="code" href="classSVF_1_1UnaryOPStmt.html">UnaryOPStmt</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1UnaryOPStmt.html">UnaryOPStmt</a> &); </div><div class="line"><a name="l00872"></a><span class="lineno"> 872</span>  <span class="keywordtype">void</span> operator=(<span class="keyword">const</span> <a class="code" href="classSVF_1_1UnaryOPStmt.html">UnaryOPStmt</a> &); </div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span>  <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* <a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>(); </div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span>  <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* <a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>(); </div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">getSrcID</a>(); </div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">getDstID</a>(); </div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span> </div><div class="line"><a name="l00878"></a><span class="lineno"><a class="line" href="classSVF_1_1UnaryOPStmt.html#a099df135a83d28a2e6f344e008fe1cc6"> 878</a></span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1UnaryOPStmt.html#a099df135a83d28a2e6f344e008fe1cc6">opcode</a>;</div><div class="line"><a name="l00879"></a><span class="lineno"> 879</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00881"></a><span class="lineno"> 881</span> </div><div class="line"><a name="l00882"></a><span class="lineno"><a class="line" href="classSVF_1_1UnaryOPStmt.html#abb10688145fa76629916ec3df61b6c95"> 882</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1UnaryOPStmt.html#abb10688145fa76629916ec3df61b6c95">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1UnaryOPStmt.html">UnaryOPStmt</a> *)</div><div class="line"><a name="l00883"></a><span class="lineno"> 883</span>  {</div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00885"></a><span class="lineno"> 885</span>  }</div><div class="line"><a name="l00886"></a><span class="lineno"><a class="line" href="classSVF_1_1UnaryOPStmt.html#a2a4b7e3a4c5be8a253b542f144f830b7"> 886</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1UnaryOPStmt.html#a2a4b7e3a4c5be8a253b542f144f830b7">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *edge)</div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span>  {</div><div class="line"><a name="l00888"></a><span class="lineno"> 888</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad2a5e6fe0f2b5fefb53abb9e91c57688">SVFStmt::UnaryOp</a>;</div><div class="line"><a name="l00889"></a><span class="lineno"> 889</span>  }</div><div class="line"><a name="l00890"></a><span class="lineno"><a class="line" href="classSVF_1_1UnaryOPStmt.html#add29b76e0ef73da2606bac97f74a7896"> 890</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1UnaryOPStmt.html#add29b76e0ef73da2606bac97f74a7896">classof</a>(<span class="keyword">const</span> GenericPAGEdgeTy *edge)</div><div class="line"><a name="l00891"></a><span class="lineno"> 891</span>  {</div><div class="line"><a name="l00892"></a><span class="lineno"> 892</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad2a5e6fe0f2b5fefb53abb9e91c57688">SVFStmt::UnaryOp</a>;</div><div class="line"><a name="l00893"></a><span class="lineno"> 893</span>  }</div><div class="line"><a name="l00895"></a><span class="lineno"> 895</span> </div><div class="line"><a name="l00897"></a><span class="lineno"><a class="line" href="classSVF_1_1UnaryOPStmt.html#a2b91333ac3d4b5e1099590aeb15d38ba"> 897</a></span>  <a class="code" href="classSVF_1_1UnaryOPStmt.html#a2b91333ac3d4b5e1099590aeb15d38ba">UnaryOPStmt</a>(<a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* s, <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* d, <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> oc) : <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>(s,d,<a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>::<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad2a5e6fe0f2b5fefb53abb9e91c57688">UnaryOp</a>), opcode(oc)</div><div class="line"><a name="l00898"></a><span class="lineno"> 898</span>  {</div><div class="line"><a name="l00899"></a><span class="lineno"> 899</span>  }</div><div class="line"><a name="l00900"></a><span class="lineno"> 900</span> </div><div class="line"><a name="l00901"></a><span class="lineno"><a class="line" href="classSVF_1_1UnaryOPStmt.html#af29723d5e777b10d53d48263a786f5b6"> 901</a></span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1UnaryOPStmt.html#af29723d5e777b10d53d48263a786f5b6">getOpcode</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00902"></a><span class="lineno"> 902</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00903"></a><span class="lineno"> 903</span>  <span class="keywordflow">return</span> opcode;</div><div class="line"><a name="l00904"></a><span class="lineno"> 904</span>  }</div><div class="line"><a name="l00905"></a><span class="lineno"><a class="line" href="classSVF_1_1UnaryOPStmt.html#abde2b32d5bbd37df0e194b1a4e78483b"> 905</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* <a class="code" href="classSVF_1_1UnaryOPStmt.html#abde2b32d5bbd37df0e194b1a4e78483b">getOpVar</a>()<span class="keyword"> const</span>{</div><div class="line"><a name="l00906"></a><span class="lineno"> 906</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">SVFStmt::getSrcNode</a>();</div><div class="line"><a name="l00907"></a><span class="lineno"> 907</span>  }</div><div class="line"><a name="l00908"></a><span class="lineno"><a class="line" href="classSVF_1_1UnaryOPStmt.html#a919db9b8c9287c3802f563840b56c4f1"> 908</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* <a class="code" href="classSVF_1_1UnaryOPStmt.html#a919db9b8c9287c3802f563840b56c4f1">getRes</a>()<span class="keyword"> const</span>{</div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">SVFStmt::getDstNode</a>();</div><div class="line"><a name="l00910"></a><span class="lineno"> 910</span>  }</div><div class="line"><a name="l00911"></a><span class="lineno"> 911</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> getOpVarID() <span class="keyword">const</span>;</div><div class="line"><a name="l00912"></a><span class="lineno"> 912</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> getResID() <span class="keyword">const</span>;</div><div class="line"><a name="l00913"></a><span class="lineno"> 913</span> </div><div class="line"><a name="l00914"></a><span class="lineno"> 914</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1SVFStmt.html#ad0b4dbe87e009518f22360c48b0d0c22">toString</a>() <span class="keyword">const override</span>;</div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span> };</div><div class="line"><a name="l00916"></a><span class="lineno"> 916</span> </div><div class="line"><a name="l00917"></a><span class="lineno"> 917</span> </div><div class="line"><a name="l00921"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchStmt.html"> 921</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1BranchStmt.html">BranchStmt</a>: <span class="keyword">public</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a></div><div class="line"><a name="l00922"></a><span class="lineno"> 922</span> {</div><div class="line"><a name="l00923"></a><span class="lineno"> 923</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00924"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchStmt.html#ac486fb3a118e6153892b998b0ef46890"> 924</a></span>  <span class="keyword">typedef</span> std::vector<std::pair<const ICFGNode*, s64_t> > <a class="code" href="classSVF_1_1BranchStmt.html#ac486fb3a118e6153892b998b0ef46890">SuccAndCondPairVec</a>;</div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00926"></a><span class="lineno"> 926</span>  <a class="code" href="classSVF_1_1BranchStmt.html">BranchStmt</a>(); </div><div class="line"><a name="l00927"></a><span class="lineno"> 927</span>  <a class="code" href="classSVF_1_1BranchStmt.html">BranchStmt</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1BranchStmt.html">BranchStmt</a> &); </div><div class="line"><a name="l00928"></a><span class="lineno"> 928</span>  <span class="keywordtype">void</span> operator=(<span class="keyword">const</span> <a class="code" href="classSVF_1_1BranchStmt.html">BranchStmt</a> &); </div><div class="line"><a name="l00929"></a><span class="lineno"> 929</span>  <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* <a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>(); </div><div class="line"><a name="l00930"></a><span class="lineno"> 930</span>  <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* <a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>(); </div><div class="line"><a name="l00931"></a><span class="lineno"> 931</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">getSrcID</a>(); </div><div class="line"><a name="l00932"></a><span class="lineno"> 932</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">getDstID</a>(); </div><div class="line"><a name="l00933"></a><span class="lineno"> 933</span> </div><div class="line"><a name="l00934"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchStmt.html#a40854cd95fbae16ef8e370255d0e3cf5"> 934</a></span>  SuccAndCondPairVec <a class="code" href="classSVF_1_1BranchStmt.html#a40854cd95fbae16ef8e370255d0e3cf5">successors</a>;</div><div class="line"><a name="l00935"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchStmt.html#adcf5cabe6e0a87cded5ef1fdf7273f3f"> 935</a></span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* <a class="code" href="classSVF_1_1BranchStmt.html#adcf5cabe6e0a87cded5ef1fdf7273f3f">cond</a>;</div><div class="line"><a name="l00936"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchStmt.html#a33887345c00ffda9ca7dca59d61e184a"> 936</a></span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* <a class="code" href="classSVF_1_1BranchStmt.html#a33887345c00ffda9ca7dca59d61e184a">brInst</a>;</div><div class="line"><a name="l00937"></a><span class="lineno"> 937</span> </div><div class="line"><a name="l00938"></a><span class="lineno"> 938</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00940"></a><span class="lineno"> 940</span> </div><div class="line"><a name="l00941"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchStmt.html#a750ffca6648fafedfb271fb90d975847"> 941</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1BranchStmt.html#a750ffca6648fafedfb271fb90d975847">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1BranchStmt.html">BranchStmt</a> *)</div><div class="line"><a name="l00942"></a><span class="lineno"> 942</span>  {</div><div class="line"><a name="l00943"></a><span class="lineno"> 943</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00944"></a><span class="lineno"> 944</span>  }</div><div class="line"><a name="l00945"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchStmt.html#a55b867cd85dbbe43e2f7c1bad5dce647"> 945</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1BranchStmt.html#a55b867cd85dbbe43e2f7c1bad5dce647">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *edge)</div><div class="line"><a name="l00946"></a><span class="lineno"> 946</span>  {</div><div class="line"><a name="l00947"></a><span class="lineno"> 947</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad52703e3ec09b6a4f565e5d82279b6a3">SVFStmt::Branch</a>;</div><div class="line"><a name="l00948"></a><span class="lineno"> 948</span>  }</div><div class="line"><a name="l00949"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchStmt.html#adf97a239f15b635580cef475980e8d82"> 949</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1BranchStmt.html#adf97a239f15b635580cef475980e8d82">classof</a>(<span class="keyword">const</span> GenericPAGEdgeTy *edge)</div><div class="line"><a name="l00950"></a><span class="lineno"> 950</span>  {</div><div class="line"><a name="l00951"></a><span class="lineno"> 951</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad52703e3ec09b6a4f565e5d82279b6a3">SVFStmt::Branch</a>;</div><div class="line"><a name="l00952"></a><span class="lineno"> 952</span>  }</div><div class="line"><a name="l00954"></a><span class="lineno"> 954</span> </div><div class="line"><a name="l00956"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchStmt.html#a5e102d5c08b7121efc87b99651f0b5d2"> 956</a></span>  <a class="code" href="classSVF_1_1BranchStmt.html#a5e102d5c08b7121efc87b99651f0b5d2">BranchStmt</a>(<a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* inst, <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* c, <span class="keyword">const</span> SuccAndCondPairVec& succs) : <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>(c,inst,<a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>::<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad52703e3ec09b6a4f565e5d82279b6a3">Branch</a>), successors(succs), cond(c), brInst(inst)</div><div class="line"><a name="l00957"></a><span class="lineno"> 957</span>  {</div><div class="line"><a name="l00958"></a><span class="lineno"> 958</span>  }</div><div class="line"><a name="l00959"></a><span class="lineno"> 959</span> </div><div class="line"><a name="l00961"></a><span class="lineno"> 961</span>  <span class="keywordtype">bool</span> isUnconditional() <span class="keyword">const</span>;</div><div class="line"><a name="l00963"></a><span class="lineno"> 963</span>  <span class="keywordtype">bool</span> isConditional() <span class="keyword">const</span>;</div><div class="line"><a name="l00965"></a><span class="lineno"> 965</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* getCondition() <span class="keyword">const</span>;</div><div class="line"><a name="l00966"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchStmt.html#a2c6fe09027838f9e0ad9ab8193ce8e9b"> 966</a></span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* <a class="code" href="classSVF_1_1BranchStmt.html#a2c6fe09027838f9e0ad9ab8193ce8e9b">getBranchInst</a>()<span class="keyword"> const</span>{</div><div class="line"><a name="l00967"></a><span class="lineno"> 967</span>  <span class="keywordflow">return</span> brInst;</div><div class="line"><a name="l00968"></a><span class="lineno"> 968</span>  }</div><div class="line"><a name="l00969"></a><span class="lineno"> 969</span>  </div><div class="line"><a name="l00973"></a><span class="lineno"> 973</span> </div><div class="line"><a name="l00978"></a><span class="lineno"> 978</span> </div><div class="line"><a name="l00981"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchStmt.html#a022d355bde3d0d0a9471cd125b24583b"> 981</a></span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1BranchStmt.html#a022d355bde3d0d0a9471cd125b24583b">getNumSuccessors</a>()<span class="keyword"> const</span>{</div><div class="line"><a name="l00982"></a><span class="lineno"> 982</span>  <span class="keywordflow">return</span> successors.size();</div><div class="line"><a name="l00983"></a><span class="lineno"> 983</span>  }</div><div class="line"><a name="l00984"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchStmt.html#a93040c884df211ac62d53ceafdd9c4dd"> 984</a></span>  <span class="keyword">const</span> SuccAndCondPairVec& <a class="code" href="classSVF_1_1BranchStmt.html#a93040c884df211ac62d53ceafdd9c4dd">getSuccessors</a>()<span class="keyword"> const</span>{</div><div class="line"><a name="l00985"></a><span class="lineno"> 985</span>  <span class="keywordflow">return</span> successors;</div><div class="line"><a name="l00986"></a><span class="lineno"> 986</span>  }</div><div class="line"><a name="l00987"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchStmt.html#a7d9a6ebb2d95942c453864b5327b1ae8"> 987</a></span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* <a class="code" href="classSVF_1_1BranchStmt.html#a7d9a6ebb2d95942c453864b5327b1ae8">getSuccessor</a> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i)<span class="keyword"> const</span>{</div><div class="line"><a name="l00988"></a><span class="lineno"> 988</span>  <span class="keywordflow">return</span> successors.at(i).first;</div><div class="line"><a name="l00989"></a><span class="lineno"> 989</span>  }</div><div class="line"><a name="l00990"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchStmt.html#a7d2fa666602e0444d3e019563c0e7556"> 990</a></span>  <a class="code" href="namespaceSVF.html#abe09d99af006554a5c00803e9a89f9a6">s64_t</a> <a class="code" href="classSVF_1_1BranchStmt.html#a7d2fa666602e0444d3e019563c0e7556">getSuccessorCondValue</a> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i)<span class="keyword"> const</span>{ </div><div class="line"><a name="l00991"></a><span class="lineno"> 991</span>  <span class="keywordflow">return</span> successors.at(i).second;</div><div class="line"><a name="l00992"></a><span class="lineno"> 992</span>  }</div><div class="line"><a name="l00994"></a><span class="lineno"> 994</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1SVFStmt.html#ad0b4dbe87e009518f22360c48b0d0c22">toString</a>() <span class="keyword">const override</span>;</div><div class="line"><a name="l00995"></a><span class="lineno"> 995</span> };</div><div class="line"><a name="l00996"></a><span class="lineno"> 996</span> </div><div class="line"><a name="l00997"></a><span class="lineno"> 997</span> </div><div class="line"><a name="l01001"></a><span class="lineno"><a class="line" href="classSVF_1_1TDForkPE.html"> 1001</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1TDForkPE.html">TDForkPE</a>: <span class="keyword">public</span> <a class="code" href="classSVF_1_1CallPE.html">CallPE</a></div><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span> {</div><div class="line"><a name="l01003"></a><span class="lineno"> 1003</span> <span class="keyword">private</span>:</div><div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>  <a class="code" href="classSVF_1_1TDForkPE.html">TDForkPE</a>(); </div><div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>  <a class="code" href="classSVF_1_1TDForkPE.html">TDForkPE</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1TDForkPE.html">TDForkPE</a> &); </div><div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>  <span class="keywordtype">void</span> operator=(<span class="keyword">const</span> <a class="code" href="classSVF_1_1TDForkPE.html">TDForkPE</a> &); </div><div class="line"><a name="l01007"></a><span class="lineno"> 1007</span> </div><div class="line"><a name="l01008"></a><span class="lineno"> 1008</span> <span class="keyword">public</span>:</div><div class="line"><a name="l01010"></a><span class="lineno"> 1010</span> </div><div class="line"><a name="l01011"></a><span class="lineno"><a class="line" href="classSVF_1_1TDForkPE.html#a79317f2ac92ace129a1ccf802406498d"> 1011</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1TDForkPE.html#a79317f2ac92ace129a1ccf802406498d">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1TDForkPE.html">TDForkPE</a> *)</div><div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>  {</div><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>  }</div><div class="line"><a name="l01015"></a><span class="lineno"><a class="line" href="classSVF_1_1TDForkPE.html#a68f16df5a9b44dd2492c33fb0a1b5f0c"> 1015</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1TDForkPE.html#a68f16df5a9b44dd2492c33fb0a1b5f0c">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *edge)</div><div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>  {</div><div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a375b956af2119d7abca8f1995f7701fd">SVFStmt::ThreadFork</a>;</div><div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>  }</div><div class="line"><a name="l01019"></a><span class="lineno"><a class="line" href="classSVF_1_1TDForkPE.html#a9e160158fe61958bcd6ef2a7da559018"> 1019</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1TDForkPE.html#a9e160158fe61958bcd6ef2a7da559018">classof</a>(<span class="keyword">const</span> GenericPAGEdgeTy *edge)</div><div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>  {</div><div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a375b956af2119d7abca8f1995f7701fd">SVFStmt::ThreadFork</a>;</div><div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>  }</div><div class="line"><a name="l01024"></a><span class="lineno"> 1024</span> </div><div class="line"><a name="l01026"></a><span class="lineno"><a class="line" href="classSVF_1_1TDForkPE.html#ae28fa8ad500a11208410adbfd0d19ea5"> 1026</a></span>  <a class="code" href="classSVF_1_1TDForkPE.html#ae28fa8ad500a11208410adbfd0d19ea5">TDForkPE</a>(<a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* s, <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* d, <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* i, <span class="keyword">const</span> <a class="code" href="classSVF_1_1FunEntryICFGNode.html">FunEntryICFGNode</a>* <a class="code" href="cuddInt_8c.html#a936a27e51e66afb57c2b3a12d78a238e">entry</a>) :</div><div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>  <a class="code" href="classSVF_1_1CallPE.html">CallPE</a>(s,d,i,entry,<a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>::<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a375b956af2119d7abca8f1995f7701fd">ThreadFork</a>)</div><div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>  {</div><div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>  }</div><div class="line"><a name="l01030"></a><span class="lineno"> 1030</span> </div><div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1SVFStmt.html#ad0b4dbe87e009518f22360c48b0d0c22">toString</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l01032"></a><span class="lineno"> 1032</span> };</div><div class="line"><a name="l01033"></a><span class="lineno"> 1033</span> </div><div class="line"><a name="l01034"></a><span class="lineno"> 1034</span> </div><div class="line"><a name="l01035"></a><span class="lineno"> 1035</span> </div><div class="line"><a name="l01039"></a><span class="lineno"><a class="line" href="classSVF_1_1TDJoinPE.html"> 1039</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1TDJoinPE.html">TDJoinPE</a>: <span class="keyword">public</span> <a class="code" href="classSVF_1_1RetPE.html">RetPE</a></div><div class="line"><a name="l01040"></a><span class="lineno"> 1040</span> {</div><div class="line"><a name="l01041"></a><span class="lineno"> 1041</span> <span class="keyword">private</span>:</div><div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>  <a class="code" href="classSVF_1_1TDJoinPE.html">TDJoinPE</a>(); </div><div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>  <a class="code" href="classSVF_1_1TDJoinPE.html">TDJoinPE</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1TDJoinPE.html">TDJoinPE</a> &); </div><div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>  <span class="keywordtype">void</span> operator=(<span class="keyword">const</span> <a class="code" href="classSVF_1_1TDJoinPE.html">TDJoinPE</a> &); </div><div class="line"><a name="l01045"></a><span class="lineno"> 1045</span> </div><div class="line"><a name="l01046"></a><span class="lineno"> 1046</span> <span class="keyword">public</span>:</div><div class="line"><a name="l01048"></a><span class="lineno"> 1048</span> </div><div class="line"><a name="l01049"></a><span class="lineno"><a class="line" href="classSVF_1_1TDJoinPE.html#ace17257476d0ee089a9f9cb8dc63e3f2"> 1049</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1TDJoinPE.html#ace17257476d0ee089a9f9cb8dc63e3f2">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1TDJoinPE.html">TDJoinPE</a> *)</div><div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>  {</div><div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>  }</div><div class="line"><a name="l01053"></a><span class="lineno"><a class="line" href="classSVF_1_1TDJoinPE.html#a18e24262f5be7835bc830ea410acc19d"> 1053</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1TDJoinPE.html#a18e24262f5be7835bc830ea410acc19d">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *edge)</div><div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>  {</div><div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a3c3f8883c2d3b50aef6331d5da97ffb0">SVFStmt::ThreadJoin</a>;</div><div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>  }</div><div class="line"><a name="l01057"></a><span class="lineno"><a class="line" href="classSVF_1_1TDJoinPE.html#a22303af690086961b8d2356b345f882b"> 1057</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1TDJoinPE.html#a22303af690086961b8d2356b345f882b">classof</a>(<span class="keyword">const</span> GenericPAGEdgeTy *edge)</div><div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>  {</div><div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a3c3f8883c2d3b50aef6331d5da97ffb0">SVFStmt::ThreadJoin</a>;</div><div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>  }</div><div class="line"><a name="l01062"></a><span class="lineno"> 1062</span> </div><div class="line"><a name="l01064"></a><span class="lineno"><a class="line" href="classSVF_1_1TDJoinPE.html#ad836475c24cb395175291df3f1ddfee0"> 1064</a></span>  <a class="code" href="classSVF_1_1TDJoinPE.html#ad836475c24cb395175291df3f1ddfee0">TDJoinPE</a>(<a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* s, <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* d, <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* i, <span class="keyword">const</span> <a class="code" href="classSVF_1_1FunExitICFGNode.html">FunExitICFGNode</a>* e) :</div><div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>  <a class="code" href="classSVF_1_1RetPE.html">RetPE</a>(s,d,i,e, <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>::<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a3c3f8883c2d3b50aef6331d5da97ffb0">ThreadJoin</a>)</div><div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>  {</div><div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>  }</div><div class="line"><a name="l01068"></a><span class="lineno"> 1068</span> </div><div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1SVFStmt.html#ad0b4dbe87e009518f22360c48b0d0c22">toString</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l01070"></a><span class="lineno"> 1070</span> };</div><div class="line"><a name="l01071"></a><span class="lineno"> 1071</span> </div><div class="line"><a name="l01072"></a><span class="lineno"> 1072</span> } <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l01073"></a><span class="lineno"> 1073</span> </div><div class="line"><a name="l01074"></a><span class="lineno"> 1074</span> <span class="preprocessor">#endif </span><span class="comment">/* PAGEDGE_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="classSVF_1_1CmpStmt_html_a16a5fddf61f6a13ee34dde0c4267d0e5"><div class="ttname"><a href="classSVF_1_1CmpStmt.html#a16a5fddf61f6a13ee34dde0c4267d0e5">SVF::CmpStmt::classof</a></div><div class="ttdeci">static bool classof(const SVFStmt *edge)</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00791">SVFStatements.h:791</a></div></div>
|
|
69
|
+
<a href="SVFStatements_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> <span class="comment">//===- SVFStatements.h -- SVF statements-------------------------------------------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// SVF: Static Value-Flow Analysis</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// Copyright (C) <2013-2017> <Yulei Sui></span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> </div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <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> <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> <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> <span class="comment">// (at your option) any later version.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <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> <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> <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> <span class="comment">// GNU General Public License for more details.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <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> <span class="comment">// along with this program. If not, see <http://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment">//</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment">/*</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment"> * SVFStatements.h</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"> *</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment"> * Created on: Nov 10, 2013</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment"> * Author: Yulei Sui</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment"> */</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#ifndef PAGEDGE_H_</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#define PAGEDGE_H_</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include "<a class="code" href="GenericGraph_8h.html">Graphs/GenericGraph.h</a>"</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include "<a class="code" href="LocationSet_8h.html">MemoryModel/LocationSet.h</a>"</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#include "<a class="code" href="ICFGNode_8h.html">Graphs/ICFGNode.h</a>"</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="namespaceSVF.html#ab502ff5e204678640c1081d104f60971"> 41</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="comment">/*</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="comment"> * SVFIR program statements (PAGEdges)</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="comment"> */</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1GenericEdge.html">GenericEdge<SVFVar></a> <a class="code" href="namespaceSVF.html#ab502ff5e204678640c1081d104f60971">GenericPAGEdgeTy</a>;</div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html"> 47</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> : <span class="keyword">public</span> GenericPAGEdgeTy</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9"> 54</a></span>  <span class="keyword">enum</span> <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9">PEDGEK</a></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  {</div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad2a5e6fe0f2b5fefb53abb9e91c57688"> 56</a></span>  <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a0a9a0f650e864e89b7cbb3dc8c8aa197">Addr</a>, <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad3469cdfb64f05163b5310b731b221da">Copy</a>, <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9aa0f700b514c431ec5329aec49df56dcc">Store</a>, <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a62ac8480c43fcc657c631ec0003b15d5">Load</a>, <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a97ca16eba4c5f92e16388f0cdbcfcc00">Call</a>, <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a8d269a45adf13e69468f0357222ab2af">Ret</a>, <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a20d960c19118d1ed319e0dbea94405e8">Gep</a>, <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a6b3cd98eeb47c8475e7ee64480dcdee9">Phi</a>, <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad9397ec243a61992dc2b5681bea587fa">Select</a>, <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a610d6662d1814cffbf23db29e7e620c0">Cmp</a>, <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad58f5e59c55e1ffd23b83d16224fed13">BinaryOp</a>, <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad2a5e6fe0f2b5fefb53abb9e91c57688">UnaryOp</a>, <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad52703e3ec09b6a4f565e5d82279b6a3">Branch</a>, <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a375b956af2119d7abca8f1995f7701fd">ThreadFork</a>, <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a3c3f8883c2d3b50aef6331d5da97ffb0">ThreadJoin</a></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  };</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a6a689f62af301bd6ac09d7019aba1c17"> 60</a></span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* <a class="code" href="classSVF_1_1SVFStmt.html#a6a689f62af301bd6ac09d7019aba1c17">value</a>; </div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a877c7137875233e147faeb1198243f36"> 61</a></span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *<a class="code" href="classSVF_1_1SVFStmt.html#a877c7137875233e147faeb1198243f36">basicBlock</a>; </div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a50046a1500ec6e2819ef55162e70cc71"> 62</a></span>  <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a> *<a class="code" href="classSVF_1_1SVFStmt.html#a50046a1500ec6e2819ef55162e70cc71">icfgNode</a>; </div><div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a593cc8136f2138a518476405e667e060"> 63</a></span>  <a class="code" href="namespaceSVF.html#ae71551d6a1fc300e0403297aa25ddf94">EdgeID</a> <a class="code" href="classSVF_1_1SVFStmt.html#a593cc8136f2138a518476405e667e060">edgeId</a>; </div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#af1a9c2a18805560e46425bd98a35dea9"> 65</a></span>  <span class="keyword">static</span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1SVFStmt.html#af1a9c2a18805560e46425bd98a35dea9">totalEdgeNum</a>; </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <a class="code" href="classSVF_1_1SVFStmt.html#a2ab7295fe26d2c6d2d5c9fd027f96a47">SVFStmt</a>(<a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* s, <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* d, <a class="code" href="classSVF_1_1GenericEdge.html#aab8892b73370c32b48621cd1d0cce614">GEdgeFlag</a> k, <span class="keywordtype">bool</span> real=<span class="keyword">true</span>);</div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#aac79c7e8d390f297002782afb0ba3ff0"> 70</a></span>  <a class="code" href="classSVF_1_1SVFStmt.html#aac79c7e8d390f297002782afb0ba3ff0">~SVFStmt</a>()</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  {</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  }</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> </div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#ac517a3166a3afe45d04480534ac3bb50"> 76</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFStmt.html#ac517a3166a3afe45d04480534ac3bb50">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>*)</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  }</div><div class="line"><a name="l00080"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a00339663741d9f581d2f3ecae5a3e7e3"> 80</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFStmt.html#a00339663741d9f581d2f3ecae5a3e7e3">classof</a>(<span class="keyword">const</span> GenericPAGEdgeTy *edge)</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  {</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a0a9a0f650e864e89b7cbb3dc8c8aa197">SVFStmt::Addr</a> ||</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad3469cdfb64f05163b5310b731b221da">SVFStmt::Copy</a> ||</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9aa0f700b514c431ec5329aec49df56dcc">SVFStmt::Store</a> ||</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a62ac8480c43fcc657c631ec0003b15d5">SVFStmt::Load</a> ||</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a97ca16eba4c5f92e16388f0cdbcfcc00">SVFStmt::Call</a> ||</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a8d269a45adf13e69468f0357222ab2af">SVFStmt::Ret</a> ||</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a20d960c19118d1ed319e0dbea94405e8">SVFStmt::Gep</a> ||</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a610d6662d1814cffbf23db29e7e620c0">SVFStmt::Cmp</a> ||</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad58f5e59c55e1ffd23b83d16224fed13">SVFStmt::BinaryOp</a> ||</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad2a5e6fe0f2b5fefb53abb9e91c57688">SVFStmt::UnaryOp</a> ||</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a375b956af2119d7abca8f1995f7701fd">SVFStmt::ThreadFork</a> ||</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a3c3f8883c2d3b50aef6331d5da97ffb0">SVFStmt::ThreadJoin</a>;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  }</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div><div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#af7bb0d687fc61cae1de639c88e472491"> 98</a></span>  <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#ae71551d6a1fc300e0403297aa25ddf94">EdgeID</a> <a class="code" href="classSVF_1_1SVFStmt.html#af7bb0d687fc61cae1de639c88e472491">getEdgeID</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFStmt.html#a593cc8136f2138a518476405e667e060">edgeId</a>;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  }</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFStmt.html#a0b6c03af568b70903da6b200ac86c951">isPTAEdge</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> </div><div class="line"><a name="l00107"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a86628ea173dec4934322f5d1caf2e1db"> 107</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* <a class="code" href="classSVF_1_1SVFStmt.html#a86628ea173dec4934322f5d1caf2e1db">getInst</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a><<a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>>(<a class="code" href="classSVF_1_1SVFStmt.html#a6a689f62af301bd6ac09d7019aba1c17">value</a>);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  }</div><div class="line"><a name="l00111"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a24dddb4e346a6e569908e3efe8a6ecc0"> 111</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFStmt.html#a24dddb4e346a6e569908e3efe8a6ecc0">setValue</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *val)</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  {</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  value = val;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  }</div><div class="line"><a name="l00115"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a65ee8b43a3a4999eb112a197d1a9f882"> 115</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* <a class="code" href="classSVF_1_1SVFStmt.html#a65ee8b43a3a4999eb112a197d1a9f882">getValue</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFStmt.html#a6a689f62af301bd6ac09d7019aba1c17">value</a>;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  }</div><div class="line"><a name="l00119"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a852730edf374d18a3fb3985211ed7623"> 119</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFStmt.html#a852730edf374d18a3fb3985211ed7623">setBB</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *bb)</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  {</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  basicBlock = bb;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  }</div><div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a793c53e0b4f9a58099c096f0a0856495"> 123</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* <a class="code" href="classSVF_1_1SVFStmt.html#a793c53e0b4f9a58099c096f0a0856495">getBB</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFStmt.html#a877c7137875233e147faeb1198243f36">basicBlock</a>;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  }</div><div class="line"><a name="l00127"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#adb92a92f5c878576dff26cb38eab8c8c"> 127</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFStmt.html#adb92a92f5c878576dff26cb38eab8c8c">setICFGNode</a>(<a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a> *node)</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  {</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  icfgNode = node;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  }</div><div class="line"><a name="l00131"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#aa809a57c8cdaaa35dfc3cc0f3b33b52b"> 131</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* <a class="code" href="classSVF_1_1SVFStmt.html#aa809a57c8cdaaa35dfc3cc0f3b33b52b">getICFGNode</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFStmt.html#a50046a1500ec6e2819ef55162e70cc71">icfgNode</a>;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  }</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> </div><div class="line"><a name="l00138"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a3b20523aed66ac8943d7d00ff777137b"> 138</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classSVF_1_1GenericEdge.html#aab8892b73370c32b48621cd1d0cce614">GEdgeFlag</a> <a class="code" href="classSVF_1_1SVFStmt.html#a3b20523aed66ac8943d7d00ff777137b">makeEdgeFlagWithAddionalOpnd</a>(<a class="code" href="classSVF_1_1GenericEdge.html#a5aceeb48929f54264807b36569019a8a">GEdgeKind</a> k, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* var)</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  {</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  Var2LabelMap::const_iterator iter = <a class="code" href="classSVF_1_1SVFStmt.html#a24c64109d27ef7549d1c7a07c391e007">var2LabelMap</a>.find(var);</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <a class="code" href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">u64_t</a> label = (iter != <a class="code" href="classSVF_1_1SVFStmt.html#a24c64109d27ef7549d1c7a07c391e007">var2LabelMap</a>.end()) ?</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  iter->second : <a class="code" href="classSVF_1_1SVFStmt.html#a9ea22adbfc307dddee42ffec07cc88ed">multiOpndLabelCounter</a>++;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  return (label << <a class="code" href="classSVF_1_1GenericEdge.html#af1c2fd4b5ef1d7b7605572bf2489c298">EdgeKindMaskBits</a>) | k;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  }</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> </div><div class="line"><a name="l00147"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a4513c6e66b46c36219ba6d7403f3eb00"> 147</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classSVF_1_1GenericEdge.html#aab8892b73370c32b48621cd1d0cce614">GEdgeFlag</a> <a class="code" href="classSVF_1_1SVFStmt.html#a4513c6e66b46c36219ba6d7403f3eb00">makeEdgeFlagWithCallInst</a>(<a class="code" href="classSVF_1_1GenericEdge.html#a5aceeb48929f54264807b36569019a8a">GEdgeKind</a> k, <span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* cs)</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  {</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  Inst2LabelMap::const_iterator iter = <a class="code" href="classSVF_1_1SVFStmt.html#abb83549118bcd7216a053d82f7180d1c">inst2LabelMap</a>.find(cs);</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <a class="code" href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">u64_t</a> label = (iter != <a class="code" href="classSVF_1_1SVFStmt.html#abb83549118bcd7216a053d82f7180d1c">inst2LabelMap</a>.end()) ?</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  iter->second : <a class="code" href="classSVF_1_1SVFStmt.html#a24227d7f1dd472f47bf94cb5db8505c4">callEdgeLabelCounter</a>++;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  return (label << <a class="code" href="classSVF_1_1GenericEdge.html#af1c2fd4b5ef1d7b7605572bf2489c298">EdgeKindMaskBits</a>) | k;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  }</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> </div><div class="line"><a name="l00157"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#ad61722f886afaaee722ac55a4eed4d18"> 157</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classSVF_1_1GenericEdge.html#aab8892b73370c32b48621cd1d0cce614">GEdgeFlag</a> <a class="code" href="classSVF_1_1SVFStmt.html#ad61722f886afaaee722ac55a4eed4d18">makeEdgeFlagWithStoreInst</a>(<a class="code" href="classSVF_1_1GenericEdge.html#a5aceeb48929f54264807b36569019a8a">GEdgeKind</a> k, <span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* store)</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  {</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  Inst2LabelMap::const_iterator iter = <a class="code" href="classSVF_1_1SVFStmt.html#abb83549118bcd7216a053d82f7180d1c">inst2LabelMap</a>.find(store);</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <a class="code" href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">u64_t</a> label = (iter != <a class="code" href="classSVF_1_1SVFStmt.html#abb83549118bcd7216a053d82f7180d1c">inst2LabelMap</a>.end()) ?</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  iter->second : <a class="code" href="classSVF_1_1SVFStmt.html#a53b7e0d8666e37c23dc2c7d0fc931f27">storeEdgeLabelCounter</a>++;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  return (label << <a class="code" href="classSVF_1_1GenericEdge.html#af1c2fd4b5ef1d7b7605572bf2489c298">EdgeKindMaskBits</a>) | k;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  }</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> </div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1SVFStmt.html#ad0b4dbe87e009518f22360c48b0d0c22">toString</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span> </div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> </div><div class="line"><a name="l00170"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a02c04239d33d2334f5835bff50994dba"> 170</a></span>  <span class="keyword">friend</span> <a class="code" href="namespaceSVF.html#a8bd74fdcb0e58d0249003df9c3fb8b31">OutStream</a>& <a class="code" href="classSVF_1_1SVFStmt.html#a02c04239d33d2334f5835bff50994dba">operator<< </a>(<a class="code" href="namespaceSVF.html#a8bd74fdcb0e58d0249003df9c3fb8b31">OutStream</a> &o, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> &edge)</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  {</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  o << edge.<a class="code" href="classSVF_1_1SVFStmt.html#ad0b4dbe87e009518f22360c48b0d0c22">toString</a>();</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="keywordflow">return</span> o;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  }</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> </div><div class="line"><a name="l00177"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4"> 177</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1GenericNode.html#a03c6da4a73c47f84f5c5b47252bc339a">GenericNode<SVFVar,SVFStmt>::GEdgeSetTy</a> <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmtSetTy</a>;</div><div class="line"><a name="l00178"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a229c78147511f2a581c761552179b6fa"> 178</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<EdgeID, SVFStmtSetTy></a> <a class="code" href="classSVF_1_1SVFStmt.html#a229c78147511f2a581c761552179b6fa">PAGEdgeToSetMapTy</a>;</div><div class="line"><a name="l00179"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a93fc6c4c991931c78c48500c2db50f66"> 179</a></span>  <span class="keyword">typedef</span> PAGEdgeToSetMapTy <a class="code" href="classSVF_1_1SVFStmt.html#a93fc6c4c991931c78c48500c2db50f66">KindToSVFStmtMapTy</a>;</div><div class="line"><a name="l00180"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a2bdfa37167b5496629e5cae62705d5f2"> 180</a></span>  <span class="keyword">typedef</span> SVFStmtSetTy <a class="code" href="classSVF_1_1SVFStmt.html#a2bdfa37167b5496629e5cae62705d5f2">PAGEdgeSetTy</a>;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> </div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00183"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a5a3db6b1335b4adc55b961a6f480f228"> 183</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const ICFGNode*, u32_t></a> <a class="code" href="classSVF_1_1SVFStmt.html#a5a3db6b1335b4adc55b961a6f480f228">Inst2LabelMap</a>;</div><div class="line"><a name="l00184"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#ad178ccbc7800527c3dc406ad5fa069bb"> 184</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const SVFVar*, u32_t></a> <a class="code" href="classSVF_1_1SVFStmt.html#ad178ccbc7800527c3dc406ad5fa069bb">Var2LabelMap</a>;</div><div class="line"><a name="l00185"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#abb83549118bcd7216a053d82f7180d1c"> 185</a></span>  <span class="keyword">static</span> Inst2LabelMap <a class="code" href="classSVF_1_1SVFStmt.html#abb83549118bcd7216a053d82f7180d1c">inst2LabelMap</a>; </div><div class="line"><a name="l00186"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a24c64109d27ef7549d1c7a07c391e007"> 186</a></span>  <span class="keyword">static</span> Var2LabelMap <a class="code" href="classSVF_1_1SVFStmt.html#a24c64109d27ef7549d1c7a07c391e007">var2LabelMap</a>; </div><div class="line"><a name="l00187"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a24227d7f1dd472f47bf94cb5db8505c4"> 187</a></span>  <span class="keyword">static</span> <a class="code" href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">u64_t</a> <a class="code" href="classSVF_1_1SVFStmt.html#a24227d7f1dd472f47bf94cb5db8505c4">callEdgeLabelCounter</a>; </div><div class="line"><a name="l00188"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a53b7e0d8666e37c23dc2c7d0fc931f27"> 188</a></span>  <span class="keyword">static</span> <a class="code" href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">u64_t</a> <a class="code" href="classSVF_1_1SVFStmt.html#a53b7e0d8666e37c23dc2c7d0fc931f27">storeEdgeLabelCounter</a>; </div><div class="line"><a name="l00189"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a9ea22adbfc307dddee42ffec07cc88ed"> 189</a></span>  <span class="keyword">static</span> <a class="code" href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">u64_t</a> <a class="code" href="classSVF_1_1SVFStmt.html#a9ea22adbfc307dddee42ffec07cc88ed">multiOpndLabelCounter</a>; </div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> };</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span> </div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span> <span class="comment">/*</span></div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span> <span class="comment"> Parent class of Addr, Copy, Store, Load, Call, Ret, NormalGep, VariantGep, ThreadFork, ThreadJoin</span></div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span> <span class="comment"> connecting RHS expression and LHS expression with an assignment (e.g., LHSExpr = RHSExpr)</span></div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> <span class="comment"> Only one operand on the right handside of an assignment</span></div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span> <span class="comment">*/</span></div><div class="line"><a name="l00197"></a><span class="lineno"><a class="line" href="classSVF_1_1AssignStmt.html"> 197</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1AssignStmt.html">AssignStmt</a> : <span class="keyword">public</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>{</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span> </div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <a class="code" href="classSVF_1_1AssignStmt.html">AssignStmt</a>(); </div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <a class="code" href="classSVF_1_1AssignStmt.html">AssignStmt</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1AssignStmt.html">AssignStmt</a> &); </div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="keywordtype">void</span> operator=(<span class="keyword">const</span> <a class="code" href="classSVF_1_1AssignStmt.html">AssignStmt</a> &); </div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* <a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>(); </div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* <a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>(); </div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">getSrcID</a>(); </div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">getDstID</a>(); </div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span> </div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00210"></a><span class="lineno"><a class="line" href="classSVF_1_1AssignStmt.html#aff4c35109790daed3c6170c985153620"> 210</a></span>  <a class="code" href="classSVF_1_1AssignStmt.html#aff4c35109790daed3c6170c985153620">AssignStmt</a>(<a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* s, <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* d, <a class="code" href="classSVF_1_1GenericEdge.html#aab8892b73370c32b48621cd1d0cce614">GEdgeFlag</a> k) : <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>(s,d,k)</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  {</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  }</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span> </div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span> </div><div class="line"><a name="l00217"></a><span class="lineno"><a class="line" href="classSVF_1_1AssignStmt.html#a4f94b6731f324e44fc4d4e06d7acdbf7"> 217</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1AssignStmt.html#a4f94b6731f324e44fc4d4e06d7acdbf7">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1AssignStmt.html">AssignStmt</a> *)</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  {</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  }</div><div class="line"><a name="l00221"></a><span class="lineno"><a class="line" href="classSVF_1_1AssignStmt.html#ad5e2d41b8cd548628b59227368388ed0"> 221</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1AssignStmt.html#ad5e2d41b8cd548628b59227368388ed0">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *edge)</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  {</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a0a9a0f650e864e89b7cbb3dc8c8aa197">SVFStmt::Addr</a> ||</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad3469cdfb64f05163b5310b731b221da">SVFStmt::Copy</a> ||</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9aa0f700b514c431ec5329aec49df56dcc">SVFStmt::Store</a> ||</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a62ac8480c43fcc657c631ec0003b15d5">SVFStmt::Load</a> ||</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a97ca16eba4c5f92e16388f0cdbcfcc00">SVFStmt::Call</a> ||</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a8d269a45adf13e69468f0357222ab2af">SVFStmt::Ret</a> ||</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a20d960c19118d1ed319e0dbea94405e8">SVFStmt::Gep</a> ||</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a375b956af2119d7abca8f1995f7701fd">SVFStmt::ThreadFork</a> ||</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a3c3f8883c2d3b50aef6331d5da97ffb0">SVFStmt::ThreadJoin</a>;</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  }</div><div class="line"><a name="l00233"></a><span class="lineno"><a class="line" href="classSVF_1_1AssignStmt.html#a8b2837153dcf9f7e2adc3b30b2dd0245"> 233</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1AssignStmt.html#a8b2837153dcf9f7e2adc3b30b2dd0245">classof</a>(<span class="keyword">const</span> GenericPAGEdgeTy *edge)</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  {</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a0a9a0f650e864e89b7cbb3dc8c8aa197">SVFStmt::Addr</a> ||</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad3469cdfb64f05163b5310b731b221da">SVFStmt::Copy</a> ||</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9aa0f700b514c431ec5329aec49df56dcc">SVFStmt::Store</a> ||</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a62ac8480c43fcc657c631ec0003b15d5">SVFStmt::Load</a> ||</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a97ca16eba4c5f92e16388f0cdbcfcc00">SVFStmt::Call</a> ||</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a8d269a45adf13e69468f0357222ab2af">SVFStmt::Ret</a> ||</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a20d960c19118d1ed319e0dbea94405e8">SVFStmt::Gep</a> ||</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a375b956af2119d7abca8f1995f7701fd">SVFStmt::ThreadFork</a> ||</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a3c3f8883c2d3b50aef6331d5da97ffb0">SVFStmt::ThreadJoin</a>;</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  }</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span> </div><div class="line"><a name="l00247"></a><span class="lineno"><a class="line" href="classSVF_1_1AssignStmt.html#ad03d28d16754c9049dd4d0ad3b6c1e28"> 247</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* <a class="code" href="classSVF_1_1AssignStmt.html#ad03d28d16754c9049dd4d0ad3b6c1e28">getRHSVar</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">SVFStmt::getSrcNode</a>();</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  } </div><div class="line"><a name="l00250"></a><span class="lineno"><a class="line" href="classSVF_1_1AssignStmt.html#a973a2b79da223275ed6a1831837b89c7"> 250</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* <a class="code" href="classSVF_1_1AssignStmt.html#a973a2b79da223275ed6a1831837b89c7">getLHSVar</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">SVFStmt::getDstNode</a>();</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  } </div><div class="line"><a name="l00253"></a><span class="lineno"><a class="line" href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d"> 253</a></span>  <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d">getRHSVarID</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">SVFStmt::getSrcID</a>();</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  } </div><div class="line"><a name="l00256"></a><span class="lineno"><a class="line" href="classSVF_1_1AssignStmt.html#a98f731be7be9bc8e7fd09f5c2204c840"> 256</a></span>  <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1AssignStmt.html#a98f731be7be9bc8e7fd09f5c2204c840">getLHSVarID</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">SVFStmt::getDstID</a>();</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  } </div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span> </div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1SVFStmt.html#ad0b4dbe87e009518f22360c48b0d0c22">toString</a>() <span class="keyword">const</span> = 0;</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span> };</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span> </div><div class="line"><a name="l00266"></a><span class="lineno"><a class="line" href="classSVF_1_1AddrStmt.html"> 266</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1AddrStmt.html">AddrStmt</a>: <span class="keyword">public</span> <a class="code" href="classSVF_1_1AssignStmt.html">AssignStmt</a></div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span> {</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  <a class="code" href="classSVF_1_1AddrStmt.html">AddrStmt</a>(); </div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  <a class="code" href="classSVF_1_1AddrStmt.html">AddrStmt</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1AddrStmt.html">AddrStmt</a> &); </div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  <span class="keywordtype">void</span> operator=(<span class="keyword">const</span> <a class="code" href="classSVF_1_1AddrStmt.html">AddrStmt</a> &); </div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span> </div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span> </div><div class="line"><a name="l00276"></a><span class="lineno"><a class="line" href="classSVF_1_1AddrStmt.html#a32e129c9f7aa16be8c5c8569989f691f"> 276</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1AddrStmt.html#a32e129c9f7aa16be8c5c8569989f691f">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1AddrStmt.html">AddrStmt</a> *)</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  {</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  }</div><div class="line"><a name="l00280"></a><span class="lineno"><a class="line" href="classSVF_1_1AddrStmt.html#aeec83dc4e79ee62c92c75aa778a475ad"> 280</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1AddrStmt.html#aeec83dc4e79ee62c92c75aa778a475ad">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *edge)</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  {</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a0a9a0f650e864e89b7cbb3dc8c8aa197">SVFStmt::Addr</a>;</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  }</div><div class="line"><a name="l00284"></a><span class="lineno"><a class="line" href="classSVF_1_1AddrStmt.html#a6876ffc2c97c5ba64155891b55a7884c"> 284</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1AddrStmt.html#a6876ffc2c97c5ba64155891b55a7884c">classof</a>(<span class="keyword">const</span> GenericPAGEdgeTy *edge)</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  {</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a0a9a0f650e864e89b7cbb3dc8c8aa197">SVFStmt::Addr</a>;</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  }</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span> </div><div class="line"><a name="l00291"></a><span class="lineno"><a class="line" href="classSVF_1_1AddrStmt.html#a42caa75acb42ce8e290c1278622f139c"> 291</a></span>  <a class="code" href="classSVF_1_1AddrStmt.html#a42caa75acb42ce8e290c1278622f139c">AddrStmt</a>(<a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* s, <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* d) : <a class="code" href="classSVF_1_1AssignStmt.html">AssignStmt</a>(s,d,<a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>::<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a0a9a0f650e864e89b7cbb3dc8c8aa197">Addr</a>)</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  {</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  }</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span> </div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1SVFStmt.html#ad0b4dbe87e009518f22360c48b0d0c22">toString</a>() <span class="keyword">const override</span>;</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span> };</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span> </div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span> </div><div class="line"><a name="l00302"></a><span class="lineno"><a class="line" href="classSVF_1_1CopyStmt.html"> 302</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1CopyStmt.html">CopyStmt</a>: <span class="keyword">public</span> <a class="code" href="classSVF_1_1AssignStmt.html">AssignStmt</a></div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span> {</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  <a class="code" href="classSVF_1_1CopyStmt.html">CopyStmt</a>(); </div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  <a class="code" href="classSVF_1_1CopyStmt.html">CopyStmt</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CopyStmt.html">CopyStmt</a> &); </div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  <span class="keywordtype">void</span> operator=(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CopyStmt.html">CopyStmt</a> &); </div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span> </div><div class="line"><a name="l00311"></a><span class="lineno"><a class="line" href="classSVF_1_1CopyStmt.html#a253c81c922bef6e2d520262c2f7793c4"> 311</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CopyStmt.html#a253c81c922bef6e2d520262c2f7793c4">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CopyStmt.html">CopyStmt</a> *)</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  {</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  }</div><div class="line"><a name="l00315"></a><span class="lineno"><a class="line" href="classSVF_1_1CopyStmt.html#a5e883bb0bc30cf8b7d325b66f7a42848"> 315</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CopyStmt.html#a5e883bb0bc30cf8b7d325b66f7a42848">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *edge)</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  {</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad3469cdfb64f05163b5310b731b221da">SVFStmt::Copy</a>;</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  }</div><div class="line"><a name="l00319"></a><span class="lineno"><a class="line" href="classSVF_1_1CopyStmt.html#a12e960569a9f4beae99195a0fe2d3b68"> 319</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CopyStmt.html#a12e960569a9f4beae99195a0fe2d3b68">classof</a>(<span class="keyword">const</span> GenericPAGEdgeTy *edge)</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  {</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad3469cdfb64f05163b5310b731b221da">SVFStmt::Copy</a>;</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  }</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span> </div><div class="line"><a name="l00326"></a><span class="lineno"><a class="line" href="classSVF_1_1CopyStmt.html#a69b179ef052408034786d32a52c52389"> 326</a></span>  <a class="code" href="classSVF_1_1CopyStmt.html#a69b179ef052408034786d32a52c52389">CopyStmt</a>(<a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* s, <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* d) : <a class="code" href="classSVF_1_1AssignStmt.html">AssignStmt</a>(s,d,<a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>::<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad3469cdfb64f05163b5310b731b221da">Copy</a>)</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  {</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  }</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span> </div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1SVFStmt.html#ad0b4dbe87e009518f22360c48b0d0c22">toString</a>() <span class="keyword">const override</span>;</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span> };</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span> </div><div class="line"><a name="l00336"></a><span class="lineno"><a class="line" href="classSVF_1_1StoreStmt.html"> 336</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1StoreStmt.html">StoreStmt</a>: <span class="keyword">public</span> <a class="code" href="classSVF_1_1AssignStmt.html">AssignStmt</a></div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span> {</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  <a class="code" href="classSVF_1_1StoreStmt.html">StoreStmt</a>(); </div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  <a class="code" href="classSVF_1_1StoreStmt.html">StoreStmt</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1StoreStmt.html">StoreStmt</a> &); </div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  <span class="keywordtype">void</span> operator=(<span class="keyword">const</span> <a class="code" href="classSVF_1_1StoreStmt.html">StoreStmt</a> &); </div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span> </div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span> </div><div class="line"><a name="l00346"></a><span class="lineno"><a class="line" href="classSVF_1_1StoreStmt.html#ae3c219e8af92e222f55c930009db6e67"> 346</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1StoreStmt.html#ae3c219e8af92e222f55c930009db6e67">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1StoreStmt.html">StoreStmt</a> *)</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  {</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  }</div><div class="line"><a name="l00350"></a><span class="lineno"><a class="line" href="classSVF_1_1StoreStmt.html#a31f69e402887eff60e2055799ed561b9"> 350</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1StoreStmt.html#a31f69e402887eff60e2055799ed561b9">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *edge)</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  {</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9aa0f700b514c431ec5329aec49df56dcc">SVFStmt::Store</a>;</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  }</div><div class="line"><a name="l00354"></a><span class="lineno"><a class="line" href="classSVF_1_1StoreStmt.html#ab71bf959fce0e702556dd753636298b2"> 354</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1StoreStmt.html#ab71bf959fce0e702556dd753636298b2">classof</a>(<span class="keyword">const</span> GenericPAGEdgeTy *edge)</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  {</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9aa0f700b514c431ec5329aec49df56dcc">SVFStmt::Store</a>;</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  }</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span> </div><div class="line"><a name="l00361"></a><span class="lineno"><a class="line" href="classSVF_1_1StoreStmt.html#a39ee0d8cc951aff0d6418a3d743fb3ae"> 361</a></span>  <a class="code" href="classSVF_1_1StoreStmt.html#a39ee0d8cc951aff0d6418a3d743fb3ae">StoreStmt</a>(<a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* s, <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* d, <span class="keyword">const</span> <a class="code" href="classSVF_1_1IntraICFGNode.html">IntraICFGNode</a>* st) :</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  <a class="code" href="classSVF_1_1AssignStmt.html">AssignStmt</a>(s, d, <a class="code" href="classSVF_1_1SVFStmt.html#ad61722f886afaaee722ac55a4eed4d18">makeEdgeFlagWithStoreInst</a>(<a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>::<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9aa0f700b514c431ec5329aec49df56dcc">Store</a>, st))</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  {</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  }</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span> </div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1SVFStmt.html#ad0b4dbe87e009518f22360c48b0d0c22">toString</a>() <span class="keyword">const override</span>;</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span> };</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span> </div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span> </div><div class="line"><a name="l00373"></a><span class="lineno"><a class="line" href="classSVF_1_1LoadStmt.html"> 373</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a>: <span class="keyword">public</span> <a class="code" href="classSVF_1_1AssignStmt.html">AssignStmt</a></div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span> {</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  <a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a>(); </div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  <a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a> &); </div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  <span class="keywordtype">void</span> operator=(<span class="keyword">const</span> <a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a> &); </div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span> </div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span> </div><div class="line"><a name="l00383"></a><span class="lineno"><a class="line" href="classSVF_1_1LoadStmt.html#a03d6f1ee2f52b34d905b204eb53d6560"> 383</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LoadStmt.html#a03d6f1ee2f52b34d905b204eb53d6560">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a> *)</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  {</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  }</div><div class="line"><a name="l00387"></a><span class="lineno"><a class="line" href="classSVF_1_1LoadStmt.html#ac252b1e9b7c01108d1aff602fbe1ef40"> 387</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LoadStmt.html#ac252b1e9b7c01108d1aff602fbe1ef40">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *edge)</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  {</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a62ac8480c43fcc657c631ec0003b15d5">SVFStmt::Load</a>;</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  }</div><div class="line"><a name="l00391"></a><span class="lineno"><a class="line" href="classSVF_1_1LoadStmt.html#ab30f370a8a2a3e63765c1e4843f07826"> 391</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LoadStmt.html#ab30f370a8a2a3e63765c1e4843f07826">classof</a>(<span class="keyword">const</span> GenericPAGEdgeTy *edge)</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  {</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a62ac8480c43fcc657c631ec0003b15d5">SVFStmt::Load</a>;</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  }</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span> </div><div class="line"><a name="l00398"></a><span class="lineno"><a class="line" href="classSVF_1_1LoadStmt.html#a92c5817abfaa1f6fbc9ee911f458dfb2"> 398</a></span>  <a class="code" href="classSVF_1_1LoadStmt.html#a92c5817abfaa1f6fbc9ee911f458dfb2">LoadStmt</a>(<a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* s, <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* d) : <a class="code" href="classSVF_1_1AssignStmt.html">AssignStmt</a>(s,d,<a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>::<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a62ac8480c43fcc657c631ec0003b15d5">Load</a>)</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  {</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  }</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span> </div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1SVFStmt.html#ad0b4dbe87e009518f22360c48b0d0c22">toString</a>() <span class="keyword">const override</span>;</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span> };</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span> </div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span> </div><div class="line"><a name="l00409"></a><span class="lineno"><a class="line" href="classSVF_1_1GepStmt.html"> 409</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1GepStmt.html">GepStmt</a>: <span class="keyword">public</span> <a class="code" href="classSVF_1_1AssignStmt.html">AssignStmt</a></div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span> {</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  <a class="code" href="classSVF_1_1GepStmt.html">GepStmt</a>(); </div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  <a class="code" href="classSVF_1_1GepStmt.html">GepStmt</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1GepStmt.html">GepStmt</a> &); </div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  <span class="keywordtype">void</span> operator=(<span class="keyword">const</span> <a class="code" href="classSVF_1_1GepStmt.html">GepStmt</a> &); </div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span> </div><div class="line"><a name="l00416"></a><span class="lineno"><a class="line" href="classSVF_1_1GepStmt.html#a543a3f4801b22719f7b9677246bf2ac7"> 416</a></span>  <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a> <a class="code" href="classSVF_1_1GepStmt.html#a543a3f4801b22719f7b9677246bf2ac7">ls</a>; </div><div class="line"><a name="l00417"></a><span class="lineno"><a class="line" href="classSVF_1_1GepStmt.html#af8eefbd002ec36f36612b8e9ccdbc757"> 417</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1GepStmt.html#af8eefbd002ec36f36612b8e9ccdbc757">variantField</a>; </div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span> </div><div class="line"><a name="l00421"></a><span class="lineno"><a class="line" href="classSVF_1_1GepStmt.html#a441cd8487b320ceff9d62884b4f28176"> 421</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1GepStmt.html#a441cd8487b320ceff9d62884b4f28176">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1GepStmt.html">GepStmt</a> *)</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  {</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  }</div><div class="line"><a name="l00425"></a><span class="lineno"><a class="line" href="classSVF_1_1GepStmt.html#a92016e7d6061e4a157c9cd39ad94cc20"> 425</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1GepStmt.html#a92016e7d6061e4a157c9cd39ad94cc20">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *edge)</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  {</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a20d960c19118d1ed319e0dbea94405e8">SVFStmt::Gep</a>;</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  }</div><div class="line"><a name="l00429"></a><span class="lineno"><a class="line" href="classSVF_1_1GepStmt.html#ac47064e21e2afdf7bd85c6acba44367f"> 429</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1GepStmt.html#ac47064e21e2afdf7bd85c6acba44367f">classof</a>(<span class="keyword">const</span> GenericPAGEdgeTy *edge)</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  {</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a20d960c19118d1ed319e0dbea94405e8">SVFStmt::Gep</a>;</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  }</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span> </div><div class="line"><a name="l00435"></a><span class="lineno"><a class="line" href="classSVF_1_1GepStmt.html#abec33091e0dac0cdd5b95b6d7b0db3d8"> 435</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>& <a class="code" href="classSVF_1_1GepStmt.html#abec33091e0dac0cdd5b95b6d7b0db3d8">getLocationSet</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  <span class="keywordflow">return</span> ls;</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  }</div><div class="line"><a name="l00439"></a><span class="lineno"><a class="line" href="classSVF_1_1GepStmt.html#a37811e62495493454405cb33e4a2b904"> 439</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html#a9bb7e08f7cfb2859d25b0e68e21fec89">LocationSet::OffsetValueVec</a>& <a class="code" href="classSVF_1_1GepStmt.html#a37811e62495493454405cb33e4a2b904">getOffsetValueVec</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  <span class="keywordflow">return</span> getLocationSet().getOffsetValueVec();</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  }</div><div class="line"><a name="l00444"></a><span class="lineno"><a class="line" href="classSVF_1_1GepStmt.html#ab6f37c073e4755c4b8bb3ed6365687f4"> 444</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1GepStmt.html#ab6f37c073e4755c4b8bb3ed6365687f4">isConstantOffset</a>()<span class="keyword"> const</span>{</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  <span class="keywordflow">return</span> getLocationSet().isConstantOffset();</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  }</div><div class="line"><a name="l00448"></a><span class="lineno"><a class="line" href="classSVF_1_1GepStmt.html#a33b3b9ef0cf7e2ea6400aef74a399adf"> 448</a></span>  <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a> <a class="code" href="classSVF_1_1GepStmt.html#a33b3b9ef0cf7e2ea6400aef74a399adf">accumulateConstantOffset</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  <span class="keywordflow">return</span> getLocationSet().accumulateConstantOffset();</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  }</div><div class="line"><a name="l00453"></a><span class="lineno"><a class="line" href="classSVF_1_1GepStmt.html#adf6912f8ddae4f765b685a4f9d3be602"> 453</a></span>  <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a> <a class="code" href="classSVF_1_1GepStmt.html#adf6912f8ddae4f765b685a4f9d3be602">getConstantFieldIdx</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(isVariantFieldGep()==<span class="keyword">false</span> && <span class="stringliteral">"Can't retrieve the LocationSet if using a variable field index (pointer arithmetic) for struct field access "</span>);</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  <span class="keywordflow">return</span> getLocationSet().accumulateConstantFieldIdx();</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  }</div><div class="line"><a name="l00459"></a><span class="lineno"><a class="line" href="classSVF_1_1GepStmt.html#a0ddf180a0f7ba64fc8655687910e3788"> 459</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1GepStmt.html#a0ddf180a0f7ba64fc8655687910e3788">isVariantFieldGep</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  <span class="keywordflow">return</span> variantField;</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  } </div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span> </div><div class="line"><a name="l00465"></a><span class="lineno"><a class="line" href="classSVF_1_1GepStmt.html#ae4509ee7b57121da3c67de00e8bdf0b3"> 465</a></span>  <a class="code" href="classSVF_1_1GepStmt.html#ae4509ee7b57121da3c67de00e8bdf0b3">GepStmt</a>(<a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* s, <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* d, <span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>& l, <span class="keywordtype">bool</span> varfld=<span class="keyword">false</span>) : <a class="code" href="classSVF_1_1AssignStmt.html">AssignStmt</a>(s,d,<a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>::<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a20d960c19118d1ed319e0dbea94405e8">Gep</a>), ls(l), variantField(varfld)</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  {</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  }</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span> </div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1SVFStmt.html#ad0b4dbe87e009518f22360c48b0d0c22">toString</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span> </div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span> };</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span> </div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span> </div><div class="line"><a name="l00477"></a><span class="lineno"><a class="line" href="classSVF_1_1CallPE.html"> 477</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1CallPE.html">CallPE</a>: <span class="keyword">public</span> <a class="code" href="classSVF_1_1AssignStmt.html">AssignStmt</a></div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span> {</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  <a class="code" href="classSVF_1_1CallPE.html">CallPE</a>(); </div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  <a class="code" href="classSVF_1_1CallPE.html">CallPE</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallPE.html">CallPE</a> &); </div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  <span class="keywordtype">void</span> operator=(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallPE.html">CallPE</a> &); </div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span> </div><div class="line"><a name="l00484"></a><span class="lineno"><a class="line" href="classSVF_1_1CallPE.html#ace0704c65aa3637c50ff880f68808bba"> 484</a></span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* <a class="code" href="classSVF_1_1CallPE.html#ace0704c65aa3637c50ff880f68808bba">call</a>; </div><div class="line"><a name="l00485"></a><span class="lineno"><a class="line" href="classSVF_1_1CallPE.html#a88e420e259b8d7d34c9850ddde53d372"> 485</a></span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1FunEntryICFGNode.html">FunEntryICFGNode</a>* <a class="code" href="classSVF_1_1CallPE.html#a88e420e259b8d7d34c9850ddde53d372">entry</a>; </div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span> </div><div class="line"><a name="l00489"></a><span class="lineno"><a class="line" href="classSVF_1_1CallPE.html#a6df0149f79122c5a7d517f75d0235e73"> 489</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CallPE.html#a6df0149f79122c5a7d517f75d0235e73">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallPE.html">CallPE</a> *)</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  {</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  }</div><div class="line"><a name="l00493"></a><span class="lineno"><a class="line" href="classSVF_1_1CallPE.html#a188c51f3e378c451d34e90c96cca0cf5"> 493</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CallPE.html#a188c51f3e378c451d34e90c96cca0cf5">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *edge)</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  {</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a97ca16eba4c5f92e16388f0cdbcfcc00">SVFStmt::Call</a></div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  || edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a375b956af2119d7abca8f1995f7701fd">SVFStmt::ThreadFork</a>;</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>  }</div><div class="line"><a name="l00498"></a><span class="lineno"><a class="line" href="classSVF_1_1CallPE.html#a0d89c20d1d3ccee5f3e45a32085117aa"> 498</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CallPE.html#a0d89c20d1d3ccee5f3e45a32085117aa">classof</a>(<span class="keyword">const</span> GenericPAGEdgeTy *edge)</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  {</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a97ca16eba4c5f92e16388f0cdbcfcc00">SVFStmt::Call</a></div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  || edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a375b956af2119d7abca8f1995f7701fd">SVFStmt::ThreadFork</a>;</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>  }</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span> </div><div class="line"><a name="l00506"></a><span class="lineno"><a class="line" href="classSVF_1_1CallPE.html#a6b907624482ae697680c747e9b41fdab"> 506</a></span>  <a class="code" href="classSVF_1_1CallPE.html#a6b907624482ae697680c747e9b41fdab">CallPE</a>(<a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* s, <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* d, <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* i, <span class="keyword">const</span> <a class="code" href="classSVF_1_1FunEntryICFGNode.html">FunEntryICFGNode</a>* e, <a class="code" href="classSVF_1_1GenericEdge.html#a5aceeb48929f54264807b36569019a8a">GEdgeKind</a> k = <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a97ca16eba4c5f92e16388f0cdbcfcc00">SVFStmt::Call</a>) :</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  <a class="code" href="classSVF_1_1AssignStmt.html">AssignStmt</a>(s,d,<a class="code" href="classSVF_1_1SVFStmt.html#a4513c6e66b46c36219ba6d7403f3eb00">makeEdgeFlagWithCallInst</a>(k,i)), call(i), entry(e)</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  {</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  }</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span> </div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span> </div><div class="line"><a name="l00513"></a><span class="lineno"><a class="line" href="classSVF_1_1CallPE.html#aa50cca8bd91ffb135a7998b58ad7966f"> 513</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* <a class="code" href="classSVF_1_1CallPE.html#aa50cca8bd91ffb135a7998b58ad7966f">getCallInst</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  <span class="keywordflow">return</span> call;</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  }</div><div class="line"><a name="l00517"></a><span class="lineno"><a class="line" href="classSVF_1_1CallPE.html#ab548c22dfbfeeaeb8ffe83417b396c09"> 517</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* <a class="code" href="classSVF_1_1CallPE.html#ab548c22dfbfeeaeb8ffe83417b396c09">getCallSite</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  <span class="keywordflow">return</span> call;</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>  }</div><div class="line"><a name="l00521"></a><span class="lineno"><a class="line" href="classSVF_1_1CallPE.html#a9c9821c4e7dd031e3f82f2b29427e53e"> 521</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1FunEntryICFGNode.html">FunEntryICFGNode</a>* <a class="code" href="classSVF_1_1CallPE.html#a9c9821c4e7dd031e3f82f2b29427e53e">getFunEntryICFGNode</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  <span class="keywordflow">return</span> <a class="code" href="cuddInt_8c.html#a936a27e51e66afb57c2b3a12d78a238e">entry</a>;</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>  }</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span> </div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1SVFStmt.html#ad0b4dbe87e009518f22360c48b0d0c22">toString</a>() <span class="keyword">const override</span>;</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span> };</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span> </div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span> </div><div class="line"><a name="l00534"></a><span class="lineno"><a class="line" href="classSVF_1_1RetPE.html"> 534</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1RetPE.html">RetPE</a>: <span class="keyword">public</span> <a class="code" href="classSVF_1_1AssignStmt.html">AssignStmt</a></div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span> {</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>  <a class="code" href="classSVF_1_1RetPE.html">RetPE</a>(); </div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  <a class="code" href="classSVF_1_1RetPE.html">RetPE</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1RetPE.html">RetPE</a> &); </div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>  <span class="keywordtype">void</span> operator=(<span class="keyword">const</span> <a class="code" href="classSVF_1_1RetPE.html">RetPE</a> &); </div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span> </div><div class="line"><a name="l00541"></a><span class="lineno"><a class="line" href="classSVF_1_1RetPE.html#aa2d42edfce9d5a8c025c0bb529aee0f2"> 541</a></span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* <a class="code" href="classSVF_1_1RetPE.html#aa2d42edfce9d5a8c025c0bb529aee0f2">call</a>; </div><div class="line"><a name="l00542"></a><span class="lineno"><a class="line" href="classSVF_1_1RetPE.html#a6f6ccda153150b6acdd81550e45f640f"> 542</a></span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1FunExitICFGNode.html">FunExitICFGNode</a>* <a class="code" href="classSVF_1_1RetPE.html#a6f6ccda153150b6acdd81550e45f640f">exit</a>; </div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span> </div><div class="line"><a name="l00546"></a><span class="lineno"><a class="line" href="classSVF_1_1RetPE.html#a43c6965616d67e77087b486265139d21"> 546</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1RetPE.html#a43c6965616d67e77087b486265139d21">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1RetPE.html">RetPE</a> *)</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>  {</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>  }</div><div class="line"><a name="l00550"></a><span class="lineno"><a class="line" href="classSVF_1_1RetPE.html#a9cd78a723ed55ed6f334a329576a7471"> 550</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1RetPE.html#a9cd78a723ed55ed6f334a329576a7471">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *edge)</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>  {</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a8d269a45adf13e69468f0357222ab2af">SVFStmt::Ret</a></div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>  || edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a3c3f8883c2d3b50aef6331d5da97ffb0">SVFStmt::ThreadJoin</a>;</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>  }</div><div class="line"><a name="l00555"></a><span class="lineno"><a class="line" href="classSVF_1_1RetPE.html#a2f0121f26e79fe3766cba93b42dc1119"> 555</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1RetPE.html#a2f0121f26e79fe3766cba93b42dc1119">classof</a>(<span class="keyword">const</span> GenericPAGEdgeTy *edge)</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>  {</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a8d269a45adf13e69468f0357222ab2af">SVFStmt::Ret</a></div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>  || edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a3c3f8883c2d3b50aef6331d5da97ffb0">SVFStmt::ThreadJoin</a>;</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>  }</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span> </div><div class="line"><a name="l00563"></a><span class="lineno"><a class="line" href="classSVF_1_1RetPE.html#a60cb8a19e352547b22f197f4ca8e19d8"> 563</a></span>  <a class="code" href="classSVF_1_1RetPE.html#a60cb8a19e352547b22f197f4ca8e19d8">RetPE</a>(<a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* s, <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* d, <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* i, <span class="keyword">const</span> <a class="code" href="classSVF_1_1FunExitICFGNode.html">FunExitICFGNode</a>* e, <a class="code" href="classSVF_1_1GenericEdge.html#a5aceeb48929f54264807b36569019a8a">GEdgeKind</a> k = <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a8d269a45adf13e69468f0357222ab2af">SVFStmt::Ret</a>) :</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>  <a class="code" href="classSVF_1_1AssignStmt.html">AssignStmt</a>(s,d,<a class="code" href="classSVF_1_1SVFStmt.html#a4513c6e66b46c36219ba6d7403f3eb00">makeEdgeFlagWithCallInst</a>(k,i)), call(i), exit(e)</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  {</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>  }</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span> </div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span> </div><div class="line"><a name="l00570"></a><span class="lineno"><a class="line" href="classSVF_1_1RetPE.html#a9bbf558ffc8e3c1136e20d18d4c95f42"> 570</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* <a class="code" href="classSVF_1_1RetPE.html#a9bbf558ffc8e3c1136e20d18d4c95f42">getCallInst</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>  <span class="keywordflow">return</span> call;</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>  }</div><div class="line"><a name="l00574"></a><span class="lineno"><a class="line" href="classSVF_1_1RetPE.html#ab03f10c0375846a733f3257736a84f9d"> 574</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* <a class="code" href="classSVF_1_1RetPE.html#ab03f10c0375846a733f3257736a84f9d">getCallSite</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>  <span class="keywordflow">return</span> call;</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>  }</div><div class="line"><a name="l00578"></a><span class="lineno"><a class="line" href="classSVF_1_1RetPE.html#a274adbd91750d8d6de8ba997285c1c49"> 578</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1FunExitICFGNode.html">FunExitICFGNode</a>* <a class="code" href="classSVF_1_1RetPE.html#a274adbd91750d8d6de8ba997285c1c49">getFunExitICFGNode</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>  <span class="keywordflow">return</span> <a class="code" href="util_8h.html#a43b6ea6be735bb828bc062c70cadeff8">exit</a>;</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>  }</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span> </div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1SVFStmt.html#ad0b4dbe87e009518f22360c48b0d0c22">toString</a>() <span class="keyword">const override</span>;</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span> };</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span> </div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span> <span class="comment">/*</span></div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span> <span class="comment">* Program statements with multiple operands including BinaryOPStmt, CmpStmt and PhiStmt</span></div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span> <span class="comment">*/</span></div><div class="line"><a name="l00590"></a><span class="lineno"><a class="line" href="classSVF_1_1MultiOpndStmt.html"> 590</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1MultiOpndStmt.html">MultiOpndStmt</a> : <span class="keyword">public</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>{</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00592"></a><span class="lineno"><a class="line" href="classSVF_1_1MultiOpndStmt.html#acf8c7cfbf1c8baab672040635bb9a007"> 592</a></span>  <span class="keyword">typedef</span> std::vector<SVFVar*> <a class="code" href="classSVF_1_1MultiOpndStmt.html#acf8c7cfbf1c8baab672040635bb9a007">OPVars</a>;</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>  <a class="code" href="classSVF_1_1MultiOpndStmt.html">MultiOpndStmt</a>(); </div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>  <a class="code" href="classSVF_1_1MultiOpndStmt.html">MultiOpndStmt</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MultiOpndStmt.html">MultiOpndStmt</a> &); </div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>  <span class="keywordtype">void</span> operator=(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MultiOpndStmt.html">MultiOpndStmt</a> &); </div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>  <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* <a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>(); </div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>  <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* <a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>(); </div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">getSrcID</a>(); </div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">getDstID</a>(); </div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span> </div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00603"></a><span class="lineno"><a class="line" href="classSVF_1_1MultiOpndStmt.html#a172025849492f4de8f87564ef08f5880"> 603</a></span>  OPVars <a class="code" href="classSVF_1_1MultiOpndStmt.html#a172025849492f4de8f87564ef08f5880">opVars</a>;</div><div class="line"><a name="l00605"></a><span class="lineno"><a class="line" href="classSVF_1_1MultiOpndStmt.html#aad0c81aeb48e5d94dd8c60d87b41714c"> 605</a></span>  <a class="code" href="classSVF_1_1MultiOpndStmt.html#aad0c81aeb48e5d94dd8c60d87b41714c">MultiOpndStmt</a>(<a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* r, <span class="keyword">const</span> OPVars& opnds, <a class="code" href="classSVF_1_1GenericEdge.html#aab8892b73370c32b48621cd1d0cce614">GEdgeFlag</a> k): <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>(opnds.at(0), r, k), opVars(opnds)</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>  {</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>  }</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span> </div><div class="line"><a name="l00611"></a><span class="lineno"><a class="line" href="classSVF_1_1MultiOpndStmt.html#aa0d9a26d3ad17432505b1f5bb36368d9"> 611</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MultiOpndStmt.html#aa0d9a26d3ad17432505b1f5bb36368d9">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MultiOpndStmt.html">MultiOpndStmt</a> *)</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>  {</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>  }</div><div class="line"><a name="l00615"></a><span class="lineno"><a class="line" href="classSVF_1_1MultiOpndStmt.html#a5de8ff8363cb3f0b1427b69aa1058470"> 615</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MultiOpndStmt.html#a5de8ff8363cb3f0b1427b69aa1058470">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *node)</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>  {</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>  <span class="keywordflow">return</span> node-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a6b3cd98eeb47c8475e7ee64480dcdee9">Phi</a> ||</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>  node-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad9397ec243a61992dc2b5681bea587fa">Select</a> ||</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>  node-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad58f5e59c55e1ffd23b83d16224fed13">BinaryOp</a> ||</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>  node-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a610d6662d1814cffbf23db29e7e620c0">Cmp</a>;</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>  }</div><div class="line"><a name="l00622"></a><span class="lineno"><a class="line" href="classSVF_1_1MultiOpndStmt.html#ad20128715a7aaf173d60fe8f14575678"> 622</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MultiOpndStmt.html#ad20128715a7aaf173d60fe8f14575678">classof</a>(<span class="keyword">const</span> GenericPAGEdgeTy *node)</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>  {</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>  <span class="keywordflow">return</span> node-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a6b3cd98eeb47c8475e7ee64480dcdee9">Phi</a> ||</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>  node-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad9397ec243a61992dc2b5681bea587fa">Select</a> ||</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>  node-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad58f5e59c55e1ffd23b83d16224fed13">BinaryOp</a> ||</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>  node-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a610d6662d1814cffbf23db29e7e620c0">Cmp</a>;</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>  }</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span> </div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* getOpVar(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> pos)<span class="keyword"> const</span></div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>  <span class="keywordflow">return</span> opVars.at(pos);</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>  }</div><div class="line"><a name="l00638"></a><span class="lineno"><a class="line" href="classSVF_1_1MultiOpndStmt.html#a00a14ad8f49912b876fd9d729fea4601"> 638</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* <a class="code" href="classSVF_1_1MultiOpndStmt.html#a00a14ad8f49912b876fd9d729fea4601">getRes</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">SVFStmt::getDstNode</a>();</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>  }</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span> </div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> getOpVarID(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> pos) <span class="keyword">const</span>;</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> getResID() <span class="keyword">const</span>;</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span> </div><div class="line"><a name="l00646"></a><span class="lineno"><a class="line" href="classSVF_1_1MultiOpndStmt.html#af300571886b7aa2d84b0a70851c99bc3"> 646</a></span>  <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1MultiOpndStmt.html#af300571886b7aa2d84b0a70851c99bc3">getOpVarNum</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>  <span class="keywordflow">return</span> opVars.size();</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>  }</div><div class="line"><a name="l00650"></a><span class="lineno"><a class="line" href="classSVF_1_1MultiOpndStmt.html#a0441f2646fed28830439c41a0704ed4b"> 650</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> OPVars& <a class="code" href="classSVF_1_1MultiOpndStmt.html#a0441f2646fed28830439c41a0704ed4b">getOpndVars</a>()<span class="keyword"> const</span>{</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>  <span class="keywordflow">return</span> opVars;</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>  }</div><div class="line"><a name="l00653"></a><span class="lineno"><a class="line" href="classSVF_1_1MultiOpndStmt.html#abebed8985cb4d4d1361c42e5454c90b9"> 653</a></span>  <span class="keyword">inline</span> OPVars::const_iterator <a class="code" href="classSVF_1_1MultiOpndStmt.html#abebed8985cb4d4d1361c42e5454c90b9">opVarBegin</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>  <span class="keywordflow">return</span> opVars.begin();</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>  }</div><div class="line"><a name="l00657"></a><span class="lineno"><a class="line" href="classSVF_1_1MultiOpndStmt.html#ad53097d07487d564e7d13f9d7d9ab10c"> 657</a></span>  <span class="keyword">inline</span> OPVars::const_iterator <a class="code" href="classSVF_1_1MultiOpndStmt.html#ad53097d07487d564e7d13f9d7d9ab10c">opVerEnd</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>  <span class="keywordflow">return</span> opVars.end();</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>  }</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span> };</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span> </div><div class="line"><a name="l00668"></a><span class="lineno"><a class="line" href="classSVF_1_1PhiStmt.html"> 668</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1PhiStmt.html">PhiStmt</a>: <span class="keyword">public</span> <a class="code" href="classSVF_1_1MultiOpndStmt.html">MultiOpndStmt</a></div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span> {</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00671"></a><span class="lineno"><a class="line" href="classSVF_1_1PhiStmt.html#ac505a4fe33e82f555663872e81220ba4"> 671</a></span>  <span class="keyword">typedef</span> std::vector<const ICFGNode* > <a class="code" href="classSVF_1_1PhiStmt.html#ac505a4fe33e82f555663872e81220ba4">OpICFGNodeVec</a>;</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span> </div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>  <a class="code" href="classSVF_1_1PhiStmt.html">PhiStmt</a>(); </div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>  <a class="code" href="classSVF_1_1PhiStmt.html">PhiStmt</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PhiStmt.html">PhiStmt</a> &); </div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>  <span class="keywordtype">void</span> operator=(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PhiStmt.html">PhiStmt</a> &); </div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span> </div><div class="line"><a name="l00678"></a><span class="lineno"><a class="line" href="classSVF_1_1PhiStmt.html#a4c75a8f8430621aaec62a5189db136b5"> 678</a></span>  OpICFGNodeVec <a class="code" href="classSVF_1_1PhiStmt.html#a4c75a8f8430621aaec62a5189db136b5">opICFGNodes</a>;</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span> </div><div class="line"><a name="l00682"></a><span class="lineno"><a class="line" href="classSVF_1_1PhiStmt.html#abb620d35e77989c2f7f9ed480e5fa1e9"> 682</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PhiStmt.html#abb620d35e77989c2f7f9ed480e5fa1e9">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PhiStmt.html">PhiStmt</a> *)</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>  {</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>  }</div><div class="line"><a name="l00686"></a><span class="lineno"><a class="line" href="classSVF_1_1PhiStmt.html#ac214292370d79324f6da8624fe2c7139"> 686</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PhiStmt.html#ac214292370d79324f6da8624fe2c7139">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *edge)</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>  {</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a6b3cd98eeb47c8475e7ee64480dcdee9">SVFStmt::Phi</a>;</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>  }</div><div class="line"><a name="l00690"></a><span class="lineno"><a class="line" href="classSVF_1_1PhiStmt.html#ae547394a731d29b44565d3e56a326354"> 690</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PhiStmt.html#ae547394a731d29b44565d3e56a326354">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MultiOpndStmt.html">MultiOpndStmt</a> *edge)</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>  {</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a6b3cd98eeb47c8475e7ee64480dcdee9">SVFStmt::Phi</a>;</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>  }</div><div class="line"><a name="l00694"></a><span class="lineno"><a class="line" href="classSVF_1_1PhiStmt.html#a904591799ce401e8d3ee6aa634325ba3"> 694</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PhiStmt.html#a904591799ce401e8d3ee6aa634325ba3">classof</a>(<span class="keyword">const</span> GenericPAGEdgeTy *edge)</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>  {</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a6b3cd98eeb47c8475e7ee64480dcdee9">SVFStmt::Phi</a>;</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>  }</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span> </div><div class="line"><a name="l00701"></a><span class="lineno"><a class="line" href="classSVF_1_1PhiStmt.html#ac2374acf4477a4bc5d188797ea9baaf3"> 701</a></span>  <a class="code" href="classSVF_1_1PhiStmt.html#ac2374acf4477a4bc5d188797ea9baaf3">PhiStmt</a>(<a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* s, <span class="keyword">const</span> <a class="code" href="classSVF_1_1MultiOpndStmt.html#acf8c7cfbf1c8baab672040635bb9a007">OPVars</a>& opnds, <span class="keyword">const</span> OpICFGNodeVec& icfgNodes) : <a class="code" href="classSVF_1_1MultiOpndStmt.html">MultiOpndStmt</a>(s,opnds,<a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>::<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a6b3cd98eeb47c8475e7ee64480dcdee9">Phi</a>), opICFGNodes(icfgNodes)</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>  {</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(opnds.size()==icfgNodes.size() && <span class="stringliteral">"Numbers of operands and their ICFGNodes are not consistent?"</span>);</div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>  }</div><div class="line"><a name="l00705"></a><span class="lineno"><a class="line" href="classSVF_1_1PhiStmt.html#ac3541a25f83ce8465d7b35010ba50b37"> 705</a></span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PhiStmt.html#ac3541a25f83ce8465d7b35010ba50b37">addOpVar</a>(<a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* op, <span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* inode){</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>  opVars.push_back(op);</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>  opICFGNodes.push_back(inode);</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(opVars.size()==opICFGNodes.size() && <span class="stringliteral">"Numbers of operands and their ICFGNodes are not consistent?"</span>);</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>  }</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span> </div><div class="line"><a name="l00712"></a><span class="lineno"><a class="line" href="classSVF_1_1PhiStmt.html#a0b97394bc1946c0185d2c11fbc2181f4"> 712</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* <a class="code" href="classSVF_1_1PhiStmt.html#a0b97394bc1946c0185d2c11fbc2181f4">getOpICFGNode</a>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> op_idx)<span class="keyword"> const</span>{</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>  <span class="keywordflow">return</span> opICFGNodes.at(op_idx);</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>  }</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span> </div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>  <span class="keywordtype">bool</span> isFunctionRetPhi() <span class="keyword">const</span>;</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span> </div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1SVFStmt.html#ad0b4dbe87e009518f22360c48b0d0c22">toString</a>() <span class="keyword">const override</span>;</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span> };</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span> </div><div class="line"><a name="l00726"></a><span class="lineno"><a class="line" href="classSVF_1_1SelectStmt.html"> 726</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1SelectStmt.html">SelectStmt</a>: <span class="keyword">public</span> <a class="code" href="classSVF_1_1MultiOpndStmt.html">MultiOpndStmt</a></div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span> {</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>  <a class="code" href="classSVF_1_1SelectStmt.html">SelectStmt</a>(); </div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>  <a class="code" href="classSVF_1_1SelectStmt.html">SelectStmt</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SelectStmt.html">SelectStmt</a> &); </div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>  <span class="keywordtype">void</span> operator=(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SelectStmt.html">SelectStmt</a> &); </div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span> </div><div class="line"><a name="l00733"></a><span class="lineno"><a class="line" href="classSVF_1_1SelectStmt.html#a2d6e9d7131bc69a0e88b703c2c03d7e2"> 733</a></span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* <a class="code" href="classSVF_1_1SelectStmt.html#a2d6e9d7131bc69a0e88b703c2c03d7e2">condition</a>;</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span> </div><div class="line"><a name="l00737"></a><span class="lineno"><a class="line" href="classSVF_1_1SelectStmt.html#a89f27a20f9c2acc66c4c6152e79ee30e"> 737</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SelectStmt.html#a89f27a20f9c2acc66c4c6152e79ee30e">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SelectStmt.html">SelectStmt</a> *)</div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>  {</div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span>  }</div><div class="line"><a name="l00741"></a><span class="lineno"><a class="line" href="classSVF_1_1SelectStmt.html#a3cb54c9a91a32e12c5f8ee452fcf64be"> 741</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SelectStmt.html#a3cb54c9a91a32e12c5f8ee452fcf64be">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *edge)</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span>  {</div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad9397ec243a61992dc2b5681bea587fa">SVFStmt::Select</a>;</div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span>  }</div><div class="line"><a name="l00745"></a><span class="lineno"><a class="line" href="classSVF_1_1SelectStmt.html#a0b73ca0dedc4b7c718585577424fa0ce"> 745</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SelectStmt.html#a0b73ca0dedc4b7c718585577424fa0ce">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MultiOpndStmt.html">MultiOpndStmt</a> *edge)</div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>  {</div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad9397ec243a61992dc2b5681bea587fa">SVFStmt::Select</a>;</div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>  }</div><div class="line"><a name="l00749"></a><span class="lineno"><a class="line" href="classSVF_1_1SelectStmt.html#aa9d3eeb27fee7084bcd2921c98be1bd1"> 749</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SelectStmt.html#aa9d3eeb27fee7084bcd2921c98be1bd1">classof</a>(<span class="keyword">const</span> GenericPAGEdgeTy *edge)</div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span>  {</div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad9397ec243a61992dc2b5681bea587fa">SVFStmt::Select</a>;</div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span>  }</div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span> </div><div class="line"><a name="l00756"></a><span class="lineno"><a class="line" href="classSVF_1_1SelectStmt.html#ae654d9036e291e723a3f1f7eab5b018b"> 756</a></span>  <a class="code" href="classSVF_1_1SelectStmt.html#ae654d9036e291e723a3f1f7eab5b018b">SelectStmt</a>(<a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* s, <span class="keyword">const</span> <a class="code" href="classSVF_1_1MultiOpndStmt.html#acf8c7cfbf1c8baab672040635bb9a007">OPVars</a>& opnds, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* cond) : <a class="code" href="classSVF_1_1MultiOpndStmt.html">MultiOpndStmt</a>(s,opnds,<a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>::<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad9397ec243a61992dc2b5681bea587fa">Select</a>), condition(cond)</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>  {</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(opnds.size()==2 && <span class="stringliteral">"SelectStmt can only have two operands!"</span>);</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>  }</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1SVFStmt.html#ad0b4dbe87e009518f22360c48b0d0c22">toString</a>() <span class="keyword">const override</span>;</div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span> </div><div class="line"><a name="l00762"></a><span class="lineno"><a class="line" href="classSVF_1_1SelectStmt.html#ad4c3e9529176478bb726279a76050e8c"> 762</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* <a class="code" href="classSVF_1_1SelectStmt.html#ad4c3e9529176478bb726279a76050e8c">getCondition</a>()<span class="keyword"> const</span>{</div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>  <span class="keywordflow">return</span> condition;</div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>  }</div><div class="line"><a name="l00765"></a><span class="lineno"><a class="line" href="classSVF_1_1SelectStmt.html#a537c03b08444da34c26b9e989bb0e568"> 765</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* <a class="code" href="classSVF_1_1SelectStmt.html#a537c03b08444da34c26b9e989bb0e568">getTrueValue</a>()<span class="keyword"> const</span>{</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>  <span class="keywordflow">return</span> getOpVar(0);</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>  }</div><div class="line"><a name="l00768"></a><span class="lineno"><a class="line" href="classSVF_1_1SelectStmt.html#af64d7855e352a0afb5d2e98a8622a4ad"> 768</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* <a class="code" href="classSVF_1_1SelectStmt.html#af64d7855e352a0afb5d2e98a8622a4ad">getFalseValue</a>()<span class="keyword"> const</span>{</div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span>  <span class="keywordflow">return</span> getOpVar(1);</div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>  }</div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span> };</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span> </div><div class="line"><a name="l00776"></a><span class="lineno"><a class="line" href="classSVF_1_1CmpStmt.html"> 776</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1CmpStmt.html">CmpStmt</a>: <span class="keyword">public</span> <a class="code" href="classSVF_1_1MultiOpndStmt.html">MultiOpndStmt</a></div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span> {</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>  <a class="code" href="classSVF_1_1CmpStmt.html">CmpStmt</a>(); </div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>  <a class="code" href="classSVF_1_1CmpStmt.html">CmpStmt</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CmpStmt.html">CmpStmt</a> &); </div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>  <span class="keywordtype">void</span> operator=(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CmpStmt.html">CmpStmt</a> &); </div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span> </div><div class="line"><a name="l00783"></a><span class="lineno"><a class="line" href="classSVF_1_1CmpStmt.html#a26fc263da6ab3fee40a335d367419328"> 783</a></span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1CmpStmt.html#a26fc263da6ab3fee40a335d367419328">predicate</a>;</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span> </div><div class="line"><a name="l00787"></a><span class="lineno"><a class="line" href="classSVF_1_1CmpStmt.html#adec661dd23b7806b35abba2d44aebc61"> 787</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CmpStmt.html#adec661dd23b7806b35abba2d44aebc61">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CmpStmt.html">CmpStmt</a> *)</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>  {</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>  }</div><div class="line"><a name="l00791"></a><span class="lineno"><a class="line" href="classSVF_1_1CmpStmt.html#a16a5fddf61f6a13ee34dde0c4267d0e5"> 791</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CmpStmt.html#a16a5fddf61f6a13ee34dde0c4267d0e5">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *edge)</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span>  {</div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a610d6662d1814cffbf23db29e7e620c0">SVFStmt::Cmp</a>;</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>  }</div><div class="line"><a name="l00795"></a><span class="lineno"><a class="line" href="classSVF_1_1CmpStmt.html#a679ec89e3fa17a17dcc8fafeb30d3a61"> 795</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CmpStmt.html#a679ec89e3fa17a17dcc8fafeb30d3a61">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MultiOpndStmt.html">MultiOpndStmt</a> *edge)</div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span>  {</div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a610d6662d1814cffbf23db29e7e620c0">SVFStmt::Cmp</a>;</div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span>  }</div><div class="line"><a name="l00799"></a><span class="lineno"><a class="line" href="classSVF_1_1CmpStmt.html#af9f7fe4aa92bb443cd517f06a8fb94cd"> 799</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CmpStmt.html#af9f7fe4aa92bb443cd517f06a8fb94cd">classof</a>(<span class="keyword">const</span> GenericPAGEdgeTy *edge)</div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span>  {</div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a610d6662d1814cffbf23db29e7e620c0">SVFStmt::Cmp</a>;</div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span>  }</div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span> </div><div class="line"><a name="l00806"></a><span class="lineno"><a class="line" href="classSVF_1_1CmpStmt.html#a02c4846269bd28bd4e8b127532cb737a"> 806</a></span>  <a class="code" href="classSVF_1_1CmpStmt.html#a02c4846269bd28bd4e8b127532cb737a">CmpStmt</a>(<a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* s, <span class="keyword">const</span> <a class="code" href="classSVF_1_1MultiOpndStmt.html#acf8c7cfbf1c8baab672040635bb9a007">OPVars</a>& opnds, <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> pre) : <a class="code" href="classSVF_1_1MultiOpndStmt.html">MultiOpndStmt</a>(s,opnds,<a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>::<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a610d6662d1814cffbf23db29e7e620c0">Cmp</a>), predicate(pre)</div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span>  {</div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span>  }</div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span> </div><div class="line"><a name="l00810"></a><span class="lineno"><a class="line" href="classSVF_1_1CmpStmt.html#aa6a21fb1cfbc263bb38651176c495632"> 810</a></span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1CmpStmt.html#aa6a21fb1cfbc263bb38651176c495632">getPredicate</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span>  <span class="keywordflow">return</span> predicate;</div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span>  }</div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span>  </div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1SVFStmt.html#ad0b4dbe87e009518f22360c48b0d0c22">toString</a>() <span class="keyword">const override</span>;</div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span> };</div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span> </div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span> </div><div class="line"><a name="l00822"></a><span class="lineno"><a class="line" href="classSVF_1_1BinaryOPStmt.html"> 822</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1BinaryOPStmt.html">BinaryOPStmt</a>: <span class="keyword">public</span> <a class="code" href="classSVF_1_1MultiOpndStmt.html">MultiOpndStmt</a></div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span> {</div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span>  <a class="code" href="classSVF_1_1BinaryOPStmt.html">BinaryOPStmt</a>(); </div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>  <a class="code" href="classSVF_1_1BinaryOPStmt.html">BinaryOPStmt</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html">BinaryOPStmt</a> &); </div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>  <span class="keywordtype">void</span> operator=(<span class="keyword">const</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html">BinaryOPStmt</a> &); </div><div class="line"><a name="l00828"></a><span class="lineno"><a class="line" href="classSVF_1_1BinaryOPStmt.html#a0c4f900cf7321e8385b4f45e5cba3d1a"> 828</a></span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1BinaryOPStmt.html#a0c4f900cf7321e8385b4f45e5cba3d1a">opcode</a>;</div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span> </div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span> </div><div class="line"><a name="l00833"></a><span class="lineno"><a class="line" href="classSVF_1_1BinaryOPStmt.html#ab5a0f41455474643e8dd97aaab0aaab5"> 833</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#ab5a0f41455474643e8dd97aaab0aaab5">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html">BinaryOPStmt</a> *)</div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span>  {</div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span>  }</div><div class="line"><a name="l00837"></a><span class="lineno"><a class="line" href="classSVF_1_1BinaryOPStmt.html#abc24c2d50b164a637ad0cec371cb7e63"> 837</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#abc24c2d50b164a637ad0cec371cb7e63">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *edge)</div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span>  {</div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad58f5e59c55e1ffd23b83d16224fed13">SVFStmt::BinaryOp</a>;</div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>  }</div><div class="line"><a name="l00841"></a><span class="lineno"><a class="line" href="classSVF_1_1BinaryOPStmt.html#a7cae2a90a33225c90eb035cf9e663d3d"> 841</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#a7cae2a90a33225c90eb035cf9e663d3d">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MultiOpndStmt.html">MultiOpndStmt</a> *edge)</div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span>  {</div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad58f5e59c55e1ffd23b83d16224fed13">SVFStmt::BinaryOp</a>;</div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span>  }</div><div class="line"><a name="l00845"></a><span class="lineno"><a class="line" href="classSVF_1_1BinaryOPStmt.html#ac8831079a5a9c6d50fbd09ff545e7cfd"> 845</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#ac8831079a5a9c6d50fbd09ff545e7cfd">classof</a>(<span class="keyword">const</span> GenericPAGEdgeTy *edge)</div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span>  {</div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad58f5e59c55e1ffd23b83d16224fed13">SVFStmt::BinaryOp</a>;</div><div class="line"><a name="l00848"></a><span class="lineno"> 848</span>  }</div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span> </div><div class="line"><a name="l00852"></a><span class="lineno"><a class="line" href="classSVF_1_1BinaryOPStmt.html#a7470a2412985bbb227bb62d8a297b7f1"> 852</a></span>  <a class="code" href="classSVF_1_1BinaryOPStmt.html#a7470a2412985bbb227bb62d8a297b7f1">BinaryOPStmt</a>(<a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* s, <span class="keyword">const</span> <a class="code" href="classSVF_1_1MultiOpndStmt.html#acf8c7cfbf1c8baab672040635bb9a007">OPVars</a>& opnds, <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> oc) : <a class="code" href="classSVF_1_1MultiOpndStmt.html">MultiOpndStmt</a>(s,opnds,<a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>::<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad58f5e59c55e1ffd23b83d16224fed13">BinaryOp</a>), opcode(oc)</div><div class="line"><a name="l00853"></a><span class="lineno"> 853</span>  {</div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span>  }</div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span> </div><div class="line"><a name="l00856"></a><span class="lineno"><a class="line" href="classSVF_1_1BinaryOPStmt.html#ad0a7c5e87355d7a83176343322db448f"> 856</a></span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1BinaryOPStmt.html#ad0a7c5e87355d7a83176343322db448f">getOpcode</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00857"></a><span class="lineno"> 857</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00858"></a><span class="lineno"> 858</span>  <span class="keywordflow">return</span> opcode;</div><div class="line"><a name="l00859"></a><span class="lineno"> 859</span>  }</div><div class="line"><a name="l00860"></a><span class="lineno"> 860</span> </div><div class="line"><a name="l00861"></a><span class="lineno"> 861</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1SVFStmt.html#ad0b4dbe87e009518f22360c48b0d0c22">toString</a>() <span class="keyword">const override</span>;</div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span> };</div><div class="line"><a name="l00863"></a><span class="lineno"> 863</span> </div><div class="line"><a name="l00867"></a><span class="lineno"><a class="line" href="classSVF_1_1UnaryOPStmt.html"> 867</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1UnaryOPStmt.html">UnaryOPStmt</a>: <span class="keyword">public</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a></div><div class="line"><a name="l00868"></a><span class="lineno"> 868</span> {</div><div class="line"><a name="l00869"></a><span class="lineno"> 869</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span>  <a class="code" href="classSVF_1_1UnaryOPStmt.html">UnaryOPStmt</a>(); </div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span>  <a class="code" href="classSVF_1_1UnaryOPStmt.html">UnaryOPStmt</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1UnaryOPStmt.html">UnaryOPStmt</a> &); </div><div class="line"><a name="l00872"></a><span class="lineno"> 872</span>  <span class="keywordtype">void</span> operator=(<span class="keyword">const</span> <a class="code" href="classSVF_1_1UnaryOPStmt.html">UnaryOPStmt</a> &); </div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span>  <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* <a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>(); </div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span>  <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* <a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>(); </div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">getSrcID</a>(); </div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">getDstID</a>(); </div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span> </div><div class="line"><a name="l00878"></a><span class="lineno"><a class="line" href="classSVF_1_1UnaryOPStmt.html#a099df135a83d28a2e6f344e008fe1cc6"> 878</a></span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1UnaryOPStmt.html#a099df135a83d28a2e6f344e008fe1cc6">opcode</a>;</div><div class="line"><a name="l00879"></a><span class="lineno"> 879</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00881"></a><span class="lineno"> 881</span> </div><div class="line"><a name="l00882"></a><span class="lineno"><a class="line" href="classSVF_1_1UnaryOPStmt.html#abb10688145fa76629916ec3df61b6c95"> 882</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1UnaryOPStmt.html#abb10688145fa76629916ec3df61b6c95">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1UnaryOPStmt.html">UnaryOPStmt</a> *)</div><div class="line"><a name="l00883"></a><span class="lineno"> 883</span>  {</div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00885"></a><span class="lineno"> 885</span>  }</div><div class="line"><a name="l00886"></a><span class="lineno"><a class="line" href="classSVF_1_1UnaryOPStmt.html#a2a4b7e3a4c5be8a253b542f144f830b7"> 886</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1UnaryOPStmt.html#a2a4b7e3a4c5be8a253b542f144f830b7">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *edge)</div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span>  {</div><div class="line"><a name="l00888"></a><span class="lineno"> 888</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad2a5e6fe0f2b5fefb53abb9e91c57688">SVFStmt::UnaryOp</a>;</div><div class="line"><a name="l00889"></a><span class="lineno"> 889</span>  }</div><div class="line"><a name="l00890"></a><span class="lineno"><a class="line" href="classSVF_1_1UnaryOPStmt.html#add29b76e0ef73da2606bac97f74a7896"> 890</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1UnaryOPStmt.html#add29b76e0ef73da2606bac97f74a7896">classof</a>(<span class="keyword">const</span> GenericPAGEdgeTy *edge)</div><div class="line"><a name="l00891"></a><span class="lineno"> 891</span>  {</div><div class="line"><a name="l00892"></a><span class="lineno"> 892</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad2a5e6fe0f2b5fefb53abb9e91c57688">SVFStmt::UnaryOp</a>;</div><div class="line"><a name="l00893"></a><span class="lineno"> 893</span>  }</div><div class="line"><a name="l00895"></a><span class="lineno"> 895</span> </div><div class="line"><a name="l00897"></a><span class="lineno"><a class="line" href="classSVF_1_1UnaryOPStmt.html#a2b91333ac3d4b5e1099590aeb15d38ba"> 897</a></span>  <a class="code" href="classSVF_1_1UnaryOPStmt.html#a2b91333ac3d4b5e1099590aeb15d38ba">UnaryOPStmt</a>(<a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* s, <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* d, <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> oc) : <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>(s,d,<a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>::<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad2a5e6fe0f2b5fefb53abb9e91c57688">UnaryOp</a>), opcode(oc)</div><div class="line"><a name="l00898"></a><span class="lineno"> 898</span>  {</div><div class="line"><a name="l00899"></a><span class="lineno"> 899</span>  }</div><div class="line"><a name="l00900"></a><span class="lineno"> 900</span> </div><div class="line"><a name="l00901"></a><span class="lineno"><a class="line" href="classSVF_1_1UnaryOPStmt.html#af29723d5e777b10d53d48263a786f5b6"> 901</a></span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1UnaryOPStmt.html#af29723d5e777b10d53d48263a786f5b6">getOpcode</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00902"></a><span class="lineno"> 902</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00903"></a><span class="lineno"> 903</span>  <span class="keywordflow">return</span> opcode;</div><div class="line"><a name="l00904"></a><span class="lineno"> 904</span>  }</div><div class="line"><a name="l00905"></a><span class="lineno"><a class="line" href="classSVF_1_1UnaryOPStmt.html#abde2b32d5bbd37df0e194b1a4e78483b"> 905</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* <a class="code" href="classSVF_1_1UnaryOPStmt.html#abde2b32d5bbd37df0e194b1a4e78483b">getOpVar</a>()<span class="keyword"> const</span>{</div><div class="line"><a name="l00906"></a><span class="lineno"> 906</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">SVFStmt::getSrcNode</a>();</div><div class="line"><a name="l00907"></a><span class="lineno"> 907</span>  }</div><div class="line"><a name="l00908"></a><span class="lineno"><a class="line" href="classSVF_1_1UnaryOPStmt.html#a919db9b8c9287c3802f563840b56c4f1"> 908</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* <a class="code" href="classSVF_1_1UnaryOPStmt.html#a919db9b8c9287c3802f563840b56c4f1">getRes</a>()<span class="keyword"> const</span>{</div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">SVFStmt::getDstNode</a>();</div><div class="line"><a name="l00910"></a><span class="lineno"> 910</span>  }</div><div class="line"><a name="l00911"></a><span class="lineno"> 911</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> getOpVarID() <span class="keyword">const</span>;</div><div class="line"><a name="l00912"></a><span class="lineno"> 912</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> getResID() <span class="keyword">const</span>;</div><div class="line"><a name="l00913"></a><span class="lineno"> 913</span> </div><div class="line"><a name="l00914"></a><span class="lineno"> 914</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1SVFStmt.html#ad0b4dbe87e009518f22360c48b0d0c22">toString</a>() <span class="keyword">const override</span>;</div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span> };</div><div class="line"><a name="l00916"></a><span class="lineno"> 916</span> </div><div class="line"><a name="l00917"></a><span class="lineno"> 917</span> </div><div class="line"><a name="l00921"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchStmt.html"> 921</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1BranchStmt.html">BranchStmt</a>: <span class="keyword">public</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a></div><div class="line"><a name="l00922"></a><span class="lineno"> 922</span> {</div><div class="line"><a name="l00923"></a><span class="lineno"> 923</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00924"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchStmt.html#ac486fb3a118e6153892b998b0ef46890"> 924</a></span>  <span class="keyword">typedef</span> std::vector<std::pair<const ICFGNode*, s64_t> > <a class="code" href="classSVF_1_1BranchStmt.html#ac486fb3a118e6153892b998b0ef46890">SuccAndCondPairVec</a>;</div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00926"></a><span class="lineno"> 926</span>  <a class="code" href="classSVF_1_1BranchStmt.html">BranchStmt</a>(); </div><div class="line"><a name="l00927"></a><span class="lineno"> 927</span>  <a class="code" href="classSVF_1_1BranchStmt.html">BranchStmt</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1BranchStmt.html">BranchStmt</a> &); </div><div class="line"><a name="l00928"></a><span class="lineno"> 928</span>  <span class="keywordtype">void</span> operator=(<span class="keyword">const</span> <a class="code" href="classSVF_1_1BranchStmt.html">BranchStmt</a> &); </div><div class="line"><a name="l00929"></a><span class="lineno"> 929</span>  <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* <a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>(); </div><div class="line"><a name="l00930"></a><span class="lineno"> 930</span>  <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* <a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>(); </div><div class="line"><a name="l00931"></a><span class="lineno"> 931</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">getSrcID</a>(); </div><div class="line"><a name="l00932"></a><span class="lineno"> 932</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">getDstID</a>(); </div><div class="line"><a name="l00933"></a><span class="lineno"> 933</span> </div><div class="line"><a name="l00934"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchStmt.html#a40854cd95fbae16ef8e370255d0e3cf5"> 934</a></span>  SuccAndCondPairVec <a class="code" href="classSVF_1_1BranchStmt.html#a40854cd95fbae16ef8e370255d0e3cf5">successors</a>;</div><div class="line"><a name="l00935"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchStmt.html#adcf5cabe6e0a87cded5ef1fdf7273f3f"> 935</a></span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* <a class="code" href="classSVF_1_1BranchStmt.html#adcf5cabe6e0a87cded5ef1fdf7273f3f">cond</a>;</div><div class="line"><a name="l00936"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchStmt.html#a33887345c00ffda9ca7dca59d61e184a"> 936</a></span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* <a class="code" href="classSVF_1_1BranchStmt.html#a33887345c00ffda9ca7dca59d61e184a">brInst</a>;</div><div class="line"><a name="l00937"></a><span class="lineno"> 937</span> </div><div class="line"><a name="l00938"></a><span class="lineno"> 938</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00940"></a><span class="lineno"> 940</span> </div><div class="line"><a name="l00941"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchStmt.html#a750ffca6648fafedfb271fb90d975847"> 941</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1BranchStmt.html#a750ffca6648fafedfb271fb90d975847">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1BranchStmt.html">BranchStmt</a> *)</div><div class="line"><a name="l00942"></a><span class="lineno"> 942</span>  {</div><div class="line"><a name="l00943"></a><span class="lineno"> 943</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00944"></a><span class="lineno"> 944</span>  }</div><div class="line"><a name="l00945"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchStmt.html#a55b867cd85dbbe43e2f7c1bad5dce647"> 945</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1BranchStmt.html#a55b867cd85dbbe43e2f7c1bad5dce647">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *edge)</div><div class="line"><a name="l00946"></a><span class="lineno"> 946</span>  {</div><div class="line"><a name="l00947"></a><span class="lineno"> 947</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad52703e3ec09b6a4f565e5d82279b6a3">SVFStmt::Branch</a>;</div><div class="line"><a name="l00948"></a><span class="lineno"> 948</span>  }</div><div class="line"><a name="l00949"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchStmt.html#adf97a239f15b635580cef475980e8d82"> 949</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1BranchStmt.html#adf97a239f15b635580cef475980e8d82">classof</a>(<span class="keyword">const</span> GenericPAGEdgeTy *edge)</div><div class="line"><a name="l00950"></a><span class="lineno"> 950</span>  {</div><div class="line"><a name="l00951"></a><span class="lineno"> 951</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad52703e3ec09b6a4f565e5d82279b6a3">SVFStmt::Branch</a>;</div><div class="line"><a name="l00952"></a><span class="lineno"> 952</span>  }</div><div class="line"><a name="l00954"></a><span class="lineno"> 954</span> </div><div class="line"><a name="l00956"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchStmt.html#a5e102d5c08b7121efc87b99651f0b5d2"> 956</a></span>  <a class="code" href="classSVF_1_1BranchStmt.html#a5e102d5c08b7121efc87b99651f0b5d2">BranchStmt</a>(<a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* inst, <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* c, <span class="keyword">const</span> SuccAndCondPairVec& succs) : <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>(c,inst,<a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>::<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad52703e3ec09b6a4f565e5d82279b6a3">Branch</a>), successors(succs), cond(c), brInst(inst)</div><div class="line"><a name="l00957"></a><span class="lineno"> 957</span>  {</div><div class="line"><a name="l00958"></a><span class="lineno"> 958</span>  }</div><div class="line"><a name="l00959"></a><span class="lineno"> 959</span> </div><div class="line"><a name="l00961"></a><span class="lineno"> 961</span>  <span class="keywordtype">bool</span> isUnconditional() <span class="keyword">const</span>;</div><div class="line"><a name="l00963"></a><span class="lineno"> 963</span>  <span class="keywordtype">bool</span> isConditional() <span class="keyword">const</span>;</div><div class="line"><a name="l00965"></a><span class="lineno"> 965</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* getCondition() <span class="keyword">const</span>;</div><div class="line"><a name="l00966"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchStmt.html#a2c6fe09027838f9e0ad9ab8193ce8e9b"> 966</a></span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* <a class="code" href="classSVF_1_1BranchStmt.html#a2c6fe09027838f9e0ad9ab8193ce8e9b">getBranchInst</a>()<span class="keyword"> const</span>{</div><div class="line"><a name="l00967"></a><span class="lineno"> 967</span>  <span class="keywordflow">return</span> brInst;</div><div class="line"><a name="l00968"></a><span class="lineno"> 968</span>  }</div><div class="line"><a name="l00969"></a><span class="lineno"> 969</span>  </div><div class="line"><a name="l00973"></a><span class="lineno"> 973</span> </div><div class="line"><a name="l00978"></a><span class="lineno"> 978</span> </div><div class="line"><a name="l00981"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchStmt.html#a022d355bde3d0d0a9471cd125b24583b"> 981</a></span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1BranchStmt.html#a022d355bde3d0d0a9471cd125b24583b">getNumSuccessors</a>()<span class="keyword"> const</span>{</div><div class="line"><a name="l00982"></a><span class="lineno"> 982</span>  <span class="keywordflow">return</span> successors.size();</div><div class="line"><a name="l00983"></a><span class="lineno"> 983</span>  }</div><div class="line"><a name="l00984"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchStmt.html#a93040c884df211ac62d53ceafdd9c4dd"> 984</a></span>  <span class="keyword">const</span> SuccAndCondPairVec& <a class="code" href="classSVF_1_1BranchStmt.html#a93040c884df211ac62d53ceafdd9c4dd">getSuccessors</a>()<span class="keyword"> const</span>{</div><div class="line"><a name="l00985"></a><span class="lineno"> 985</span>  <span class="keywordflow">return</span> successors;</div><div class="line"><a name="l00986"></a><span class="lineno"> 986</span>  }</div><div class="line"><a name="l00987"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchStmt.html#a7d9a6ebb2d95942c453864b5327b1ae8"> 987</a></span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* <a class="code" href="classSVF_1_1BranchStmt.html#a7d9a6ebb2d95942c453864b5327b1ae8">getSuccessor</a> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i)<span class="keyword"> const</span>{</div><div class="line"><a name="l00988"></a><span class="lineno"> 988</span>  <span class="keywordflow">return</span> successors.at(i).first;</div><div class="line"><a name="l00989"></a><span class="lineno"> 989</span>  }</div><div class="line"><a name="l00990"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchStmt.html#a7d2fa666602e0444d3e019563c0e7556"> 990</a></span>  <a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a> <a class="code" href="classSVF_1_1BranchStmt.html#a7d2fa666602e0444d3e019563c0e7556">getSuccessorCondValue</a> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i)<span class="keyword"> const</span>{ </div><div class="line"><a name="l00991"></a><span class="lineno"> 991</span>  <span class="keywordflow">return</span> successors.at(i).second;</div><div class="line"><a name="l00992"></a><span class="lineno"> 992</span>  }</div><div class="line"><a name="l00994"></a><span class="lineno"> 994</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1SVFStmt.html#ad0b4dbe87e009518f22360c48b0d0c22">toString</a>() <span class="keyword">const override</span>;</div><div class="line"><a name="l00995"></a><span class="lineno"> 995</span> };</div><div class="line"><a name="l00996"></a><span class="lineno"> 996</span> </div><div class="line"><a name="l00997"></a><span class="lineno"> 997</span> </div><div class="line"><a name="l01001"></a><span class="lineno"><a class="line" href="classSVF_1_1TDForkPE.html"> 1001</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1TDForkPE.html">TDForkPE</a>: <span class="keyword">public</span> <a class="code" href="classSVF_1_1CallPE.html">CallPE</a></div><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span> {</div><div class="line"><a name="l01003"></a><span class="lineno"> 1003</span> <span class="keyword">private</span>:</div><div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>  <a class="code" href="classSVF_1_1TDForkPE.html">TDForkPE</a>(); </div><div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>  <a class="code" href="classSVF_1_1TDForkPE.html">TDForkPE</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1TDForkPE.html">TDForkPE</a> &); </div><div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>  <span class="keywordtype">void</span> operator=(<span class="keyword">const</span> <a class="code" href="classSVF_1_1TDForkPE.html">TDForkPE</a> &); </div><div class="line"><a name="l01007"></a><span class="lineno"> 1007</span> </div><div class="line"><a name="l01008"></a><span class="lineno"> 1008</span> <span class="keyword">public</span>:</div><div class="line"><a name="l01010"></a><span class="lineno"> 1010</span> </div><div class="line"><a name="l01011"></a><span class="lineno"><a class="line" href="classSVF_1_1TDForkPE.html#a79317f2ac92ace129a1ccf802406498d"> 1011</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1TDForkPE.html#a79317f2ac92ace129a1ccf802406498d">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1TDForkPE.html">TDForkPE</a> *)</div><div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>  {</div><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>  }</div><div class="line"><a name="l01015"></a><span class="lineno"><a class="line" href="classSVF_1_1TDForkPE.html#a68f16df5a9b44dd2492c33fb0a1b5f0c"> 1015</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1TDForkPE.html#a68f16df5a9b44dd2492c33fb0a1b5f0c">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *edge)</div><div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>  {</div><div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a375b956af2119d7abca8f1995f7701fd">SVFStmt::ThreadFork</a>;</div><div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>  }</div><div class="line"><a name="l01019"></a><span class="lineno"><a class="line" href="classSVF_1_1TDForkPE.html#a9e160158fe61958bcd6ef2a7da559018"> 1019</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1TDForkPE.html#a9e160158fe61958bcd6ef2a7da559018">classof</a>(<span class="keyword">const</span> GenericPAGEdgeTy *edge)</div><div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>  {</div><div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a375b956af2119d7abca8f1995f7701fd">SVFStmt::ThreadFork</a>;</div><div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>  }</div><div class="line"><a name="l01024"></a><span class="lineno"> 1024</span> </div><div class="line"><a name="l01026"></a><span class="lineno"><a class="line" href="classSVF_1_1TDForkPE.html#ae28fa8ad500a11208410adbfd0d19ea5"> 1026</a></span>  <a class="code" href="classSVF_1_1TDForkPE.html#ae28fa8ad500a11208410adbfd0d19ea5">TDForkPE</a>(<a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* s, <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* d, <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* i, <span class="keyword">const</span> <a class="code" href="classSVF_1_1FunEntryICFGNode.html">FunEntryICFGNode</a>* <a class="code" href="cuddInt_8c.html#a936a27e51e66afb57c2b3a12d78a238e">entry</a>) :</div><div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>  <a class="code" href="classSVF_1_1CallPE.html">CallPE</a>(s,d,i,entry,<a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>::<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a375b956af2119d7abca8f1995f7701fd">ThreadFork</a>)</div><div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>  {</div><div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>  }</div><div class="line"><a name="l01030"></a><span class="lineno"> 1030</span> </div><div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1SVFStmt.html#ad0b4dbe87e009518f22360c48b0d0c22">toString</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l01032"></a><span class="lineno"> 1032</span> };</div><div class="line"><a name="l01033"></a><span class="lineno"> 1033</span> </div><div class="line"><a name="l01034"></a><span class="lineno"> 1034</span> </div><div class="line"><a name="l01035"></a><span class="lineno"> 1035</span> </div><div class="line"><a name="l01039"></a><span class="lineno"><a class="line" href="classSVF_1_1TDJoinPE.html"> 1039</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1TDJoinPE.html">TDJoinPE</a>: <span class="keyword">public</span> <a class="code" href="classSVF_1_1RetPE.html">RetPE</a></div><div class="line"><a name="l01040"></a><span class="lineno"> 1040</span> {</div><div class="line"><a name="l01041"></a><span class="lineno"> 1041</span> <span class="keyword">private</span>:</div><div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>  <a class="code" href="classSVF_1_1TDJoinPE.html">TDJoinPE</a>(); </div><div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>  <a class="code" href="classSVF_1_1TDJoinPE.html">TDJoinPE</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1TDJoinPE.html">TDJoinPE</a> &); </div><div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>  <span class="keywordtype">void</span> operator=(<span class="keyword">const</span> <a class="code" href="classSVF_1_1TDJoinPE.html">TDJoinPE</a> &); </div><div class="line"><a name="l01045"></a><span class="lineno"> 1045</span> </div><div class="line"><a name="l01046"></a><span class="lineno"> 1046</span> <span class="keyword">public</span>:</div><div class="line"><a name="l01048"></a><span class="lineno"> 1048</span> </div><div class="line"><a name="l01049"></a><span class="lineno"><a class="line" href="classSVF_1_1TDJoinPE.html#ace17257476d0ee089a9f9cb8dc63e3f2"> 1049</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1TDJoinPE.html#ace17257476d0ee089a9f9cb8dc63e3f2">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1TDJoinPE.html">TDJoinPE</a> *)</div><div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>  {</div><div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>  }</div><div class="line"><a name="l01053"></a><span class="lineno"><a class="line" href="classSVF_1_1TDJoinPE.html#a18e24262f5be7835bc830ea410acc19d"> 1053</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1TDJoinPE.html#a18e24262f5be7835bc830ea410acc19d">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *edge)</div><div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>  {</div><div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a3c3f8883c2d3b50aef6331d5da97ffb0">SVFStmt::ThreadJoin</a>;</div><div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>  }</div><div class="line"><a name="l01057"></a><span class="lineno"><a class="line" href="classSVF_1_1TDJoinPE.html#a22303af690086961b8d2356b345f882b"> 1057</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1TDJoinPE.html#a22303af690086961b8d2356b345f882b">classof</a>(<span class="keyword">const</span> GenericPAGEdgeTy *edge)</div><div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>  {</div><div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a3c3f8883c2d3b50aef6331d5da97ffb0">SVFStmt::ThreadJoin</a>;</div><div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>  }</div><div class="line"><a name="l01062"></a><span class="lineno"> 1062</span> </div><div class="line"><a name="l01064"></a><span class="lineno"><a class="line" href="classSVF_1_1TDJoinPE.html#ad836475c24cb395175291df3f1ddfee0"> 1064</a></span>  <a class="code" href="classSVF_1_1TDJoinPE.html#ad836475c24cb395175291df3f1ddfee0">TDJoinPE</a>(<a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* s, <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* d, <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* i, <span class="keyword">const</span> <a class="code" href="classSVF_1_1FunExitICFGNode.html">FunExitICFGNode</a>* e) :</div><div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>  <a class="code" href="classSVF_1_1RetPE.html">RetPE</a>(s,d,i,e, <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>::<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a3c3f8883c2d3b50aef6331d5da97ffb0">ThreadJoin</a>)</div><div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>  {</div><div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>  }</div><div class="line"><a name="l01068"></a><span class="lineno"> 1068</span> </div><div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1SVFStmt.html#ad0b4dbe87e009518f22360c48b0d0c22">toString</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l01070"></a><span class="lineno"> 1070</span> };</div><div class="line"><a name="l01071"></a><span class="lineno"> 1071</span> </div><div class="line"><a name="l01072"></a><span class="lineno"> 1072</span> } <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l01073"></a><span class="lineno"> 1073</span> </div><div class="line"><a name="l01074"></a><span class="lineno"> 1074</span> <span class="preprocessor">#endif </span><span class="comment">/* PAGEDGE_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="classSVF_1_1CmpStmt_html_a16a5fddf61f6a13ee34dde0c4267d0e5"><div class="ttname"><a href="classSVF_1_1CmpStmt.html#a16a5fddf61f6a13ee34dde0c4267d0e5">SVF::CmpStmt::classof</a></div><div class="ttdeci">static bool classof(const SVFStmt *edge)</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00791">SVFStatements.h:791</a></div></div>
|
|
70
70
|
<div class="ttc" id="classSVF_1_1SVFStmt_html_a793c53e0b4f9a58099c096f0a0856495"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a793c53e0b4f9a58099c096f0a0856495">SVF::SVFStmt::getBB</a></div><div class="ttdeci">const BasicBlock * getBB() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00123">SVFStatements.h:123</a></div></div>
|
|
71
71
|
<div class="ttc" id="classSVF_1_1BinaryOPStmt_html_a0c4f900cf7321e8385b4f45e5cba3d1a"><div class="ttname"><a href="classSVF_1_1BinaryOPStmt.html#a0c4f900cf7321e8385b4f45e5cba3d1a">SVF::BinaryOPStmt::opcode</a></div><div class="ttdeci">u32_t opcode</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00828">SVFStatements.h:828</a></div></div>
|
|
72
72
|
<div class="ttc" id="classSVF_1_1AddrStmt_html"><div class="ttname"><a href="classSVF_1_1AddrStmt.html">SVF::AddrStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00266">SVFStatements.h:266</a></div></div>
|
|
@@ -146,7 +146,6 @@ $(function() {
|
|
|
146
146
|
<div class="ttc" id="classSVF_1_1ICFGNode_html"><div class="ttname"><a href="classSVF_1_1ICFGNode.html">SVF::ICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00054">ICFGNode.h:54</a></div></div>
|
|
147
147
|
<div class="ttc" id="classSVF_1_1SelectStmt_html_ad4c3e9529176478bb726279a76050e8c"><div class="ttname"><a href="classSVF_1_1SelectStmt.html#ad4c3e9529176478bb726279a76050e8c">SVF::SelectStmt::getCondition</a></div><div class="ttdeci">const SVFVar * getCondition() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00762">SVFStatements.h:762</a></div></div>
|
|
148
148
|
<div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00077">SVFBasicTypes.h:77</a></div></div>
|
|
149
|
-
<div class="ttc" id="namespaceSVF_html_abe09d99af006554a5c00803e9a89f9a6"><div class="ttname"><a href="namespaceSVF.html#abe09d99af006554a5c00803e9a89f9a6">SVF::s64_t</a></div><div class="ttdeci">signed s64_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00080">SVFBasicTypes.h:80</a></div></div>
|
|
150
149
|
<div class="ttc" id="classSVF_1_1CallPE_html_aa50cca8bd91ffb135a7998b58ad7966f"><div class="ttname"><a href="classSVF_1_1CallPE.html#aa50cca8bd91ffb135a7998b58ad7966f">SVF::CallPE::getCallInst</a></div><div class="ttdeci">const CallICFGNode * getCallInst() const</div><div class="ttdoc">Get method for the call instruction. </div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00513">SVFStatements.h:513</a></div></div>
|
|
151
150
|
<div class="ttc" id="classSVF_1_1TDJoinPE_html"><div class="ttname"><a href="classSVF_1_1TDJoinPE.html">SVF::TDJoinPE</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l01039">SVFStatements.h:1039</a></div></div>
|
|
152
151
|
<div class="ttc" id="classSVF_1_1SVFStmt_html_ac517a3166a3afe45d04480534ac3bb50"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#ac517a3166a3afe45d04480534ac3bb50">SVF::SVFStmt::classof</a></div><div class="ttdeci">static bool classof(const SVFStmt *)</div><div class="ttdoc">ClassOf. </div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00076">SVFStatements.h:76</a></div></div>
|
|
@@ -279,6 +278,7 @@ $(function() {
|
|
|
279
278
|
<div class="ttc" id="classSVF_1_1MultiOpndStmt_html_acf8c7cfbf1c8baab672040635bb9a007"><div class="ttname"><a href="classSVF_1_1MultiOpndStmt.html#acf8c7cfbf1c8baab672040635bb9a007">SVF::MultiOpndStmt::OPVars</a></div><div class="ttdeci">std::vector< SVFVar * > OPVars</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00592">SVFStatements.h:592</a></div></div>
|
|
280
279
|
<div class="ttc" id="classSVF_1_1IntraICFGNode_html"><div class="ttname"><a href="classSVF_1_1IntraICFGNode.html">SVF::IntraICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00175">ICFGNode.h:175</a></div></div>
|
|
281
280
|
<div class="ttc" id="classSVF_1_1UnaryOPStmt_html_a2a4b7e3a4c5be8a253b542f144f830b7"><div class="ttname"><a href="classSVF_1_1UnaryOPStmt.html#a2a4b7e3a4c5be8a253b542f144f830b7">SVF::UnaryOPStmt::classof</a></div><div class="ttdeci">static bool classof(const SVFStmt *edge)</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00886">SVFStatements.h:886</a></div></div>
|
|
281
|
+
<div class="ttc" id="namespaceSVF_html_ad781b0b14e89773e774072b280658ef3"><div class="ttname"><a href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">SVF::s64_t</a></div><div class="ttdeci">signed long long s64_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00080">SVFBasicTypes.h:80</a></div></div>
|
|
282
282
|
<div class="ttc" id="classSVF_1_1CmpStmt_html_af9f7fe4aa92bb443cd517f06a8fb94cd"><div class="ttname"><a href="classSVF_1_1CmpStmt.html#af9f7fe4aa92bb443cd517f06a8fb94cd">SVF::CmpStmt::classof</a></div><div class="ttdeci">static bool classof(const GenericPAGEdgeTy *edge)</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00799">SVFStatements.h:799</a></div></div>
|
|
283
283
|
<div class="ttc" id="classSVF_1_1AddrStmt_html_a42caa75acb42ce8e290c1278622f139c"><div class="ttname"><a href="classSVF_1_1AddrStmt.html#a42caa75acb42ce8e290c1278622f139c">SVF::AddrStmt::AddrStmt</a></div><div class="ttdeci">AddrStmt(SVFVar *s, SVFVar *d)</div><div class="ttdoc">constructor </div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00291">SVFStatements.h:291</a></div></div>
|
|
284
284
|
<div class="ttc" id="classSVF_1_1BinaryOPStmt_html_abc24c2d50b164a637ad0cec371cb7e63"><div class="ttname"><a href="classSVF_1_1BinaryOPStmt.html#abc24c2d50b164a637ad0cec371cb7e63">SVF::BinaryOPStmt::classof</a></div><div class="ttdeci">static bool classof(const SVFStmt *edge)</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00837">SVFStatements.h:837</a></div></div>
|