svf-tools 1.0.362 → 1.0.366
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/Andersen_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ConsGNode_8h_source.html +5 -5
- package/SVF-doxygen/html/html/ConsG_8cpp_source.html +34 -32
- package/SVF-doxygen/html/html/ConsG_8h_source.html +20 -20
- package/SVF-doxygen/html/html/ContextDDA_8h_source.html +1 -1
- package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/DDAClient_8h_source.html +1 -1
- package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +1 -1
- package/SVF-doxygen/html/html/FlowDDA_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ICFG_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +1 -1
- package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/PAGBuilderFromFile_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +1 -1
- package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +13 -15
- package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +14 -14
- package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +2 -2
- package/SVF-doxygen/html/html/SVFG_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/SVFG_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +12 -6
- package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +90 -84
- package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +43 -39
- package/SVF-doxygen/html/html/SVFIR_8h_source.html +41 -39
- package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +21 -20
- package/SVF-doxygen/html/html/SVFStatements_8h.html +2 -0
- package/SVF-doxygen/html/html/SVFStatements_8h_source.html +78 -62
- package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +13 -13
- package/SVF-doxygen/html/html/SymbolTableBuilder_8h_source.html +12 -12
- package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/VFGNode_8h_source.html +5 -5
- package/SVF-doxygen/html/html/VFG_8cpp_source.html +42 -40
- package/SVF-doxygen/html/html/VFG_8h_source.html +26 -26
- package/SVF-doxygen/html/html/annotated.html +58 -57
- package/SVF-doxygen/html/html/classSVF_1_1AddrCGEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1AddrStmt-members.html +14 -13
- package/SVF-doxygen/html/html/classSVF_1_1AddrStmt.html +4 -3
- package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ArgumentVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1AssignStmt-members.html +14 -13
- package/SVF-doxygen/html/html/classSVF_1_1AssignStmt.html +4 -3
- package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt-members.html +30 -28
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt.html +26 -22
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1BranchStmt-members.html +16 -15
- package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +41 -40
- package/SVF-doxygen/html/html/classSVF_1_1BranchVFGNode.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1CallPE-members.html +14 -13
- package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +6 -5
- package/SVF-doxygen/html/html/classSVF_1_1CmpStmt-members.html +30 -28
- package/SVF-doxygen/html/html/classSVF_1_1CmpStmt.html +27 -23
- package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +79 -77
- package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode-members.html +26 -26
- package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode.html +43 -43
- package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CopyStmt-members.html +14 -13
- package/SVF-doxygen/html/html/classSVF_1_1CopyStmt.html +4 -3
- package/SVF-doxygen/html/html/classSVF_1_1DDAClient.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GenericNode.html +20 -21
- package/SVF-doxygen/html/html/classSVF_1_1GenericNode.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1GepStmt-members.html +15 -14
- package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +6 -5
- package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +4 -5
- package/SVF-doxygen/html/html/classSVF_1_1LoadStmt-members.html +14 -13
- package/SVF-doxygen/html/html/classSVF_1_1LoadStmt.html +6 -5
- package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MultiOpndStmt-members.html +33 -31
- package/SVF-doxygen/html/html/classSVF_1_1MultiOpndStmt.html +66 -24
- package/SVF-doxygen/html/html/classSVF_1_1MultiOpndStmt.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1OfflineConsG.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +9 -10
- package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1PhiStmt-members.html +21 -16
- package/SVF-doxygen/html/html/classSVF_1_1PhiStmt.html +186 -73
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +38 -40
- package/SVF-doxygen/html/html/classSVF_1_1RetPE-members.html +14 -13
- package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +6 -5
- package/SVF-doxygen/html/html/classSVF_1_1SVFG-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +10 -10
- package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR-members.html +177 -176
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +160 -90
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder-members.html +36 -34
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +340 -223
- package/SVF-doxygen/html/html/classSVF_1_1SVFStmt-members.html +17 -16
- package/SVF-doxygen/html/html/classSVF_1_1SVFStmt.html +9 -5
- package/SVF-doxygen/html/html/classSVF_1_1SVFStmt.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1SelectStmt-members.html +154 -0
- package/SVF-doxygen/html/html/classSVF_1_1SelectStmt.html +704 -0
- package/SVF-doxygen/html/html/classSVF_1_1SelectStmt.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1StmtVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1StoreStmt-members.html +17 -16
- package/SVF-doxygen/html/html/classSVF_1_1StoreStmt.html +6 -5
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +39 -39
- package/SVF-doxygen/html/html/classSVF_1_1TDForkPE-members.html +17 -16
- package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +15 -14
- package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE-members.html +17 -16
- package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +15 -14
- package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt-members.html +17 -16
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt.html +29 -28
- package/SVF-doxygen/html/html/classSVF_1_1VFG-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VFG.html +61 -59
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +1 -1
- package/SVF-doxygen/html/html/classes.html +70 -70
- package/SVF-doxygen/html/html/functions_a.html +12 -8
- package/SVF-doxygen/html/html/functions_b.html +4 -2
- package/SVF-doxygen/html/html/functions_c.html +31 -29
- package/SVF-doxygen/html/html/functions_eval_s.html +3 -0
- package/SVF-doxygen/html/html/functions_func.html +12 -8
- package/SVF-doxygen/html/html/functions_func_c.html +18 -17
- package/SVF-doxygen/html/html/functions_func_g.html +19 -6
- package/SVF-doxygen/html/html/functions_func_o.html +2 -1
- package/SVF-doxygen/html/html/functions_func_s.html +8 -5
- package/SVF-doxygen/html/html/functions_func_t.html +1 -0
- package/SVF-doxygen/html/html/functions_func_u.html +1 -0
- package/SVF-doxygen/html/html/functions_g.html +22 -9
- package/SVF-doxygen/html/html/functions_i.html +3 -3
- package/SVF-doxygen/html/html/functions_l.html +3 -3
- package/SVF-doxygen/html/html/functions_m.html +1 -1
- package/SVF-doxygen/html/html/functions_o.html +20 -13
- package/SVF-doxygen/html/html/functions_p.html +6 -6
- package/SVF-doxygen/html/html/functions_s.html +23 -17
- package/SVF-doxygen/html/html/functions_t.html +5 -4
- package/SVF-doxygen/html/html/functions_type_o.html +3 -0
- package/SVF-doxygen/html/html/functions_u.html +1 -0
- package/SVF-doxygen/html/html/functions_vars_c.html +3 -0
- package/SVF-doxygen/html/html/functions_vars_o.html +3 -0
- package/SVF-doxygen/html/html/hierarchy.html +55 -54
- package/SVF-doxygen/html/html/namespaceSVF.html +3 -1
- package/SVF-doxygen/html/html/search/all_1.js +4 -3
- package/SVF-doxygen/html/html/search/all_10.js +7 -7
- package/SVF-doxygen/html/html/search/all_12.js +1 -1
- package/SVF-doxygen/html/html/search/all_13.js +8 -6
- package/SVF-doxygen/html/html/search/all_14.js +4 -4
- package/SVF-doxygen/html/html/search/all_15.js +1 -1
- package/SVF-doxygen/html/html/search/all_16.js +1 -1
- package/SVF-doxygen/html/html/search/all_2.js +1 -1
- package/SVF-doxygen/html/html/search/all_3.js +3 -3
- package/SVF-doxygen/html/html/search/all_7.js +5 -1
- package/SVF-doxygen/html/html/search/all_9.js +1 -1
- package/SVF-doxygen/html/html/search/all_c.js +2 -2
- package/SVF-doxygen/html/html/search/all_d.js +1 -1
- package/SVF-doxygen/html/html/search/all_e.js +1 -1
- package/SVF-doxygen/html/html/search/all_f.js +3 -1
- package/SVF-doxygen/html/html/search/classes_f.js +1 -0
- package/SVF-doxygen/html/html/search/enumvalues_f.js +1 -0
- package/SVF-doxygen/html/html/search/functions_0.js +4 -3
- package/SVF-doxygen/html/html/search/functions_10.js +1 -0
- package/SVF-doxygen/html/html/search/functions_11.js +1 -1
- package/SVF-doxygen/html/html/search/functions_12.js +1 -1
- package/SVF-doxygen/html/html/search/functions_2.js +1 -1
- package/SVF-doxygen/html/html/search/functions_6.js +5 -1
- package/SVF-doxygen/html/html/search/functions_d.js +1 -1
- package/SVF-doxygen/html/html/search/functions_e.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_e.js +1 -0
- package/SVF-doxygen/html/html/search/variables_14.js +1 -1
- package/SVF-doxygen/html/html/search/variables_3.js +1 -0
- package/SVF-doxygen/html/html/search/variables_e.js +1 -1
- package/SVF-doxygen/html/html/search/variables_f.js +1 -0
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +16 -16
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html +16 -16
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html +18 -18
- package/include/Graphs/VFG.h +1 -1
- package/include/MemoryModel/SVFIR.h +3 -1
- package/include/MemoryModel/SVFStatements.h +76 -4
- package/include/SVF-FE/SVFIRBuilder.h +12 -2
- package/lib/Graphs/ConsG.cpp +9 -0
- package/lib/Graphs/ICFG.cpp +12 -17
- package/lib/Graphs/VFG.cpp +9 -0
- package/lib/MemoryModel/PAGBuilderFromFile.cpp +3 -1
- package/lib/MemoryModel/PointerAnalysis.cpp +0 -3
- package/lib/MemoryModel/SVFIR.cpp +24 -3
- package/lib/MemoryModel/SVFStatements.cpp +14 -0
- package/lib/SVF-FE/SVFIRBuilder.cpp +55 -13
- package/lib/SVF-FE/SymbolTableBuilder.cpp +1 -0
- package/package.json +1 -1
|
@@ -184,8 +184,8 @@ Private Attributes</h2></td></tr>
|
|
|
184
184
|
<p>Analyse types of all flattened fields of this object. </p>
|
|
185
185
|
<p>Analyse types of all flattened fields of this object </p>
|
|
186
186
|
|
|
187
|
-
<p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#
|
|
188
|
-
<div class="fragment"><div class="line"><a name="
|
|
187
|
+
<p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#l00503">503</a> of file <a class="el" href="SymbolTableBuilder_8cpp_source.html">SymbolTableBuilder.cpp</a>.</p>
|
|
188
|
+
<div class="fragment"><div class="line"><a name="l00504"></a><span class="lineno"> 504</span> {</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span> </div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a> * refty = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a><<a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>>(val->getType());</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(SVFUtil::isa<PointerType>(refty) && <span class="stringliteral">"this value should be a pointer type!"</span>);</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* elemTy = refty->getElementType();</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  <span class="keywordtype">bool</span> isPtrObj = <span class="keyword">false</span>;</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>  <span class="comment">// Find the inter nested array element</span></div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  <span class="keywordflow">while</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a146d286041987860388da3d8bc85cee3">ArrayType</a> *AT= SVFUtil::dyn_cast<ArrayType>(elemTy))</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  {</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  elemTy = AT->getElementType();</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  <span class="keywordflow">if</span>(elemTy->isPointerTy())</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  isPtrObj = <span class="keyword">true</span>;</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  <span class="keywordflow">if</span>(SVFUtil::isa<GlobalVariable>(val) && SVFUtil::cast<GlobalVariable>(val)->hasInitializer()</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>  && SVFUtil::isa<ConstantArray>(SVFUtil::cast<GlobalVariable>(val)->getInitializer()))</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  {</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  typeinfo-><a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830aff4142c0c411dea07b484a19af514047">ObjTypeInfo::CONST_ARRAY_OBJ</a>);</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>  }</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>  typeinfo-><a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830adedc43e0fcaebf433120869aa9307b1c">ObjTypeInfo::VAR_ARRAY_OBJ</a>);</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  }</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a2bf58575ac7d068e0f1a4cf953b9e6cb">StructType</a> *ST= SVFUtil::dyn_cast<StructType>(elemTy))</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>  {</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  <span class="keyword">const</span> std::vector<FlattenedFieldInfo>& flattenFields = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-><a class="code" href="classSVF_1_1SymbolTableInfo.html#a9ca564bdc1f40a2ccd30d98e0e4075b0">getFlattenedFieldInfoVec</a>(ST);</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  <span class="keywordflow">for</span>(std::vector<FlattenedFieldInfo>::const_iterator it = flattenFields.begin(), eit = flattenFields.end();</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  it!=eit; ++it)</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>  <span class="keywordflow">if</span>((*it).getFlattenElemTy()->isPointerTy())</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>  isPtrObj = <span class="keyword">true</span>;</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>  }</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  <span class="keywordflow">if</span>(SVFUtil::isa<GlobalVariable>(val) && SVFUtil::cast<GlobalVariable>(val)->hasInitializer()</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>  && SVFUtil::isa<ConstantStruct>(SVFUtil::cast<GlobalVariable>(val)->getInitializer()))</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>  typeinfo-><a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830a6443b9fadd2d34e00832b2215a120ebd">ObjTypeInfo::CONST_STRUCT_OBJ</a>);</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>  typeinfo-><a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830aaf98981bd15b41f543fd99d0c6222f08">ObjTypeInfo::VAR_STRUCT_OBJ</a>);</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  }</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (elemTy->isPointerTy())</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>  {</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>  isPtrObj = <span class="keyword">true</span>;</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>  }</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span> </div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>  <span class="keywordflow">if</span>(isPtrObj)</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>  typeinfo-><a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830ad17b2a35fb492561c4011dbe3880c6c9">ObjTypeInfo::HASPTR_OBJ</a>);</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span> }</div><div class="ttc" id="classSVF_1_1ObjTypeInfo_html_a91b41b7ade5871362b77a2ef566b2830aff4142c0c411dea07b484a19af514047"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830aff4142c0c411dea07b484a19af514047">SVF::ObjTypeInfo::CONST_ARRAY_OBJ</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00611">SymbolTableInfo.h:611</a></div></div>
|
|
189
189
|
<div class="ttc" id="namespaceSVF_html_a1d008c0666c145622b81d427be64c52d"><div class="ttname"><a href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">SVF::Type</a></div><div class="ttdeci">llvm::Type Type</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00075">BasicTypes.h:75</a></div></div>
|
|
190
190
|
<div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
|
|
191
191
|
<div class="ttc" id="namespaceSVF_html_aa962cc1d782cc46553251e96b64a754b"><div class="ttname"><a href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">SVF::PointerType</a></div><div class="ttdeci">llvm::PointerType PointerType</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00108">BasicTypes.h:108</a></div></div>
|
|
@@ -223,7 +223,7 @@ Private Attributes</h2></td></tr>
|
|
|
223
223
|
<p>if (SVFUtil::isa<InlineAsm>(Callee)) </p>
|
|
224
224
|
|
|
225
225
|
<p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#l00047">47</a> of file <a class="el" href="SymbolTableBuilder_8cpp_source.html">SymbolTableBuilder.cpp</a>.</p>
|
|
226
|
-
<div class="fragment"><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>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a0d7588578735679773493ff2d5e458e1">SVFUtil::increaseStackSize</a>();</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">symInfo</a>-><a class="code" href="classSVF_1_1SymbolTableInfo.html#a4f916c64ca04c4db30bd19fb8505724d">setModule</a>(svfModule);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <a class="code" href="classSVF_1_1StInfo.html#aed9399cfe3ace00289f2a5265df80199">StInfo::setMaxFieldLimit</a>(<a class="code" href="classSVF_1_1Options.html#adfc1a5c6098d3867e29fc65ca9ffa1cc">Options::MaxFieldLimit</a>);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="comment">// Pointer #0 always represents the null pointer.</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">symInfo</a>-><a class="code" href="classSVF_1_1SymbolTableInfo.html#a125faa0295b38d027b35bc3d76b3afdd">totalSymNum</a>++ == <a class="code" href="classSVF_1_1SymbolTableInfo.html#afd2cf6ef6d7f2a583c709a72067be89ba1e6cc9ef0abd047b183382f2681cd4c1">SymbolTableInfo::NullPtr</a> && <span class="stringliteral">"Something changed!"</span>);</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>  <span class="comment">// Pointer #1 always represents the pointer points-to black hole.</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">symInfo</a>-><a class="code" href="classSVF_1_1SymbolTableInfo.html#a125faa0295b38d027b35bc3d76b3afdd">totalSymNum</a>++ == <a class="code" href="classSVF_1_1SymbolTableInfo.html#afd2cf6ef6d7f2a583c709a72067be89ba9a9d3f03f58ccd4fdaaf08327a74aa03">SymbolTableInfo::BlkPtr</a> && <span class="stringliteral">"Something changed!"</span>);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="comment">// Object #2 is black hole the object that may point to any object</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">symInfo</a>-><a class="code" href="classSVF_1_1SymbolTableInfo.html#a125faa0295b38d027b35bc3d76b3afdd">totalSymNum</a>++ == <a class="code" href="classSVF_1_1SymbolTableInfo.html#afd2cf6ef6d7f2a583c709a72067be89ba95734ab884566beab5cd3523c250b539">SymbolTableInfo::BlackHole</a> && <span class="stringliteral">"Something changed!"</span>);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">symInfo</a>-><a class="code" href="classSVF_1_1SymbolTableInfo.html#a6ddf057415f641bd8ad15bded1415776">createBlkObj</a>(<a class="code" href="classSVF_1_1SymbolTableInfo.html#afd2cf6ef6d7f2a583c709a72067be89ba95734ab884566beab5cd3523c250b539">SymbolTableInfo::BlackHole</a>);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="comment">// Object #3 always represents the unique constant of a program (merging all constants if Options::ModelConsts is disabled)</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">symInfo</a>-><a class="code" href="classSVF_1_1SymbolTableInfo.html#a125faa0295b38d027b35bc3d76b3afdd">totalSymNum</a>++ == <a class="code" href="classSVF_1_1SymbolTableInfo.html#afd2cf6ef6d7f2a583c709a72067be89baa3ecb7c51e2cba67d1f9a5284c2f215f">SymbolTableInfo::ConstantObj</a> && <span class="stringliteral">"Something changed!"</span>);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">symInfo</a>-><a class="code" href="classSVF_1_1SymbolTableInfo.html#ab5c9d593aa68c7150cd382db230eec3e">createConstantObj</a>(<a class="code" href="classSVF_1_1SymbolTableInfo.html#afd2cf6ef6d7f2a583c709a72067be89baa3ecb7c51e2cba67d1f9a5284c2f215f">SymbolTableInfo::ConstantObj</a>);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="comment">// Add symbols for all the globals .</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1SVFModule.html#a4cf1ca2e9f045a0520b0a8a6cd5993f2">SVFModule::global_iterator</a> I = svfModule-><a class="code" href="classSVF_1_1SVFModule.html#a4dc32c583d29d74d052eaa5665b0b70e">global_begin</a>(), E =</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  svfModule-><a class="code" href="classSVF_1_1SVFModule.html#a8a34164634d6ad9a7b76175907c8c44b">global_end</a>(); I != E; ++I)</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>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>(*I);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</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"> 76</span>  <span class="comment">// Add symbols for all the global aliases</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1SVFModule.html#abee99d29b7d4c4915a386895c755009c">SVFModule::alias_iterator</a> I = svfModule-><a class="code" href="classSVF_1_1SVFModule.html#a7f2b4647c8d69c8328b63e576cb6d065">alias_begin</a>(), E =</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  svfModule-><a class="code" href="classSVF_1_1SVFModule.html#a3cfd0983849950099d1e8f8e0fda42bc">alias_end</a>(); I != E; I++)</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  {</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>(*I);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>((*I)->getAliasee());</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  }</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="comment">// Add symbols for all of the functions and the instructions in them.</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1SVFModule.html#aa5a0780c5c69a1e9a0ba902b4ad49714">SVFModule::llvm_iterator</a> F = svfModule-><a class="code" href="classSVF_1_1SVFModule.html#a648542aa5c4b487ad5aa12a39d15e951">llvmFunBegin</a>(), E = svfModule-><a class="code" href="classSVF_1_1SVFModule.html#af38d0f831967d6d8391a4c84e58d6519">llvmFunEnd</a>(); F != E; ++F)</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  {</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *fun = *F;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>(fun);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a2f5321b9a76ea833650f1391ecd8de5f">collectRet</a>(fun);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keywordflow">if</span> (fun->getFunctionType()->isVarArg())</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#add1f3d59a4a8234fb398ed52d4b2115e">collectVararg</a>(fun);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> </div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="comment">// Add symbols for all formal parameters.</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keywordflow">for</span> (Function::arg_iterator I = fun->arg_begin(), E = fun->arg_end();</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  I != E; ++I)</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  {</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>(&*I);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="comment">// collect and create symbols inside the function body</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a255af6ff30782cb9a548feadb0fe7d6b">inst_iterator</a> II = inst_begin(*fun), E = inst_end(*fun); II != E; ++II)</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  {</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *inst = &*II;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>(inst);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> </div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="comment">// initialization for some special instructions</span></div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="comment">//{@</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ab696aab940eb187dc81217efe8649af5">StoreInst</a> *st = SVFUtil::dyn_cast<StoreInst>(inst))</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  {</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>(st->getPointerOperand());</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>(st->getValueOperand());</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>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5a6e8ab900d5cd17ef72661006a7fbe0">LoadInst</a> *ld = SVFUtil::dyn_cast<LoadInst>(inst))</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  {</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>(ld->getPointerOperand());</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  }</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ac8d4990439af7a2ecca7e15383119674">PHINode</a> *phi = SVFUtil::dyn_cast<PHINode>(inst))</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  {</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i < phi->getNumIncomingValues(); ++i)</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>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>(phi->getIncomingValue(i));</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  }</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  }</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ac4e93e1fec646ff222940a663843921b">GetElementPtrInst</a> *gep = SVFUtil::dyn_cast<GetElementPtrInst>(</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  inst))</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  {</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>(gep->getPointerOperand());</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>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ab7fac9d4a4839be445c89777e21bc307">SelectInst</a> *sel = SVFUtil::dyn_cast<SelectInst>(inst))</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  {</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>(sel->getTrueValue());</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>(sel->getFalseValue());</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  }</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aad5d26ab07a5d1314bdb8f54e0fcdb22">BinaryOperator</a> *binary = SVFUtil::dyn_cast<BinaryOperator>(inst))</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  {</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i < binary->getNumOperands(); i++)</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>(binary->getOperand(i));</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  }</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a292a6e8c5b4f2023b5575879c57eca62">UnaryOperator</a> *unary = SVFUtil::dyn_cast<UnaryOperator>(inst))</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  {</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i < unary->getNumOperands(); i++)</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>(unary->getOperand(i));</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  }</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5d875a9d726bb9f68a17efa528dec0b4">CmpInst</a> *cmp = SVFUtil::dyn_cast<CmpInst>(inst))</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  {</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i < cmp->getNumOperands(); i++)</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>(cmp->getOperand(i));</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>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a962e9a9044a46fc4bd2367384f6e0827">CastInst</a> *<a class="code" href="namespaceSVF_1_1SVFUtil.html#a0d100868bf63b968d387eb50e9603f7c">cast</a> = SVFUtil::dyn_cast<CastInst>(inst))</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  {</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a0d100868bf63b968d387eb50e9603f7c">cast</a>->getOperand(0));</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  }</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ac7dcc6103dee3a0bbc2fd2e02716a154">ReturnInst</a> *ret = SVFUtil::dyn_cast<ReturnInst>(inst))</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  {</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="keywordflow">if</span>(ret->getReturnValue())</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>(ret->getReturnValue());</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  }</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ac9a05dd7ab16e998625037aa242cd30f">BranchInst</a> *br = SVFUtil::dyn_cast<BranchInst>(inst))</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  {</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* opnd = br->isConditional() ? br->getCondition() : br->getOperand(0);</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>(opnd);</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  }</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a412280b134578905248ce0122c5db7c9">SwitchInst</a> *sw = SVFUtil::dyn_cast<SwitchInst>(inst))</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>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>(sw->getCondition());</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  }</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a8d8216a92140d982303f83ea424ddc91">isNonInstricCallSite</a>(inst))</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  {</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> </div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <a class="code" href="classSVF_1_1CallSite.html">CallSite</a> cs = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a202de7ad2bea0311e2f75894c030e7a9">SVFUtil::getLLVMCallSite</a>(inst);</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">symInfo</a>-><a class="code" href="classSVF_1_1SymbolTableInfo.html#a05a05894819e9cad6ee0033a6695e35e">callSiteSet</a>.insert(cs);</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1CallSite.html#ac1cdfe5e54026960a23142e26b3150ff">CallSite::arg_iterator</a> it = cs.<a class="code" href="classSVF_1_1CallSite.html#aabc0054b7f4e06b7ca0b6072746984e6">arg_begin</a>();</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  it != cs.<a class="code" href="classSVF_1_1CallSite.html#a46e8ffe430bb2711abaafc9d7864909e">arg_end</a>(); ++it)</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  {</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>(*it);</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  }</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="comment">// Calls to inline asm need to be added as well because the callee isn't</span></div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="comment">// referenced anywhere else.</span></div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *Callee = cs.<a class="code" href="classSVF_1_1CallSite.html#a9526f6c3829f8897d1ca617feda8451a">getCalledValue</a>();</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>(Callee);</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="comment">//TODO handle inlineAsm</span></div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> <span class="comment"></span></div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  }</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  }</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  }</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span> </div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">symInfo</a>-><a class="code" href="classSVF_1_1SymbolTableInfo.html#a125faa0295b38d027b35bc3d76b3afdd">totalSymNum</a> = <a class="code" href="classSVF_1_1NodeIDAllocator.html#a2bd3ca30fc9669d9a0327544bdb4557b">NodeIDAllocator::get</a>()-><a class="code" href="classSVF_1_1NodeIDAllocator.html#a92b053f79cfa1259603836cb0aacad7d">endSymbolAllocation</a>();</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#abbfd1d7e985483c486394d8db85b6a85">Options::SymTabPrint</a>) {</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-><a class="code" href="classSVF_1_1SymbolTableInfo.html#a9f4cf6914b400b9f69c7852f13c496a9">dump</a>();</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  }</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span> }</div><div class="ttc" id="classSVF_1_1SVFModule_html_af38d0f831967d6d8391a4c84e58d6519"><div class="ttname"><a href="classSVF_1_1SVFModule.html#af38d0f831967d6d8391a4c84e58d6519">SVF::SVFModule::llvmFunEnd</a></div><div class="ttdeci">llvm_iterator llvmFunEnd()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00138">SVFModule.h:138</a></div></div>
|
|
226
|
+
<div class="fragment"><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>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a0d7588578735679773493ff2d5e458e1">SVFUtil::increaseStackSize</a>();</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">symInfo</a>-><a class="code" href="classSVF_1_1SymbolTableInfo.html#a4f916c64ca04c4db30bd19fb8505724d">setModule</a>(svfModule);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <a class="code" href="classSVF_1_1StInfo.html#aed9399cfe3ace00289f2a5265df80199">StInfo::setMaxFieldLimit</a>(<a class="code" href="classSVF_1_1Options.html#adfc1a5c6098d3867e29fc65ca9ffa1cc">Options::MaxFieldLimit</a>);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="comment">// Pointer #0 always represents the null pointer.</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">symInfo</a>-><a class="code" href="classSVF_1_1SymbolTableInfo.html#a125faa0295b38d027b35bc3d76b3afdd">totalSymNum</a>++ == <a class="code" href="classSVF_1_1SymbolTableInfo.html#afd2cf6ef6d7f2a583c709a72067be89ba1e6cc9ef0abd047b183382f2681cd4c1">SymbolTableInfo::NullPtr</a> && <span class="stringliteral">"Something changed!"</span>);</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>  <span class="comment">// Pointer #1 always represents the pointer points-to black hole.</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">symInfo</a>-><a class="code" href="classSVF_1_1SymbolTableInfo.html#a125faa0295b38d027b35bc3d76b3afdd">totalSymNum</a>++ == <a class="code" href="classSVF_1_1SymbolTableInfo.html#afd2cf6ef6d7f2a583c709a72067be89ba9a9d3f03f58ccd4fdaaf08327a74aa03">SymbolTableInfo::BlkPtr</a> && <span class="stringliteral">"Something changed!"</span>);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="comment">// Object #2 is black hole the object that may point to any object</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">symInfo</a>-><a class="code" href="classSVF_1_1SymbolTableInfo.html#a125faa0295b38d027b35bc3d76b3afdd">totalSymNum</a>++ == <a class="code" href="classSVF_1_1SymbolTableInfo.html#afd2cf6ef6d7f2a583c709a72067be89ba95734ab884566beab5cd3523c250b539">SymbolTableInfo::BlackHole</a> && <span class="stringliteral">"Something changed!"</span>);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">symInfo</a>-><a class="code" href="classSVF_1_1SymbolTableInfo.html#a6ddf057415f641bd8ad15bded1415776">createBlkObj</a>(<a class="code" href="classSVF_1_1SymbolTableInfo.html#afd2cf6ef6d7f2a583c709a72067be89ba95734ab884566beab5cd3523c250b539">SymbolTableInfo::BlackHole</a>);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="comment">// Object #3 always represents the unique constant of a program (merging all constants if Options::ModelConsts is disabled)</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">symInfo</a>-><a class="code" href="classSVF_1_1SymbolTableInfo.html#a125faa0295b38d027b35bc3d76b3afdd">totalSymNum</a>++ == <a class="code" href="classSVF_1_1SymbolTableInfo.html#afd2cf6ef6d7f2a583c709a72067be89baa3ecb7c51e2cba67d1f9a5284c2f215f">SymbolTableInfo::ConstantObj</a> && <span class="stringliteral">"Something changed!"</span>);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">symInfo</a>-><a class="code" href="classSVF_1_1SymbolTableInfo.html#ab5c9d593aa68c7150cd382db230eec3e">createConstantObj</a>(<a class="code" href="classSVF_1_1SymbolTableInfo.html#afd2cf6ef6d7f2a583c709a72067be89baa3ecb7c51e2cba67d1f9a5284c2f215f">SymbolTableInfo::ConstantObj</a>);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="comment">// Add symbols for all the globals .</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1SVFModule.html#a4cf1ca2e9f045a0520b0a8a6cd5993f2">SVFModule::global_iterator</a> I = svfModule-><a class="code" href="classSVF_1_1SVFModule.html#a4dc32c583d29d74d052eaa5665b0b70e">global_begin</a>(), E =</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  svfModule-><a class="code" href="classSVF_1_1SVFModule.html#a8a34164634d6ad9a7b76175907c8c44b">global_end</a>(); I != E; ++I)</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>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>(*I);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</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"> 76</span>  <span class="comment">// Add symbols for all the global aliases</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1SVFModule.html#abee99d29b7d4c4915a386895c755009c">SVFModule::alias_iterator</a> I = svfModule-><a class="code" href="classSVF_1_1SVFModule.html#a7f2b4647c8d69c8328b63e576cb6d065">alias_begin</a>(), E =</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  svfModule-><a class="code" href="classSVF_1_1SVFModule.html#a3cfd0983849950099d1e8f8e0fda42bc">alias_end</a>(); I != E; I++)</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  {</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>(*I);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>((*I)->getAliasee());</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  }</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="comment">// Add symbols for all of the functions and the instructions in them.</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1SVFModule.html#aa5a0780c5c69a1e9a0ba902b4ad49714">SVFModule::llvm_iterator</a> F = svfModule-><a class="code" href="classSVF_1_1SVFModule.html#a648542aa5c4b487ad5aa12a39d15e951">llvmFunBegin</a>(), E = svfModule-><a class="code" href="classSVF_1_1SVFModule.html#af38d0f831967d6d8391a4c84e58d6519">llvmFunEnd</a>(); F != E; ++F)</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  {</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *fun = *F;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>(fun);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a2f5321b9a76ea833650f1391ecd8de5f">collectRet</a>(fun);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keywordflow">if</span> (fun->getFunctionType()->isVarArg())</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#add1f3d59a4a8234fb398ed52d4b2115e">collectVararg</a>(fun);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> </div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="comment">// Add symbols for all formal parameters.</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keywordflow">for</span> (Function::arg_iterator I = fun->arg_begin(), E = fun->arg_end();</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  I != E; ++I)</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  {</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>(&*I);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="comment">// collect and create symbols inside the function body</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a255af6ff30782cb9a548feadb0fe7d6b">inst_iterator</a> II = inst_begin(*fun), E = inst_end(*fun); II != E; ++II)</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  {</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *inst = &*II;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>(inst);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> </div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="comment">// initialization for some special instructions</span></div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="comment">//{@</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ab696aab940eb187dc81217efe8649af5">StoreInst</a> *st = SVFUtil::dyn_cast<StoreInst>(inst))</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  {</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>(st->getPointerOperand());</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>(st->getValueOperand());</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>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5a6e8ab900d5cd17ef72661006a7fbe0">LoadInst</a> *ld = SVFUtil::dyn_cast<LoadInst>(inst))</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  {</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>(ld->getPointerOperand());</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  }</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ac8d4990439af7a2ecca7e15383119674">PHINode</a> *phi = SVFUtil::dyn_cast<PHINode>(inst))</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  {</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i < phi->getNumIncomingValues(); ++i)</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>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>(phi->getIncomingValue(i));</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  }</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  }</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ac4e93e1fec646ff222940a663843921b">GetElementPtrInst</a> *gep = SVFUtil::dyn_cast<GetElementPtrInst>(</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  inst))</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  {</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>(gep->getPointerOperand());</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>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ab7fac9d4a4839be445c89777e21bc307">SelectInst</a> *sel = SVFUtil::dyn_cast<SelectInst>(inst))</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  {</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>(sel->getTrueValue());</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>(sel->getFalseValue());</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>(sel->getCondition());</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  }</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aad5d26ab07a5d1314bdb8f54e0fcdb22">BinaryOperator</a> *binary = SVFUtil::dyn_cast<BinaryOperator>(inst))</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  {</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i < binary->getNumOperands(); i++)</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>(binary->getOperand(i));</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>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a292a6e8c5b4f2023b5575879c57eca62">UnaryOperator</a> *unary = SVFUtil::dyn_cast<UnaryOperator>(inst))</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  {</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i < unary->getNumOperands(); i++)</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>(unary->getOperand(i));</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>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5d875a9d726bb9f68a17efa528dec0b4">CmpInst</a> *cmp = SVFUtil::dyn_cast<CmpInst>(inst))</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  {</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i < cmp->getNumOperands(); i++)</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>(cmp->getOperand(i));</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  }</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a962e9a9044a46fc4bd2367384f6e0827">CastInst</a> *<a class="code" href="namespaceSVF_1_1SVFUtil.html#a0d100868bf63b968d387eb50e9603f7c">cast</a> = SVFUtil::dyn_cast<CastInst>(inst))</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  {</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a0d100868bf63b968d387eb50e9603f7c">cast</a>->getOperand(0));</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>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ac7dcc6103dee3a0bbc2fd2e02716a154">ReturnInst</a> *ret = SVFUtil::dyn_cast<ReturnInst>(inst))</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  {</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keywordflow">if</span>(ret->getReturnValue())</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>(ret->getReturnValue());</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>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ac9a05dd7ab16e998625037aa242cd30f">BranchInst</a> *br = SVFUtil::dyn_cast<BranchInst>(inst))</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  {</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* opnd = br->isConditional() ? br->getCondition() : br->getOperand(0);</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>(opnd);</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>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a412280b134578905248ce0122c5db7c9">SwitchInst</a> *sw = SVFUtil::dyn_cast<SwitchInst>(inst))</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  {</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>(sw->getCondition());</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  }</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a8d8216a92140d982303f83ea424ddc91">isNonInstricCallSite</a>(inst))</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  {</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> </div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <a class="code" href="classSVF_1_1CallSite.html">CallSite</a> cs = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a202de7ad2bea0311e2f75894c030e7a9">SVFUtil::getLLVMCallSite</a>(inst);</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">symInfo</a>-><a class="code" href="classSVF_1_1SymbolTableInfo.html#a05a05894819e9cad6ee0033a6695e35e">callSiteSet</a>.insert(cs);</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1CallSite.html#ac1cdfe5e54026960a23142e26b3150ff">CallSite::arg_iterator</a> it = cs.<a class="code" href="classSVF_1_1CallSite.html#aabc0054b7f4e06b7ca0b6072746984e6">arg_begin</a>();</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  it != cs.<a class="code" href="classSVF_1_1CallSite.html#a46e8ffe430bb2711abaafc9d7864909e">arg_end</a>(); ++it)</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  {</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>(*it);</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  }</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="comment">// Calls to inline asm need to be added as well because the callee isn't</span></div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="comment">// referenced anywhere else.</span></div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *Callee = cs.<a class="code" href="classSVF_1_1CallSite.html#a9526f6c3829f8897d1ca617feda8451a">getCalledValue</a>();</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>(Callee);</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span> </div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="comment">//TODO handle inlineAsm</span></div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span> <span class="comment"></span></div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  }</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  }</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  }</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>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">symInfo</a>-><a class="code" href="classSVF_1_1SymbolTableInfo.html#a125faa0295b38d027b35bc3d76b3afdd">totalSymNum</a> = <a class="code" href="classSVF_1_1NodeIDAllocator.html#a2bd3ca30fc9669d9a0327544bdb4557b">NodeIDAllocator::get</a>()-><a class="code" href="classSVF_1_1NodeIDAllocator.html#a92b053f79cfa1259603836cb0aacad7d">endSymbolAllocation</a>();</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#abbfd1d7e985483c486394d8db85b6a85">Options::SymTabPrint</a>) {</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-><a class="code" href="classSVF_1_1SymbolTableInfo.html#a9f4cf6914b400b9f69c7852f13c496a9">dump</a>();</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  }</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> }</div><div class="ttc" id="classSVF_1_1SVFModule_html_af38d0f831967d6d8391a4c84e58d6519"><div class="ttname"><a href="classSVF_1_1SVFModule.html#af38d0f831967d6d8391a4c84e58d6519">SVF::SVFModule::llvmFunEnd</a></div><div class="ttdeci">llvm_iterator llvmFunEnd()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00138">SVFModule.h:138</a></div></div>
|
|
227
227
|
<div class="ttc" id="classSVF_1_1Options_html_abbfd1d7e985483c486394d8db85b6a85"><div class="ttname"><a href="classSVF_1_1Options.html#abbfd1d7e985483c486394d8db85b6a85">SVF::Options::SymTabPrint</a></div><div class="ttdeci">static const llvm::cl::opt< bool > SymTabPrint</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00214">Options.h:214</a></div></div>
|
|
228
228
|
<div class="ttc" id="namespaceSVF_html_ab696aab940eb187dc81217efe8649af5"><div class="ttname"><a href="namespaceSVF.html#ab696aab940eb187dc81217efe8649af5">SVF::StoreInst</a></div><div class="ttdeci">llvm::StoreInst StoreInst</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00151">BasicTypes.h:151</a></div></div>
|
|
229
229
|
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_afd2cf6ef6d7f2a583c709a72067be89ba1e6cc9ef0abd047b183382f2681cd4c1"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#afd2cf6ef6d7f2a583c709a72067be89ba1e6cc9ef0abd047b183382f2681cd4c1">SVF::SymbolTableInfo::NullPtr</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00056">SymbolTableInfo.h:56</a></div></div>
|
|
@@ -266,12 +266,12 @@ Private Attributes</h2></td></tr>
|
|
|
266
266
|
<div class="ttc" id="namespaceSVF_html_a5a6e8ab900d5cd17ef72661006a7fbe0"><div class="ttname"><a href="namespaceSVF.html#a5a6e8ab900d5cd17ef72661006a7fbe0">SVF::LoadInst</a></div><div class="ttdeci">llvm::LoadInst LoadInst</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00152">BasicTypes.h:152</a></div></div>
|
|
267
267
|
<div class="ttc" id="classSVF_1_1CallSite_html"><div class="ttname"><a href="classSVF_1_1CallSite.html">SVF::CallSite</a></div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00303">BasicTypes.h:303</a></div></div>
|
|
268
268
|
<div class="ttc" id="classSVF_1_1NodeIDAllocator_html_a2bd3ca30fc9669d9a0327544bdb4557b"><div class="ttname"><a href="classSVF_1_1NodeIDAllocator.html#a2bd3ca30fc9669d9a0327544bdb4557b">SVF::NodeIDAllocator::get</a></div><div class="ttdeci">static NodeIDAllocator * get(void)</div><div class="ttdoc">Return (singleton) allocator. </div><div class="ttdef"><b>Definition:</b> <a href="NodeIDAllocator_8cpp_source.html#l00025">NodeIDAllocator.cpp:25</a></div></div>
|
|
269
|
-
<div class="ttc" id="classSVF_1_1SymbolTableBuilder_html_a2f5321b9a76ea833650f1391ecd8de5f"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#a2f5321b9a76ea833650f1391ecd8de5f">SVF::SymbolTableBuilder::collectRet</a></div><div class="ttdeci">void collectRet(const Function *val)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#
|
|
269
|
+
<div class="ttc" id="classSVF_1_1SymbolTableBuilder_html_a2f5321b9a76ea833650f1391ecd8de5f"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#a2f5321b9a76ea833650f1391ecd8de5f">SVF::SymbolTableBuilder::collectRet</a></div><div class="ttdeci">void collectRet(const Function *val)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00281">SymbolTableBuilder.cpp:281</a></div></div>
|
|
270
270
|
<div class="ttc" id="classSVF_1_1CallSite_html_ac1cdfe5e54026960a23142e26b3150ff"><div class="ttname"><a href="classSVF_1_1CallSite.html#ac1cdfe5e54026960a23142e26b3150ff">SVF::CallSite::arg_iterator</a></div><div class="ttdeci">User::const_op_iterator arg_iterator</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00311">BasicTypes.h:311</a></div></div>
|
|
271
271
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a8d8216a92140d982303f83ea424ddc91"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a8d8216a92140d982303f83ea424ddc91">SVF::SVFUtil::isNonInstricCallSite</a></div><div class="ttdeci">bool isNonInstricCallSite(const Instruction *inst)</div><div class="ttdoc">Whether an instruction is a callsite in the application code, excluding llvm intrinsic calls...</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00206">SVFUtil.h:206</a></div></div>
|
|
272
|
-
<div class="ttc" id="classSVF_1_1SymbolTableBuilder_html_ac2fa9a797e3e2a8885ccc488030659d5"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">SVF::SymbolTableBuilder::collectSym</a></div><div class="ttdeci">void collectSym(const Value *val)</div><div class="ttdoc">collect the syms </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#
|
|
272
|
+
<div class="ttc" id="classSVF_1_1SymbolTableBuilder_html_ac2fa9a797e3e2a8885ccc488030659d5"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">SVF::SymbolTableBuilder::collectSym</a></div><div class="ttdeci">void collectSym(const Value *val)</div><div class="ttdoc">collect the syms </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00200">SymbolTableBuilder.cpp:200</a></div></div>
|
|
273
273
|
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_ab5c9d593aa68c7150cd382db230eec3e"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#ab5c9d593aa68c7150cd382db230eec3e">SVF::SymbolTableInfo::createConstantObj</a></div><div class="ttdeci">MemObj * createConstantObj(SymID symId)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00359">SymbolTableInfo.cpp:359</a></div></div>
|
|
274
|
-
<div class="ttc" id="classSVF_1_1SymbolTableBuilder_html_add1f3d59a4a8234fb398ed52d4b2115e"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#add1f3d59a4a8234fb398ed52d4b2115e">SVF::SymbolTableBuilder::collectVararg</a></div><div class="ttdeci">void collectVararg(const Function *val)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#
|
|
274
|
+
<div class="ttc" id="classSVF_1_1SymbolTableBuilder_html_add1f3d59a4a8234fb398ed52d4b2115e"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#add1f3d59a4a8234fb398ed52d4b2115e">SVF::SymbolTableBuilder::collectVararg</a></div><div class="ttdeci">void collectVararg(const Function *val)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00296">SymbolTableBuilder.cpp:296</a></div></div>
|
|
275
275
|
<div class="ttc" id="classSVF_1_1SVFModule_html_a8a34164634d6ad9a7b76175907c8c44b"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a8a34164634d6ad9a7b76175907c8c44b">SVF::SVFModule::global_end</a></div><div class="ttdeci">global_iterator global_end()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00172">SVFModule.h:172</a></div></div>
|
|
276
276
|
<div class="ttc" id="namespaceSVF_html_a255af6ff30782cb9a548feadb0fe7d6b"><div class="ttname"><a href="namespaceSVF.html#a255af6ff30782cb9a548feadb0fe7d6b">SVF::inst_iterator</a></div><div class="ttdeci">llvm::inst_iterator inst_iterator</div><div class="ttdoc">LLVM Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00205">BasicTypes.h:205</a></div></div>
|
|
277
277
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a0d7588578735679773493ff2d5e458e1"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a0d7588578735679773493ff2d5e458e1">SVF::SVFUtil::increaseStackSize</a></div><div class="ttdeci">void increaseStackSize()</div><div class="ttdoc">Increase the stack size limit. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00229">SVFUtil.cpp:229</a></div></div>
|
|
@@ -299,8 +299,8 @@ Private Attributes</h2></td></tr>
|
|
|
299
299
|
</div><div class="memdoc">
|
|
300
300
|
<p>Get memory object sym, if not available create a new one </p>
|
|
301
301
|
|
|
302
|
-
<p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#
|
|
303
|
-
<div class="fragment"><div class="line"><a name="
|
|
302
|
+
<p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#l00249">249</a> of file <a class="el" href="SymbolTableBuilder_8cpp_source.html">SymbolTableBuilder.cpp</a>.</p>
|
|
303
|
+
<div class="fragment"><div class="line"><a name="l00250"></a><span class="lineno"> 250</span> {</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  val = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a4b55d5252da1f316f505cf6ce2078b28">getGlobalRep</a>(val);</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  SymbolTableInfo::ValueToIDMapTy::iterator iter = <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">symInfo</a>-><a class="code" href="classSVF_1_1SymbolTableInfo.html#a5840b742ed8c73ece548b9b4aede07ec">objSymMap</a>.find(val);</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <span class="keywordflow">if</span> (iter == <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">symInfo</a>-><a class="code" href="classSVF_1_1SymbolTableInfo.html#a5840b742ed8c73ece548b9b4aede07ec">objSymMap</a>.end())</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  {</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <span class="comment">// if the object pointed by the pointer is a constant data (e.g., i32 0) or a global constant object (e.g. string)</span></div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  <span class="comment">// then we treat them as one ConstantObj</span></div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <span class="keywordflow">if</span>((<a class="code" href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">symInfo</a>-><a class="code" href="classSVF_1_1SymbolTableInfo.html#a61bda1c1c52fb765d0027d8141d35c35">isConstantObjSym</a>(val) && !<a class="code" href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">symInfo</a>-><a class="code" href="classSVF_1_1SymbolTableInfo.html#a89e9c6da843e5eef25c51afd5d0937e5">getModelConstants</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>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">symInfo</a>-><a class="code" href="classSVF_1_1SymbolTableInfo.html#a5840b742ed8c73ece548b9b4aede07ec">objSymMap</a>.insert(std::make_pair(val, <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">symInfo</a>-><a class="code" href="classSVF_1_1SymbolTableInfo.html#ab582424fdb6d9674c1bd4466cdfbe497">constantSymID</a>()));</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  }</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <span class="comment">// otherwise, we will create an object for each abstract memory location</span></div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  {</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <span class="comment">// create obj sym and sym type</span></div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  <a class="code" href="namespaceSVF.html#ad11fe2412b2182365a662ff0e4639b48">SymID</a> <span class="keywordtype">id</span> = <a class="code" href="classSVF_1_1NodeIDAllocator.html#a2bd3ca30fc9669d9a0327544bdb4557b">NodeIDAllocator::get</a>()-><a class="code" href="classSVF_1_1NodeIDAllocator.html#a6ce6b40b8291c6378dda07d943d66e53">allocateObjectId</a>();</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">symInfo</a>-><a class="code" href="classSVF_1_1SymbolTableInfo.html#a5840b742ed8c73ece548b9b4aede07ec">objSymMap</a>.insert(std::make_pair(val, <span class="keywordtype">id</span>));</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#ad46a0423f8709692e1bb0f0fa5b1ca2f">DMemModel</a>,</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">"create a new obj sym "</span> << <span class="keywordtype">id</span> << <span class="stringliteral">"\n"</span>);</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span> </div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  <span class="comment">// create a memory object </span></div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* mem = <span class="keyword">new</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>(<span class="keywordtype">id</span>, <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a31190ba1934f945abe8a1b4fcbb636b3">createObjTypeInfo</a>(val), val);</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">symInfo</a>-><a class="code" href="classSVF_1_1SymbolTableInfo.html#aeab14702eabde827923a692cba8f7f8a">objMap</a>.find(<span class="keywordtype">id</span>) == <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">symInfo</a>-><a class="code" href="classSVF_1_1SymbolTableInfo.html#aeab14702eabde827923a692cba8f7f8a">objMap</a>.end());</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">symInfo</a>-><a class="code" href="classSVF_1_1SymbolTableInfo.html#aeab14702eabde827923a692cba8f7f8a">objMap</a>[id] = mem;</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</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"> 276</span> }</div><div class="ttc" id="classSVF_1_1MemObj_html"><div class="ttname"><a href="classSVF_1_1MemObj.html">SVF::MemObj</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00415">SymbolTableInfo.h:415</a></div></div>
|
|
304
304
|
<div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
|
|
305
305
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a4b55d5252da1f316f505cf6ce2078b28"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a4b55d5252da1f316f505cf6ce2078b28">SVF::SVFUtil::getGlobalRep</a></div><div class="ttdeci">const Value * getGlobalRep(const Value *val)</div><div class="ttdoc">find the unique defined global across multiple modules </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00245">SVFUtil.h:245</a></div></div>
|
|
306
306
|
<div class="ttc" id="classSVF_1_1NodeIDAllocator_html_a6ce6b40b8291c6378dda07d943d66e53"><div class="ttname"><a href="classSVF_1_1NodeIDAllocator.html#a6ce6b40b8291c6378dda07d943d66e53">SVF::NodeIDAllocator::allocateObjectId</a></div><div class="ttdeci">NodeID allocateObjectId(void)</div><div class="ttdoc">Allocate an object ID as determined by the strategy. </div><div class="ttdef"><b>Definition:</b> <a href="NodeIDAllocator_8cpp_source.html#l00049">NodeIDAllocator.cpp:49</a></div></div>
|
|
@@ -311,7 +311,7 @@ Private Attributes</h2></td></tr>
|
|
|
311
311
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a85ab6b592fefc45a0674d3295e01638f"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVF::SVFUtil::outs</a></div><div class="ttdeci">raw_ostream & outs()</div><div class="ttdoc">Overwrite llvm::outs() </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00049">SVFUtil.h:49</a></div></div>
|
|
312
312
|
<div class="ttc" id="classSVF_1_1SymbolTableBuilder_html_a3100246d9b0a58e53f2dbc8acf231afb"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">SVF::SymbolTableBuilder::symInfo</a></div><div class="ttdeci">SymbolTableInfo * symInfo</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8h_source.html#l00046">SymbolTableBuilder.h:46</a></div></div>
|
|
313
313
|
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_aeab14702eabde827923a692cba8f7f8a"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#aeab14702eabde827923a692cba8f7f8a">SVF::SymbolTableInfo::objMap</a></div><div class="ttdeci">IDToMemMapTy objMap</div><div class="ttdoc">map a memory sym id to its obj </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00091">SymbolTableInfo.h:91</a></div></div>
|
|
314
|
-
<div class="ttc" id="classSVF_1_1SymbolTableBuilder_html_a31190ba1934f945abe8a1b4fcbb636b3"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#a31190ba1934f945abe8a1b4fcbb636b3">SVF::SymbolTableBuilder::createObjTypeInfo</a></div><div class="ttdeci">ObjTypeInfo * createObjTypeInfo(const Value *val)</div><div class="ttdoc">Create an objectInfo based on LLVM value. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#
|
|
314
|
+
<div class="ttc" id="classSVF_1_1SymbolTableBuilder_html_a31190ba1934f945abe8a1b4fcbb636b3"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#a31190ba1934f945abe8a1b4fcbb636b3">SVF::SymbolTableBuilder::createObjTypeInfo</a></div><div class="ttdeci">ObjTypeInfo * createObjTypeInfo(const Value *val)</div><div class="ttdoc">Create an objectInfo based on LLVM value. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00461">SymbolTableBuilder.cpp:461</a></div></div>
|
|
315
315
|
<div class="ttc" id="classSVF_1_1NodeIDAllocator_html_a2bd3ca30fc9669d9a0327544bdb4557b"><div class="ttname"><a href="classSVF_1_1NodeIDAllocator.html#a2bd3ca30fc9669d9a0327544bdb4557b">SVF::NodeIDAllocator::get</a></div><div class="ttdeci">static NodeIDAllocator * get(void)</div><div class="ttdoc">Return (singleton) allocator. </div><div class="ttdef"><b>Definition:</b> <a href="NodeIDAllocator_8cpp_source.html#l00025">NodeIDAllocator.cpp:25</a></div></div>
|
|
316
316
|
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a89e9c6da843e5eef25c51afd5d0937e5"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a89e9c6da843e5eef25c51afd5d0937e5">SVF::SymbolTableInfo::getModelConstants</a></div><div class="ttdeci">bool getModelConstants() const</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00143">SymbolTableInfo.h:143</a></div></div>
|
|
317
317
|
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a61bda1c1c52fb765d0027d8141d35c35"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a61bda1c1c52fb765d0027d8141d35c35">SVF::SymbolTableInfo::isConstantObjSym</a></div><div class="ttdeci">bool isConstantObjSym(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00318">SymbolTableInfo.cpp:318</a></div></div>
|
|
@@ -336,8 +336,8 @@ Private Attributes</h2></td></tr>
|
|
|
336
336
|
</div><div class="memdoc">
|
|
337
337
|
<p>Create unique return sym, if not available create a new one </p>
|
|
338
338
|
|
|
339
|
-
<p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#
|
|
340
|
-
<div class="fragment"><div class="line"><a name="
|
|
339
|
+
<p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#l00281">281</a> of file <a class="el" href="SymbolTableBuilder_8cpp_source.html">SymbolTableBuilder.cpp</a>.</p>
|
|
340
|
+
<div class="fragment"><div class="line"><a name="l00282"></a><span class="lineno"> 282</span> {</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  SymbolTableInfo::FunToIDMapTy::iterator iter = <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">symInfo</a>-><a class="code" href="classSVF_1_1SymbolTableInfo.html#ae6f8a4dbe09ff4756983ffdbed6d0681">returnSymMap</a>.find(val);</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  <span class="keywordflow">if</span> (iter == <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">symInfo</a>-><a class="code" href="classSVF_1_1SymbolTableInfo.html#ae6f8a4dbe09ff4756983ffdbed6d0681">returnSymMap</a>.end())</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>  <a class="code" href="namespaceSVF.html#ad11fe2412b2182365a662ff0e4639b48">SymID</a> <span class="keywordtype">id</span> = <a class="code" href="classSVF_1_1NodeIDAllocator.html#a2bd3ca30fc9669d9a0327544bdb4557b">NodeIDAllocator::get</a>()-><a class="code" href="classSVF_1_1NodeIDAllocator.html#a26b5e09e10448694435f74a8b622a7e8">allocateValueId</a>();</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">symInfo</a>-><a class="code" href="classSVF_1_1SymbolTableInfo.html#ae6f8a4dbe09ff4756983ffdbed6d0681">returnSymMap</a>.insert(std::make_pair(val, <span class="keywordtype">id</span>));</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#ad46a0423f8709692e1bb0f0fa5b1ca2f">DMemModel</a>,</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">"create a return sym "</span> << <span class="keywordtype">id</span> << <span class="stringliteral">"\n"</span>);</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  }</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span> }</div><div class="ttc" id="SVFBasicTypes_8h_html_ad46a0423f8709692e1bb0f0fa5b1ca2f"><div class="ttname"><a href="SVFBasicTypes_8h.html#ad46a0423f8709692e1bb0f0fa5b1ca2f">DMemModel</a></div><div class="ttdeci">#define DMemModel</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00157">SVFBasicTypes.h:157</a></div></div>
|
|
341
341
|
<div class="ttc" id="namespaceSVF_html_ad11fe2412b2182365a662ff0e4639b48"><div class="ttname"><a href="namespaceSVF.html#ad11fe2412b2182365a662ff0e4639b48">SVF::SymID</a></div><div class="ttdeci">unsigned SymID</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00082">SVFBasicTypes.h:82</a></div></div>
|
|
342
342
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a85ab6b592fefc45a0674d3295e01638f"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVF::SVFUtil::outs</a></div><div class="ttdeci">raw_ostream & outs()</div><div class="ttdoc">Overwrite llvm::outs() </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00049">SVFUtil.h:49</a></div></div>
|
|
343
343
|
<div class="ttc" id="classSVF_1_1SymbolTableBuilder_html_a3100246d9b0a58e53f2dbc8acf231afb"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">SVF::SymbolTableBuilder::symInfo</a></div><div class="ttdeci">SymbolTableInfo * symInfo</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8h_source.html#l00046">SymbolTableBuilder.h:46</a></div></div>
|
|
@@ -367,16 +367,16 @@ Private Attributes</h2></td></tr>
|
|
|
367
367
|
<p>collect the syms </p>
|
|
368
368
|
<p>Collect symbols, including value and object syms </p>
|
|
369
369
|
|
|
370
|
-
<p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#
|
|
371
|
-
<div class="fragment"><div class="line"><a name="
|
|
372
|
-
<div class="ttc" id="classSVF_1_1SymbolTableBuilder_html_a891bfea437256d1b7aa957d32797e419"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#a891bfea437256d1b7aa957d32797e419">SVF::SymbolTableBuilder::collectObj</a></div><div class="ttdeci">void collectObj(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#
|
|
370
|
+
<p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#l00200">200</a> of file <a class="el" href="SymbolTableBuilder_8cpp_source.html">SymbolTableBuilder.cpp</a>.</p>
|
|
371
|
+
<div class="fragment"><div class="line"><a name="l00201"></a><span class="lineno"> 201</span> {</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span> </div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <span class="comment">//TODO: filter the non-pointer type // if (!SVFUtil::isa<PointerType>(val->getType())) return;</span></div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span> </div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#ad46a0423f8709692e1bb0f0fa5b1ca2f">DMemModel</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">"collect sym from ##"</span> << *val << <span class="stringliteral">" \n"</span>);</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span> </div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="comment">// special sym here</span></div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">symInfo</a>-><a class="code" href="classSVF_1_1SymbolTableInfo.html#a65a7e9d6d238a04291cb7d0aa15ece90">isNullPtrSym</a>(val) || <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">symInfo</a>-><a class="code" href="classSVF_1_1SymbolTableInfo.html#ab15112d3900f28525848cbe5fad37deb">isBlackholeSym</a>(val))</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span> </div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="comment">//TODO handle constant expression value here??</span></div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abe39a7a3557899b4991bcc60d436dc50">handleCE</a>(val);</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="comment">// create a value sym</span></div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abc8b35d432db78bd5282010c7c800d70">collectVal</a>(val);</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span> </div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <span class="comment">// create an object If it is a heap, stack, global, function.</span></div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#acc9fd07cb66dbdeef696c3c745856094">isObject</a>(val))</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  {</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a891bfea437256d1b7aa957d32797e419">collectObj</a>(val);</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  }</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span> }</div><div class="ttc" id="classSVF_1_1SymbolTableBuilder_html_abe39a7a3557899b4991bcc60d436dc50"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#abe39a7a3557899b4991bcc60d436dc50">SVF::SymbolTableBuilder::handleCE</a></div><div class="ttdeci">void handleCE(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00312">SymbolTableBuilder.cpp:312</a></div></div>
|
|
372
|
+
<div class="ttc" id="classSVF_1_1SymbolTableBuilder_html_a891bfea437256d1b7aa957d32797e419"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#a891bfea437256d1b7aa957d32797e419">SVF::SymbolTableBuilder::collectObj</a></div><div class="ttdeci">void collectObj(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00249">SymbolTableBuilder.cpp:249</a></div></div>
|
|
373
373
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_acc9fd07cb66dbdeef696c3c745856094"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#acc9fd07cb66dbdeef696c3c745856094">SVF::SVFUtil::isObject</a></div><div class="ttdeci">bool isObject(const Value *ref)</div><div class="ttdoc">Return true if this value refers to a object. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00041">LLVMUtil.cpp:41</a></div></div>
|
|
374
374
|
<div class="ttc" id="SVFBasicTypes_8h_html_ad46a0423f8709692e1bb0f0fa5b1ca2f"><div class="ttname"><a href="SVFBasicTypes_8h.html#ad46a0423f8709692e1bb0f0fa5b1ca2f">DMemModel</a></div><div class="ttdeci">#define DMemModel</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00157">SVFBasicTypes.h:157</a></div></div>
|
|
375
375
|
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_ab15112d3900f28525848cbe5fad37deb"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#ab15112d3900f28525848cbe5fad37deb">SVF::SymbolTableInfo::isBlackholeSym</a></div><div class="ttdeci">static bool isBlackholeSym(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00310">SymbolTableInfo.cpp:310</a></div></div>
|
|
376
376
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a85ab6b592fefc45a0674d3295e01638f"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVF::SVFUtil::outs</a></div><div class="ttdeci">raw_ostream & outs()</div><div class="ttdoc">Overwrite llvm::outs() </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00049">SVFUtil.h:49</a></div></div>
|
|
377
377
|
<div class="ttc" id="classSVF_1_1SymbolTableBuilder_html_a3100246d9b0a58e53f2dbc8acf231afb"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">SVF::SymbolTableBuilder::symInfo</a></div><div class="ttdeci">SymbolTableInfo * symInfo</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8h_source.html#l00046">SymbolTableBuilder.h:46</a></div></div>
|
|
378
378
|
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a65a7e9d6d238a04291cb7d0aa15ece90"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a65a7e9d6d238a04291cb7d0aa15ece90">SVF::SymbolTableInfo::isNullPtrSym</a></div><div class="ttdeci">static bool isNullPtrSym(const Value *val)</div><div class="ttdoc">special value </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00298">SymbolTableInfo.cpp:298</a></div></div>
|
|
379
|
-
<div class="ttc" id="classSVF_1_1SymbolTableBuilder_html_abc8b35d432db78bd5282010c7c800d70"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#abc8b35d432db78bd5282010c7c800d70">SVF::SymbolTableBuilder::collectVal</a></div><div class="ttdeci">void collectVal(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#
|
|
379
|
+
<div class="ttc" id="classSVF_1_1SymbolTableBuilder_html_abc8b35d432db78bd5282010c7c800d70"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#abc8b35d432db78bd5282010c7c800d70">SVF::SymbolTableBuilder::collectVal</a></div><div class="ttdeci">void collectVal(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00227">SymbolTableBuilder.cpp:227</a></div></div>
|
|
380
380
|
<div class="ttc" id="SVFBasicTypes_8h_html_a173ce1b9b505fdadf5613b663749d3b0"><div class="ttname"><a href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a></div><div class="ttdeci">#define DBOUT(TYPE, X)</div><div class="ttdoc">LLVM debug macros, define type of your DEBUG model of each pass. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00149">SVFBasicTypes.h:149</a></div></div>
|
|
381
381
|
</div><!-- fragment -->
|
|
382
382
|
</div>
|
|
@@ -399,10 +399,10 @@ Private Attributes</h2></td></tr>
|
|
|
399
399
|
<p>Get value sym, if not available create a new one </p>
|
|
400
400
|
<p>handle global constant expression here </p>
|
|
401
401
|
|
|
402
|
-
<p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#
|
|
403
|
-
<div class="fragment"><div class="line"><a name="
|
|
404
|
-
<div class="ttc" id="classSVF_1_1SymbolTableBuilder_html_a891bfea437256d1b7aa957d32797e419"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#a891bfea437256d1b7aa957d32797e419">SVF::SymbolTableBuilder::collectObj</a></div><div class="ttdeci">void collectObj(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#
|
|
405
|
-
<div class="ttc" id="classSVF_1_1SymbolTableBuilder_html_a72732ec0392d9d5b900fc12177890779"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#a72732ec0392d9d5b900fc12177890779">SVF::SymbolTableBuilder::handleGlobalCE</a></div><div class="ttdeci">void handleGlobalCE(const GlobalVariable *G)</div><div class="ttdoc">Handle constant expression. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#
|
|
402
|
+
<p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#l00227">227</a> of file <a class="el" href="SymbolTableBuilder_8cpp_source.html">SymbolTableBuilder.cpp</a>.</p>
|
|
403
|
+
<div class="fragment"><div class="line"><a name="l00228"></a><span class="lineno"> 228</span> {</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  SymbolTableInfo::ValueToIDMapTy::iterator iter = <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">symInfo</a>-><a class="code" href="classSVF_1_1SymbolTableInfo.html#a5054f95a7b77257ffb283044aab17b08">valSymMap</a>.find(val);</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <span class="keywordflow">if</span> (iter == <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">symInfo</a>-><a class="code" href="classSVF_1_1SymbolTableInfo.html#a5054f95a7b77257ffb283044aab17b08">valSymMap</a>.end())</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  {</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="comment">// create val sym and sym type</span></div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <a class="code" href="namespaceSVF.html#ad11fe2412b2182365a662ff0e4639b48">SymID</a> <span class="keywordtype">id</span> = <a class="code" href="classSVF_1_1NodeIDAllocator.html#a2bd3ca30fc9669d9a0327544bdb4557b">NodeIDAllocator::get</a>()-><a class="code" href="classSVF_1_1NodeIDAllocator.html#a26b5e09e10448694435f74a8b622a7e8">allocateValueId</a>();</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">symInfo</a>-><a class="code" href="classSVF_1_1SymbolTableInfo.html#a5054f95a7b77257ffb283044aab17b08">valSymMap</a>.insert(std::make_pair(val, <span class="keywordtype">id</span>));</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#ad46a0423f8709692e1bb0f0fa5b1ca2f">DMemModel</a>,</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">"create a new value sym "</span> << <span class="keywordtype">id</span> << <span class="stringliteral">"\n"</span>);</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* globalVar = SVFUtil::dyn_cast<GlobalVariable>(val))</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a72732ec0392d9d5b900fc12177890779">handleGlobalCE</a>(globalVar);</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  }</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span> </div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">symInfo</a>-><a class="code" href="classSVF_1_1SymbolTableInfo.html#a61bda1c1c52fb765d0027d8141d35c35">isConstantObjSym</a>(val))</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a891bfea437256d1b7aa957d32797e419">collectObj</a>(val);</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span> }</div><div class="ttc" id="namespaceSVF_html_a09f5fa3bc44bf53612a085e3a611cc4e"><div class="ttname"><a href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">SVF::GlobalVariable</a></div><div class="ttdeci">llvm::GlobalVariable GlobalVariable</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00083">BasicTypes.h:83</a></div></div>
|
|
404
|
+
<div class="ttc" id="classSVF_1_1SymbolTableBuilder_html_a891bfea437256d1b7aa957d32797e419"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#a891bfea437256d1b7aa957d32797e419">SVF::SymbolTableBuilder::collectObj</a></div><div class="ttdeci">void collectObj(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00249">SymbolTableBuilder.cpp:249</a></div></div>
|
|
405
|
+
<div class="ttc" id="classSVF_1_1SymbolTableBuilder_html_a72732ec0392d9d5b900fc12177890779"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#a72732ec0392d9d5b900fc12177890779">SVF::SymbolTableBuilder::handleGlobalCE</a></div><div class="ttdeci">void handleGlobalCE(const GlobalVariable *G)</div><div class="ttdoc">Handle constant expression. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00378">SymbolTableBuilder.cpp:378</a></div></div>
|
|
406
406
|
<div class="ttc" id="SVFBasicTypes_8h_html_ad46a0423f8709692e1bb0f0fa5b1ca2f"><div class="ttname"><a href="SVFBasicTypes_8h.html#ad46a0423f8709692e1bb0f0fa5b1ca2f">DMemModel</a></div><div class="ttdeci">#define DMemModel</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00157">SVFBasicTypes.h:157</a></div></div>
|
|
407
407
|
<div class="ttc" id="namespaceSVF_html_ad11fe2412b2182365a662ff0e4639b48"><div class="ttname"><a href="namespaceSVF.html#ad11fe2412b2182365a662ff0e4639b48">SVF::SymID</a></div><div class="ttdeci">unsigned SymID</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00082">SVFBasicTypes.h:82</a></div></div>
|
|
408
408
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a85ab6b592fefc45a0674d3295e01638f"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVF::SVFUtil::outs</a></div><div class="ttdeci">raw_ostream & outs()</div><div class="ttdoc">Overwrite llvm::outs() </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00049">SVFUtil.h:49</a></div></div>
|
|
@@ -432,8 +432,8 @@ Private Attributes</h2></td></tr>
|
|
|
432
432
|
</div><div class="memdoc">
|
|
433
433
|
<p>Create vararg sym, if not available create a new one </p>
|
|
434
434
|
|
|
435
|
-
<p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#
|
|
436
|
-
<div class="fragment"><div class="line"><a name="
|
|
435
|
+
<p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#l00296">296</a> of file <a class="el" href="SymbolTableBuilder_8cpp_source.html">SymbolTableBuilder.cpp</a>.</p>
|
|
436
|
+
<div class="fragment"><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>  SymbolTableInfo::FunToIDMapTy::iterator iter = <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">symInfo</a>-><a class="code" href="classSVF_1_1SymbolTableInfo.html#a94c06e5ac0b50989743a9e63c9a6d5b9">varargSymMap</a>.find(val);</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  <span class="keywordflow">if</span> (iter == <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">symInfo</a>-><a class="code" href="classSVF_1_1SymbolTableInfo.html#a94c06e5ac0b50989743a9e63c9a6d5b9">varargSymMap</a>.end())</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  {</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  <a class="code" href="namespaceSVF.html#ad11fe2412b2182365a662ff0e4639b48">SymID</a> <span class="keywordtype">id</span> = <a class="code" href="classSVF_1_1NodeIDAllocator.html#a2bd3ca30fc9669d9a0327544bdb4557b">NodeIDAllocator::get</a>()-><a class="code" href="classSVF_1_1NodeIDAllocator.html#a26b5e09e10448694435f74a8b622a7e8">allocateValueId</a>();</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">symInfo</a>-><a class="code" href="classSVF_1_1SymbolTableInfo.html#a94c06e5ac0b50989743a9e63c9a6d5b9">varargSymMap</a>.insert(std::make_pair(val, <span class="keywordtype">id</span>));</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#ad46a0423f8709692e1bb0f0fa5b1ca2f">DMemModel</a>,</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">"create a vararg sym "</span> << <span class="keywordtype">id</span> << <span class="stringliteral">"\n"</span>);</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  }</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span> }</div><div class="ttc" id="SVFBasicTypes_8h_html_ad46a0423f8709692e1bb0f0fa5b1ca2f"><div class="ttname"><a href="SVFBasicTypes_8h.html#ad46a0423f8709692e1bb0f0fa5b1ca2f">DMemModel</a></div><div class="ttdeci">#define DMemModel</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00157">SVFBasicTypes.h:157</a></div></div>
|
|
437
437
|
<div class="ttc" id="namespaceSVF_html_ad11fe2412b2182365a662ff0e4639b48"><div class="ttname"><a href="namespaceSVF.html#ad11fe2412b2182365a662ff0e4639b48">SVF::SymID</a></div><div class="ttdeci">unsigned SymID</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00082">SVFBasicTypes.h:82</a></div></div>
|
|
438
438
|
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a94c06e5ac0b50989743a9e63c9a6d5b9"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a94c06e5ac0b50989743a9e63c9a6d5b9">SVF::SymbolTableInfo::varargSymMap</a></div><div class="ttdeci">FunToIDMapTy varargSymMap</div><div class="ttdoc">vararg map </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00090">SymbolTableInfo.h:90</a></div></div>
|
|
439
439
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a85ab6b592fefc45a0674d3295e01638f"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVF::SVFUtil::outs</a></div><div class="ttdeci">raw_ostream & outs()</div><div class="ttdoc">Overwrite llvm::outs() </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00049">SVFUtil.h:49</a></div></div>
|
|
@@ -462,8 +462,8 @@ Private Attributes</h2></td></tr>
|
|
|
462
462
|
|
|
463
463
|
<p>Create an objectInfo based on LLVM value. </p>
|
|
464
464
|
|
|
465
|
-
<p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#
|
|
466
|
-
<div class="fragment"><div class="line"><a name="
|
|
465
|
+
<p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#l00461">461</a> of file <a class="el" href="SymbolTableBuilder_8cpp_source.html">SymbolTableBuilder.cpp</a>.</p>
|
|
466
|
+
<div class="fragment"><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>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a> *refTy = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span> </div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *I = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a><<a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>>(val);</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>  <span class="comment">// We consider two types of objects:</span></div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  <span class="comment">// (1) A heap/static object from a callsite</span></div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  <span class="keywordflow">if</span> (I && <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8d8216a92140d982303f83ea424ddc91">isNonInstricCallSite</a>(I))</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  refTy = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a9232d260dc83d3a25cd98195ba76567a">getRefTypeOfHeapAllocOrStatic</a>(I);</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  <span class="comment">// (2) Other objects (e.g., alloca, global, etc.)</span></div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  refTy = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a><<a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>>(val->getType());</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span> </div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  <span class="keywordflow">if</span> (refTy)</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  {</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *objTy = refTy->getElementType();</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  <a class="code" href="classSVF_1_1ObjTypeInfo.html">ObjTypeInfo</a>* typeInfo = <span class="keyword">new</span> <a class="code" href="classSVF_1_1ObjTypeInfo.html">ObjTypeInfo</a>(val, objTy, <a class="code" href="classSVF_1_1Options.html#adfc1a5c6098d3867e29fc65ca9ffa1cc">Options::MaxFieldLimit</a>);</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a92ba9c9671e557ba950c14f418079696">initTypeInfo</a>(typeInfo,val);</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  <span class="keywordflow">return</span> typeInfo;</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  }</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  {</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">writeWrnMsg</a>(<span class="stringliteral">"try to create an object with a non-pointer type."</span>);</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">writeWrnMsg</a>(val->getName().str());</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">writeWrnMsg</a>(<span class="stringliteral">"("</span> + <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">getSourceLoc</a>(val) + <span class="stringliteral">")"</span>);</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">symInfo</a>-><a class="code" href="classSVF_1_1SymbolTableInfo.html#a61bda1c1c52fb765d0027d8141d35c35">isConstantObjSym</a>(val)){</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  <a class="code" href="classSVF_1_1ObjTypeInfo.html">ObjTypeInfo</a>* typeInfo = <span class="keyword">new</span> <a class="code" href="classSVF_1_1ObjTypeInfo.html">ObjTypeInfo</a>(val, val->getType(), 0);</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a92ba9c9671e557ba950c14f418079696">initTypeInfo</a>(typeInfo,val);</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  <span class="keywordflow">return</span> typeInfo;</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  }</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  <span class="keywordflow">else</span>{</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> && <span class="stringliteral">"Memory object must be either (1) held by a pointer-typed ref value or (2) a constant value (e.g., 10)."</span>);</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  <a class="code" href="util_8h.html#a23c00958edf66c39625a0d535dee57b7">abort</a>();</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  }</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  }</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span> }</div><div class="ttc" id="namespaceSVF_html_a1d008c0666c145622b81d427be64c52d"><div class="ttname"><a href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">SVF::Type</a></div><div class="ttdeci">llvm::Type Type</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00075">BasicTypes.h:75</a></div></div>
|
|
467
467
|
<div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
|
|
468
468
|
<div class="ttc" id="namespaceSVF_html_aa962cc1d782cc46553251e96b64a754b"><div class="ttname"><a href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">SVF::PointerType</a></div><div class="ttdeci">llvm::PointerType PointerType</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00108">BasicTypes.h:108</a></div></div>
|
|
469
469
|
<div class="ttc" id="classSVF_1_1Options_html_adfc1a5c6098d3867e29fc65ca9ffa1cc"><div class="ttname"><a href="classSVF_1_1Options.html#adfc1a5c6098d3867e29fc65ca9ffa1cc">SVF::Options::MaxFieldLimit</a></div><div class="ttdeci">static const llvm::cl::opt< unsigned > MaxFieldLimit</div><div class="ttdoc">Maximum number of field derivations for an object. </div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00037">Options.h:37</a></div></div>
|
|
@@ -475,7 +475,7 @@ Private Attributes</h2></td></tr>
|
|
|
475
475
|
<div class="ttc" id="util_8h_html_a23c00958edf66c39625a0d535dee57b7"><div class="ttname"><a href="util_8h.html#a23c00958edf66c39625a0d535dee57b7">abort</a></div><div class="ttdeci">VOID_OR_INT abort()</div></div>
|
|
476
476
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a8182be247907420db00837cef9bcfa70"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVF::SVFUtil::dyn_cast</a></div><div class="ttdeci">LLVM_NODISCARD std::enable_if<!is_simple_type< Y >::value, typename cast_retty< X, const Y >::ret_type >::type dyn_cast(const Y &Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00343">Casting.h:343</a></div></div>
|
|
477
477
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a8d8216a92140d982303f83ea424ddc91"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a8d8216a92140d982303f83ea424ddc91">SVF::SVFUtil::isNonInstricCallSite</a></div><div class="ttdeci">bool isNonInstricCallSite(const Instruction *inst)</div><div class="ttdoc">Whether an instruction is a callsite in the application code, excluding llvm intrinsic calls...</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00206">SVFUtil.h:206</a></div></div>
|
|
478
|
-
<div class="ttc" id="classSVF_1_1SymbolTableBuilder_html_a92ba9c9671e557ba950c14f418079696"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#a92ba9c9671e557ba950c14f418079696">SVF::SymbolTableBuilder::initTypeInfo</a></div><div class="ttdeci">void initTypeInfo(ObjTypeInfo *typeinfo, const Value *value)</div><div class="ttdoc">Initialize TypeInfo based on LLVM Value. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#
|
|
478
|
+
<div class="ttc" id="classSVF_1_1SymbolTableBuilder_html_a92ba9c9671e557ba950c14f418079696"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#a92ba9c9671e557ba950c14f418079696">SVF::SymbolTableBuilder::initTypeInfo</a></div><div class="ttdeci">void initTypeInfo(ObjTypeInfo *typeinfo, const Value *value)</div><div class="ttdoc">Initialize TypeInfo based on LLVM Value. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00551">SymbolTableBuilder.cpp:551</a></div></div>
|
|
479
479
|
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a61bda1c1c52fb765d0027d8141d35c35"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a61bda1c1c52fb765d0027d8141d35c35">SVF::SymbolTableInfo::isConstantObjSym</a></div><div class="ttdeci">bool isConstantObjSym(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00318">SymbolTableInfo.cpp:318</a></div></div>
|
|
480
480
|
<div class="ttc" id="classSVF_1_1ObjTypeInfo_html"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html">SVF::ObjTypeInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00597">SymbolTableInfo.h:597</a></div></div>
|
|
481
481
|
</div><!-- fragment -->
|
|
@@ -500,8 +500,8 @@ Private Attributes</h2></td></tr>
|
|
|
500
500
|
<p>Return size of this object based on LLVM value. </p>
|
|
501
501
|
<p>Return size of this Object </p>
|
|
502
502
|
|
|
503
|
-
<p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#
|
|
504
|
-
<div class="fragment"><div class="line"><a name="
|
|
503
|
+
<p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#l00610">610</a> of file <a class="el" href="SymbolTableBuilder_8cpp_source.html">SymbolTableBuilder.cpp</a>.</p>
|
|
504
|
+
<div class="fragment"><div class="line"><a name="l00611"></a><span class="lineno"> 611</span> {</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>  <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* ety = SVFUtil::cast<PointerType>(val->getType())->getElementType();</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> numOfFields = 1;</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>  <span class="keywordflow">if</span> (SVFUtil::isa<StructType>(ety) || SVFUtil::isa<ArrayType>(ety))</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>  numOfFields = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-><a class="code" href="classSVF_1_1SymbolTableInfo.html#a747073d433e05e15085a2675f6a1e18f">getNumOfFlattenElements</a>(ety);</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>  }</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>  <span class="keywordflow">return</span> numOfFields;</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span> }</div><div class="ttc" id="namespaceSVF_html_a1d008c0666c145622b81d427be64c52d"><div class="ttname"><a href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">SVF::Type</a></div><div class="ttdeci">llvm::Type Type</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00075">BasicTypes.h:75</a></div></div>
|
|
505
505
|
<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#l00075">SVFBasicTypes.h:75</a></div></div>
|
|
506
506
|
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a267169023fc4f8dd66b145f7231fec11"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SVF::SymbolTableInfo::SymbolInfo</a></div><div class="ttdeci">static SymbolTableInfo * SymbolInfo()</div><div class="ttdoc">Singleton design here to make sure we only have one instance during any analysis. ...</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00101">SymbolTableInfo.cpp:101</a></div></div>
|
|
507
507
|
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a747073d433e05e15085a2675f6a1e18f"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a747073d433e05e15085a2675f6a1e18f">SVF::SymbolTableInfo::getNumOfFlattenElements</a></div><div class="ttdeci">const u32_t getNumOfFlattenElements(const Type *T)</div><div class="ttdoc">Number of flattenned elements of an array or struct. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00377">SymbolTableInfo.cpp:377</a></div></div>
|
|
@@ -525,8 +525,8 @@ Private Attributes</h2></td></tr>
|
|
|
525
525
|
</div><div class="memdoc">
|
|
526
526
|
<p>Handle constant expression </p>
|
|
527
527
|
|
|
528
|
-
<p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#
|
|
529
|
-
<div class="fragment"><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">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">Constant</a>* ref = SVFUtil::dyn_cast<Constant>(val))</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  {</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* ce = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a384b0986a6c4e99dfc4e1629b3598c3c">isGepConstantExpr</a>(ref))</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>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#aaff570bb354b8519a4852ffda413af7c">DMemModelCE</a>,</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">"handle constant expression "</span> << *ref << <span class="stringliteral">"\n"</span>);</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abc8b35d432db78bd5282010c7c800d70">collectVal</a>(ce);</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abc8b35d432db78bd5282010c7c800d70">collectVal</a>(ce->getOperand(0));</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  <span class="comment">// handle the recursive constant express case</span></div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  <span class="comment">// like (gep (bitcast (gep X 1)) 1); the inner gep is ce->getOperand(0)</span></div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abe39a7a3557899b4991bcc60d436dc50">handleCE</a>(ce->getOperand(0));</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  }</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* ce = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7e404bcc6613ba10a56c4fbdc842c5a8">isCastConstantExpr</a>(ref))</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  {</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#aaff570bb354b8519a4852ffda413af7c">DMemModelCE</a>,</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">"handle constant expression "</span> << *ref << <span class="stringliteral">"\n"</span>);</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abc8b35d432db78bd5282010c7c800d70">collectVal</a>(ce);</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abc8b35d432db78bd5282010c7c800d70">collectVal</a>(ce->getOperand(0));</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  <span class="comment">// handle the recursive constant express case</span></div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  <span class="comment">// like (gep (bitcast (gep X 1)) 1); the inner gep is ce->getOperand(0)</span></div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abe39a7a3557899b4991bcc60d436dc50">handleCE</a>(ce->getOperand(0));</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  }</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* ce = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a07d991d5bfccce9ebdef0cbb6f4bf739">isSelectConstantExpr</a>(ref))</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  {</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#aaff570bb354b8519a4852ffda413af7c">DMemModelCE</a>,</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">"handle constant expression "</span> << *ref << <span class="stringliteral">"\n"</span>);</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abc8b35d432db78bd5282010c7c800d70">collectVal</a>(ce);</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abc8b35d432db78bd5282010c7c800d70">collectVal</a>(ce->getOperand(0));</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abc8b35d432db78bd5282010c7c800d70">collectVal</a>(ce->getOperand(1));</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abc8b35d432db78bd5282010c7c800d70">collectVal</a>(ce->getOperand(2));</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  <span class="comment">// handle the recursive constant express case</span></div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  <span class="comment">// like (gep (bitcast (gep X 1)) 1); the inner gep is ce->getOperand(0)</span></div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abe39a7a3557899b4991bcc60d436dc50">handleCE</a>(ce->getOperand(0));</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abe39a7a3557899b4991bcc60d436dc50">handleCE</a>(ce->getOperand(1));</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abe39a7a3557899b4991bcc60d436dc50">handleCE</a>(ce->getOperand(2));</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  }</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  <span class="comment">// if we meet a int2ptr, then it points-to black hole</span></div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a> *int2Ptrce = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a6bc4376ada53ddfbf8df2ca817153555">isInt2PtrConstantExpr</a>(ref)) {</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abc8b35d432db78bd5282010c7c800d70">collectVal</a>(int2Ptrce);</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a> *ptr2Intce = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a093b7ae4ad144fb5d028366b1814861a">isPtr2IntConstantExpr</a>(ref)) {</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abc8b35d432db78bd5282010c7c800d70">collectVal</a>(ptr2Intce);</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">Constant</a> *opnd = ptr2Intce->getOperand(0);</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abe39a7a3557899b4991bcc60d436dc50">handleCE</a>(opnd);</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a1373688c6faba4dcdb640106575ea433">isTruncConstantExpr</a>(ref) || <a class="code" href="namespaceSVF_1_1SVFUtil.html#a4adb63c87a9489ab905d42230ac66299">isCmpConstantExpr</a>(ref)) {</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abc8b35d432db78bd5282010c7c800d70">collectVal</a>(ref);</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a43c9072210a5f5baeafe36da03f2fde2">isBinaryConstantExpr</a>(ref)) {</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abc8b35d432db78bd5282010c7c800d70">collectVal</a>(ref);</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#af14757d5cf466bba20a125f118378560">isUnaryConstantExpr</a>(ref)) {</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  <span class="comment">// we don't handle unary constant expression like fneg(x) now</span></div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abc8b35d432db78bd5282010c7c800d70">collectVal</a>(ref);</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<ConstantAggregate>(ref)) {</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  <span class="comment">// we don't handle constant agrgregate like constant vectors</span></div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abc8b35d432db78bd5282010c7c800d70">collectVal</a>(ref);</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  <span class="keywordflow">if</span> (SVFUtil::isa<ConstantExpr>(val))</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> && <span class="stringliteral">"we don't handle all other constant expression for now!"</span>);</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abc8b35d432db78bd5282010c7c800d70">collectVal</a>(ref);</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  }</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  }</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span> }</div><div class="ttc" id="classSVF_1_1SymbolTableBuilder_html_abe39a7a3557899b4991bcc60d436dc50"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#abe39a7a3557899b4991bcc60d436dc50">SVF::SymbolTableBuilder::handleCE</a></div><div class="ttdeci">void handleCE(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00311">SymbolTableBuilder.cpp:311</a></div></div>
|
|
528
|
+
<p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#l00312">312</a> of file <a class="el" href="SymbolTableBuilder_8cpp_source.html">SymbolTableBuilder.cpp</a>.</p>
|
|
529
|
+
<div class="fragment"><div class="line"><a name="l00313"></a><span class="lineno"> 313</span> {</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">Constant</a>* ref = SVFUtil::dyn_cast<Constant>(val))</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  {</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* ce = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a384b0986a6c4e99dfc4e1629b3598c3c">isGepConstantExpr</a>(ref))</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  {</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#aaff570bb354b8519a4852ffda413af7c">DMemModelCE</a>,</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">"handle constant expression "</span> << *ref << <span class="stringliteral">"\n"</span>);</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abc8b35d432db78bd5282010c7c800d70">collectVal</a>(ce);</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abc8b35d432db78bd5282010c7c800d70">collectVal</a>(ce->getOperand(0));</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  <span class="comment">// handle the recursive constant express case</span></div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <span class="comment">// like (gep (bitcast (gep X 1)) 1); the inner gep is ce->getOperand(0)</span></div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abe39a7a3557899b4991bcc60d436dc50">handleCE</a>(ce->getOperand(0));</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  }</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* ce = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7e404bcc6613ba10a56c4fbdc842c5a8">isCastConstantExpr</a>(ref))</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>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#aaff570bb354b8519a4852ffda413af7c">DMemModelCE</a>,</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">"handle constant expression "</span> << *ref << <span class="stringliteral">"\n"</span>);</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abc8b35d432db78bd5282010c7c800d70">collectVal</a>(ce);</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abc8b35d432db78bd5282010c7c800d70">collectVal</a>(ce->getOperand(0));</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  <span class="comment">// handle the recursive constant express case</span></div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  <span class="comment">// like (gep (bitcast (gep X 1)) 1); the inner gep is ce->getOperand(0)</span></div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abe39a7a3557899b4991bcc60d436dc50">handleCE</a>(ce->getOperand(0));</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  }</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* ce = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a07d991d5bfccce9ebdef0cbb6f4bf739">isSelectConstantExpr</a>(ref))</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>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#aaff570bb354b8519a4852ffda413af7c">DMemModelCE</a>,</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">"handle constant expression "</span> << *ref << <span class="stringliteral">"\n"</span>);</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abc8b35d432db78bd5282010c7c800d70">collectVal</a>(ce);</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abc8b35d432db78bd5282010c7c800d70">collectVal</a>(ce->getOperand(0));</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abc8b35d432db78bd5282010c7c800d70">collectVal</a>(ce->getOperand(1));</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abc8b35d432db78bd5282010c7c800d70">collectVal</a>(ce->getOperand(2));</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  <span class="comment">// handle the recursive constant express case</span></div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  <span class="comment">// like (gep (bitcast (gep X 1)) 1); the inner gep is ce->getOperand(0)</span></div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abe39a7a3557899b4991bcc60d436dc50">handleCE</a>(ce->getOperand(0));</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abe39a7a3557899b4991bcc60d436dc50">handleCE</a>(ce->getOperand(1));</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abe39a7a3557899b4991bcc60d436dc50">handleCE</a>(ce->getOperand(2));</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  }</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  <span class="comment">// if we meet a int2ptr, then it points-to black hole</span></div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a> *int2Ptrce = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a6bc4376ada53ddfbf8df2ca817153555">isInt2PtrConstantExpr</a>(ref)) {</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abc8b35d432db78bd5282010c7c800d70">collectVal</a>(int2Ptrce);</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a> *ptr2Intce = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a093b7ae4ad144fb5d028366b1814861a">isPtr2IntConstantExpr</a>(ref)) {</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abc8b35d432db78bd5282010c7c800d70">collectVal</a>(ptr2Intce);</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">Constant</a> *opnd = ptr2Intce->getOperand(0);</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abe39a7a3557899b4991bcc60d436dc50">handleCE</a>(opnd);</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a1373688c6faba4dcdb640106575ea433">isTruncConstantExpr</a>(ref) || <a class="code" href="namespaceSVF_1_1SVFUtil.html#a4adb63c87a9489ab905d42230ac66299">isCmpConstantExpr</a>(ref)) {</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abc8b35d432db78bd5282010c7c800d70">collectVal</a>(ref);</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a43c9072210a5f5baeafe36da03f2fde2">isBinaryConstantExpr</a>(ref)) {</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abc8b35d432db78bd5282010c7c800d70">collectVal</a>(ref);</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#af14757d5cf466bba20a125f118378560">isUnaryConstantExpr</a>(ref)) {</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  <span class="comment">// we don't handle unary constant expression like fneg(x) now</span></div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abc8b35d432db78bd5282010c7c800d70">collectVal</a>(ref);</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<ConstantAggregate>(ref)) {</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  <span class="comment">// we don't handle constant agrgregate like constant vectors</span></div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abc8b35d432db78bd5282010c7c800d70">collectVal</a>(ref);</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  <span class="keywordflow">if</span> (SVFUtil::isa<ConstantExpr>(val))</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> && <span class="stringliteral">"we don't handle all other constant expression for now!"</span>);</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abc8b35d432db78bd5282010c7c800d70">collectVal</a>(ref);</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  }</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  }</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span> }</div><div class="ttc" id="classSVF_1_1SymbolTableBuilder_html_abe39a7a3557899b4991bcc60d436dc50"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#abe39a7a3557899b4991bcc60d436dc50">SVF::SymbolTableBuilder::handleCE</a></div><div class="ttdeci">void handleCE(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00312">SymbolTableBuilder.cpp:312</a></div></div>
|
|
530
530
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a1373688c6faba4dcdb640106575ea433"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a1373688c6faba4dcdb640106575ea433">SVF::SVFUtil::isTruncConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isTruncConstantExpr(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00570">LLVMUtil.h:570</a></div></div>
|
|
531
531
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_af14757d5cf466bba20a125f118378560"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#af14757d5cf466bba20a125f118378560">SVF::SVFUtil::isUnaryConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isUnaryConstantExpr(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00604">LLVMUtil.h:604</a></div></div>
|
|
532
532
|
<div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
|
|
@@ -541,7 +541,7 @@ Private Attributes</h2></td></tr>
|
|
|
541
541
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a7e404bcc6613ba10a56c4fbdc842c5a8"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a7e404bcc6613ba10a56c4fbdc842c5a8">SVF::SVFUtil::isCastConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isCastConstantExpr(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00550">LLVMUtil.h:550</a></div></div>
|
|
542
542
|
<div class="ttc" id="namespaceSVF_html_a911dbaab38cb42deb9c195c7f687853d"><div class="ttname"><a href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">SVF::ConstantExpr</a></div><div class="ttdeci">llvm::ConstantExpr ConstantExpr</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00131">BasicTypes.h:131</a></div></div>
|
|
543
543
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a43c9072210a5f5baeafe36da03f2fde2"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a43c9072210a5f5baeafe36da03f2fde2">SVF::SVFUtil::isBinaryConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isBinaryConstantExpr(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00594">LLVMUtil.h:594</a></div></div>
|
|
544
|
-
<div class="ttc" id="classSVF_1_1SymbolTableBuilder_html_abc8b35d432db78bd5282010c7c800d70"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#abc8b35d432db78bd5282010c7c800d70">SVF::SymbolTableBuilder::collectVal</a></div><div class="ttdeci">void collectVal(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#
|
|
544
|
+
<div class="ttc" id="classSVF_1_1SymbolTableBuilder_html_abc8b35d432db78bd5282010c7c800d70"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#abc8b35d432db78bd5282010c7c800d70">SVF::SymbolTableBuilder::collectVal</a></div><div class="ttdeci">void collectVal(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00227">SymbolTableBuilder.cpp:227</a></div></div>
|
|
545
545
|
<div class="ttc" id="SVFBasicTypes_8h_html_a173ce1b9b505fdadf5613b663749d3b0"><div class="ttname"><a href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a></div><div class="ttdeci">#define DBOUT(TYPE, X)</div><div class="ttdoc">LLVM debug macros, define type of your DEBUG model of each pass. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00149">SVFBasicTypes.h:149</a></div></div>
|
|
546
546
|
</div><!-- fragment -->
|
|
547
547
|
</div>
|
|
@@ -565,12 +565,12 @@ Private Attributes</h2></td></tr>
|
|
|
565
565
|
<p>Handle constant expression. </p>
|
|
566
566
|
<p>Handle global constant expression </p>
|
|
567
567
|
|
|
568
|
-
<p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#
|
|
569
|
-
<div class="fragment"><div class="line"><a name="
|
|
568
|
+
<p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#l00378">378</a> of file <a class="el" href="SymbolTableBuilder_8cpp_source.html">SymbolTableBuilder.cpp</a>.</p>
|
|
569
|
+
<div class="fragment"><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>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(G);</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span> </div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  <span class="comment">//The type this global points to</span></div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *T = G->getType()->getContainedType(0);</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  <span class="keywordtype">bool</span> is_array = 0;</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  <span class="comment">//An array is considered a single variable of its type.</span></div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  <span class="keywordflow">while</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a146d286041987860388da3d8bc85cee3">ArrayType</a> *AT = SVFUtil::dyn_cast<ArrayType>(T))</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  {</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  T = AT->getElementType();</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  is_array = 1;</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  }</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span> </div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  <span class="keywordflow">if</span> (SVFUtil::isa<StructType>(T))</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  {</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  <span class="comment">//A struct may be used in constant GEP expr.</span></div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  <span class="keywordflow">for</span> (Value::const_user_iterator it = G->user_begin(), ie = G->user_end();</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  it != ie; ++it)</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  {</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abe39a7a3557899b4991bcc60d436dc50">handleCE</a>(*it);</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>  <span class="keywordflow">else</span></div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  {</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  <span class="keywordflow">if</span> (is_array)</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>  <span class="keywordflow">for</span> (Value::const_user_iterator it = G->user_begin(), ie =</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  G->user_end(); it != ie; ++it)</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  {</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abe39a7a3557899b4991bcc60d436dc50">handleCE</a>(*it);</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  }</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>  }</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span> </div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  <span class="keywordflow">if</span> (G->hasInitializer())</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  {</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac17a325eac72cb01798cc7b06b0e6b6e">handleGlobalInitializerCE</a>(G->getInitializer(), 0);</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  }</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span> }</div><div class="ttc" id="classSVF_1_1SymbolTableBuilder_html_abe39a7a3557899b4991bcc60d436dc50"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#abe39a7a3557899b4991bcc60d436dc50">SVF::SymbolTableBuilder::handleCE</a></div><div class="ttdeci">void handleCE(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00312">SymbolTableBuilder.cpp:312</a></div></div>
|
|
570
570
|
<div class="ttc" id="namespaceSVF_html_a1d008c0666c145622b81d427be64c52d"><div class="ttname"><a href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">SVF::Type</a></div><div class="ttdeci">llvm::Type Type</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00075">BasicTypes.h:75</a></div></div>
|
|
571
571
|
<div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
|
|
572
572
|
<div class="ttc" id="namespaceSVF_html_a146d286041987860388da3d8bc85cee3"><div class="ttname"><a href="namespaceSVF.html#a146d286041987860388da3d8bc85cee3">SVF::ArrayType</a></div><div class="ttdeci">llvm::ArrayType ArrayType</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00107">BasicTypes.h:107</a></div></div>
|
|
573
|
-
<div class="ttc" id="classSVF_1_1SymbolTableBuilder_html_ac17a325eac72cb01798cc7b06b0e6b6e"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#ac17a325eac72cb01798cc7b06b0e6b6e">SVF::SymbolTableBuilder::handleGlobalInitializerCE</a></div><div class="ttdeci">void handleGlobalInitializerCE(const Constant *C, u32_t offset)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#
|
|
573
|
+
<div class="ttc" id="classSVF_1_1SymbolTableBuilder_html_ac17a325eac72cb01798cc7b06b0e6b6e"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#ac17a325eac72cb01798cc7b06b0e6b6e">SVF::SymbolTableBuilder::handleGlobalInitializerCE</a></div><div class="ttdeci">void handleGlobalInitializerCE(const Constant *C, u32_t offset)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00422">SymbolTableBuilder.cpp:422</a></div></div>
|
|
574
574
|
</div><!-- fragment -->
|
|
575
575
|
</div>
|
|
576
576
|
</div>
|
|
@@ -601,15 +601,15 @@ Private Attributes</h2></td></tr>
|
|
|
601
601
|
</div><div class="memdoc">
|
|
602
602
|
<p>Handle global variable initialization </p>
|
|
603
603
|
|
|
604
|
-
<p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#
|
|
605
|
-
<div class="fragment"><div class="line"><a name="
|
|
604
|
+
<p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#l00422">422</a> of file <a class="el" href="SymbolTableBuilder_8cpp_source.html">SymbolTableBuilder.cpp</a>.</p>
|
|
605
|
+
<div class="fragment"><div class="line"><a name="l00424"></a><span class="lineno"> 424</span> {</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span> </div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  <span class="keywordflow">if</span> (C->getType()->isSingleValueType())</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  {</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a> *E = SVFUtil::dyn_cast<ConstantExpr>(C))</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  {</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abe39a7a3557899b4991bcc60d436dc50">handleCE</a>(E);</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  }</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  {</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abc8b35d432db78bd5282010c7c800d70">collectVal</a>(C);</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  }</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  }</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<ConstantArray>(C))</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  {</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0, e = C->getNumOperands(); i != e; i++)</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  {</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac17a325eac72cb01798cc7b06b0e6b6e">handleGlobalInitializerCE</a>(SVFUtil::cast<Constant>(C->getOperand(i)), offset);</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  }</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  }</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<ConstantStruct>(C))</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  {</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a2bf58575ac7d068e0f1a4cf953b9e6cb">StructType</a> *sty = SVFUtil::cast<StructType>(C->getType());</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  <span class="keyword">const</span> std::vector<u32_t>& offsetvect =</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-><a class="code" href="classSVF_1_1SymbolTableInfo.html#af0477d1e8af9ad51a9884e687fcdf29b">getFlattenedFieldIdxVec</a>(sty);</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0, e = C->getNumOperands(); i != e; i++)</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  {</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> off = offsetvect[i];</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac17a325eac72cb01798cc7b06b0e6b6e">handleGlobalInitializerCE</a>(SVFUtil::cast<Constant>(C->getOperand(i)),</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  offset + off);</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  }</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  }</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span> }</div><div class="ttc" id="classSVF_1_1SymbolTableBuilder_html_abe39a7a3557899b4991bcc60d436dc50"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#abe39a7a3557899b4991bcc60d436dc50">SVF::SymbolTableBuilder::handleCE</a></div><div class="ttdeci">void handleCE(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00312">SymbolTableBuilder.cpp:312</a></div></div>
|
|
606
606
|
<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#l00075">SVFBasicTypes.h:75</a></div></div>
|
|
607
607
|
<div class="ttc" id="namespaceSVF_html_a2bf58575ac7d068e0f1a4cf953b9e6cb"><div class="ttname"><a href="namespaceSVF.html#a2bf58575ac7d068e0f1a4cf953b9e6cb">SVF::StructType</a></div><div class="ttdeci">llvm::StructType StructType</div><div class="ttdoc">LLVM types. </div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00106">BasicTypes.h:106</a></div></div>
|
|
608
608
|
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a267169023fc4f8dd66b145f7231fec11"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SVF::SymbolTableInfo::SymbolInfo</a></div><div class="ttdeci">static SymbolTableInfo * SymbolInfo()</div><div class="ttdoc">Singleton design here to make sure we only have one instance during any analysis. ...</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00101">SymbolTableInfo.cpp:101</a></div></div>
|
|
609
|
-
<div class="ttc" id="classSVF_1_1SymbolTableBuilder_html_ac17a325eac72cb01798cc7b06b0e6b6e"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#ac17a325eac72cb01798cc7b06b0e6b6e">SVF::SymbolTableBuilder::handleGlobalInitializerCE</a></div><div class="ttdeci">void handleGlobalInitializerCE(const Constant *C, u32_t offset)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#
|
|
609
|
+
<div class="ttc" id="classSVF_1_1SymbolTableBuilder_html_ac17a325eac72cb01798cc7b06b0e6b6e"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#ac17a325eac72cb01798cc7b06b0e6b6e">SVF::SymbolTableBuilder::handleGlobalInitializerCE</a></div><div class="ttdeci">void handleGlobalInitializerCE(const Constant *C, u32_t offset)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00422">SymbolTableBuilder.cpp:422</a></div></div>
|
|
610
610
|
<div class="ttc" id="namespaceSVF_html_a911dbaab38cb42deb9c195c7f687853d"><div class="ttname"><a href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">SVF::ConstantExpr</a></div><div class="ttdeci">llvm::ConstantExpr ConstantExpr</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00131">BasicTypes.h:131</a></div></div>
|
|
611
611
|
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_af0477d1e8af9ad51a9884e687fcdf29b"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#af0477d1e8af9ad51a9884e687fcdf29b">SVF::SymbolTableInfo::getFlattenedFieldIdxVec</a></div><div class="ttdeci">const std::vector< u32_t > & getFlattenedFieldIdxVec(const StructType *T)</div><div class="ttdoc">Flatterned field index information of a struct ignoring any array field. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00395">SymbolTableInfo.cpp:395</a></div></div>
|
|
612
|
-
<div class="ttc" id="classSVF_1_1SymbolTableBuilder_html_abc8b35d432db78bd5282010c7c800d70"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#abc8b35d432db78bd5282010c7c800d70">SVF::SymbolTableBuilder::collectVal</a></div><div class="ttdeci">void collectVal(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#
|
|
612
|
+
<div class="ttc" id="classSVF_1_1SymbolTableBuilder_html_abc8b35d432db78bd5282010c7c800d70"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#abc8b35d432db78bd5282010c7c800d70">SVF::SymbolTableBuilder::collectVal</a></div><div class="ttdeci">void collectVal(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00227">SymbolTableBuilder.cpp:227</a></div></div>
|
|
613
613
|
</div><!-- fragment -->
|
|
614
614
|
</div>
|
|
615
615
|
</div>
|
|
@@ -642,13 +642,13 @@ Private Attributes</h2></td></tr>
|
|
|
642
642
|
<p>Initialize TypeInfo based on LLVM Value. </p>
|
|
643
643
|
<p>Initialize the type info of an object </p>
|
|
644
644
|
|
|
645
|
-
<p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#
|
|
646
|
-
<div class="fragment"><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>  {</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>  <a class="code" href="namespaceSVF.html#abe09d99af006554a5c00803e9a89f9a6">s64_t</a> objSize = 1;</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>  <span class="comment">// Global variable</span></div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>  <span class="keywordflow">if</span> (SVFUtil::isa<Function>(val))</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>  {</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>  typeinfo-><a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830af5f94b2a41dab25fa08c94a989fb9515">ObjTypeInfo::FUNCTION_OBJ</a>);</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a403767d4aee3cf36ef9655e734e0b74f">analyzeGlobalStackObjType</a>(typeinfo,val);</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>  objSize = <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a0f6e58467a6c280181c0366ca6331f98">getObjSize</a>(val);</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>  }</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa<AllocaInst>(val))</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>  {</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  typeinfo-><a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830aad918042d1f04a5e3960817d55ccb5d5">ObjTypeInfo::STACK_OBJ</a>);</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a403767d4aee3cf36ef9655e734e0b74f">analyzeGlobalStackObjType</a>(typeinfo,val);</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>  objSize = <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a0f6e58467a6c280181c0366ca6331f98">getObjSize</a>(val);</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>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa<GlobalVariable>(val))</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  {</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>  typeinfo-><a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830ad2ba0edfac1460f3fd89e7a6c4c4691b">ObjTypeInfo::GLOBVAR_OBJ</a>);</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()->isConstantObjSym(val))</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>  typeinfo-><a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830a84c1bc6eaff950330a102afca1efc04c">ObjTypeInfo::CONST_GLOBAL_OBJ</a>);</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a403767d4aee3cf36ef9655e734e0b74f">analyzeGlobalStackObjType</a>(typeinfo,val);</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>  objSize = <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a0f6e58467a6c280181c0366ca6331f98">getObjSize</a>(val);</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>  }</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<Instruction>(val) && <a class="code" href="namespaceSVF_1_1SVFUtil.html#a93ac673b885633849fa484938405ca75">isHeapAllocExtCall</a>(SVFUtil::cast<Instruction>(val)))</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>  {</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>  typeinfo-><a class="code" href="classSVF_1_1ObjTypeInfo.html#a66692043a56c327ac7ac00cc3126cd78">analyzeHeapObjType</a>(val->getType());</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>  <span class="comment">// Heap object, label its field as infinite here</span></div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  objSize = -1;</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>  }</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<Instruction>(val) && <a class="code" href="namespaceSVF_1_1SVFUtil.html#ae62938f722543d6d7fc201b685be1abf">isStaticExtCall</a>(SVFUtil::cast<Instruction>(val)))</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>  {</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>  typeinfo-><a class="code" href="classSVF_1_1ObjTypeInfo.html#aa8b97a2cbd2de56b3c6c5c0e2e0a2211">analyzeStaticObjType</a>(val->getType());</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>  <span class="comment">// static object allocated before main, label its field as infinite here</span></div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  objSize = -1;</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>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a4d4191a1c81d80bf26aac120ed880135">ArgInProgEntryFunction</a>(val))</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>  {</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>  typeinfo-><a class="code" href="classSVF_1_1ObjTypeInfo.html#aa8b97a2cbd2de56b3c6c5c0e2e0a2211">analyzeStaticObjType</a>(val->getType());</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>  <span class="comment">// user input data, label its field as infinite here</span></div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>  objSize = -1;</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>  }</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a9e85d445e8b7b205134acd3874bba388">SVFUtil::isConstantData</a>(val))</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>  {</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>  typeinfo-><a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830a5e5bc3a1838476fbd80c52720c9d103e">ObjTypeInfo::CONST_DATA</a>);</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>  }</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>  <span class="keywordflow">else</span>{</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="stringliteral">"what other object do we have??"</span>);</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>  <a class="code" href="util_8h.html#a23c00958edf66c39625a0d535dee57b7">abort</a>();</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>  }</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span> </div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>  <span class="comment">// Reset maxOffsetLimit if it is over the total fieldNum of this object</span></div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>  <span class="keywordflow">if</span>(objSize > 0 && typeinfo-><a class="code" href="classSVF_1_1ObjTypeInfo.html#a81bc3d785062c7e527ecf8e564cd52a4">getMaxFieldOffsetLimit</a>() > objSize)</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>  typeinfo-><a class="code" href="classSVF_1_1ObjTypeInfo.html#a9fff869c63776c6ebeff78933e0f6092">setMaxFieldOffsetLimit</a>(objSize);</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span> }</div><div class="ttc" id="classSVF_1_1SymbolTableBuilder_html_a0f6e58467a6c280181c0366ca6331f98"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#a0f6e58467a6c280181c0366ca6331f98">SVF::SymbolTableBuilder::getObjSize</a></div><div class="ttdeci">u32_t getObjSize(const Value *val)</div><div class="ttdoc">Return size of this object based on LLVM value. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00609">SymbolTableBuilder.cpp:609</a></div></div>
|
|
645
|
+
<p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#l00551">551</a> of file <a class="el" href="SymbolTableBuilder_8cpp_source.html">SymbolTableBuilder.cpp</a>.</p>
|
|
646
|
+
<div class="fragment"><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>  </div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>  <a class="code" href="namespaceSVF.html#abe09d99af006554a5c00803e9a89f9a6">s64_t</a> objSize = 1;</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>  <span class="comment">// Global variable</span></div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>  <span class="keywordflow">if</span> (SVFUtil::isa<Function>(val))</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>  typeinfo-><a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830af5f94b2a41dab25fa08c94a989fb9515">ObjTypeInfo::FUNCTION_OBJ</a>);</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a403767d4aee3cf36ef9655e734e0b74f">analyzeGlobalStackObjType</a>(typeinfo,val);</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>  objSize = <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a0f6e58467a6c280181c0366ca6331f98">getObjSize</a>(val);</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>  }</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa<AllocaInst>(val))</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  {</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>  typeinfo-><a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830aad918042d1f04a5e3960817d55ccb5d5">ObjTypeInfo::STACK_OBJ</a>);</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a403767d4aee3cf36ef9655e734e0b74f">analyzeGlobalStackObjType</a>(typeinfo,val);</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  objSize = <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a0f6e58467a6c280181c0366ca6331f98">getObjSize</a>(val);</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>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa<GlobalVariable>(val))</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>  {</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>  typeinfo-><a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830ad2ba0edfac1460f3fd89e7a6c4c4691b">ObjTypeInfo::GLOBVAR_OBJ</a>);</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()->isConstantObjSym(val))</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>  typeinfo-><a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830a84c1bc6eaff950330a102afca1efc04c">ObjTypeInfo::CONST_GLOBAL_OBJ</a>);</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a403767d4aee3cf36ef9655e734e0b74f">analyzeGlobalStackObjType</a>(typeinfo,val);</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>  objSize = <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a0f6e58467a6c280181c0366ca6331f98">getObjSize</a>(val);</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>  }</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<Instruction>(val) && <a class="code" href="namespaceSVF_1_1SVFUtil.html#a93ac673b885633849fa484938405ca75">isHeapAllocExtCall</a>(SVFUtil::cast<Instruction>(val)))</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>  {</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>  typeinfo-><a class="code" href="classSVF_1_1ObjTypeInfo.html#a66692043a56c327ac7ac00cc3126cd78">analyzeHeapObjType</a>(val->getType());</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  <span class="comment">// Heap object, label its field as infinite here</span></div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>  objSize = -1;</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>  }</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<Instruction>(val) && <a class="code" href="namespaceSVF_1_1SVFUtil.html#ae62938f722543d6d7fc201b685be1abf">isStaticExtCall</a>(SVFUtil::cast<Instruction>(val)))</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>  {</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>  typeinfo-><a class="code" href="classSVF_1_1ObjTypeInfo.html#aa8b97a2cbd2de56b3c6c5c0e2e0a2211">analyzeStaticObjType</a>(val->getType());</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  <span class="comment">// static object allocated before main, label its field as infinite here</span></div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>  objSize = -1;</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="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a4d4191a1c81d80bf26aac120ed880135">ArgInProgEntryFunction</a>(val))</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>  {</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>  typeinfo-><a class="code" href="classSVF_1_1ObjTypeInfo.html#aa8b97a2cbd2de56b3c6c5c0e2e0a2211">analyzeStaticObjType</a>(val->getType());</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>  <span class="comment">// user input data, label its field as infinite here</span></div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>  objSize = -1;</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>  }</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a9e85d445e8b7b205134acd3874bba388">SVFUtil::isConstantData</a>(val))</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>  {</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>  typeinfo-><a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830a5e5bc3a1838476fbd80c52720c9d103e">ObjTypeInfo::CONST_DATA</a>);</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>  }</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>  <span class="keywordflow">else</span>{</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="stringliteral">"what other object do we have??"</span>);</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>  <a class="code" href="util_8h.html#a23c00958edf66c39625a0d535dee57b7">abort</a>();</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>  }</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="comment">// Reset maxOffsetLimit if it is over the total fieldNum of this object</span></div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>  <span class="keywordflow">if</span>(objSize > 0 && typeinfo-><a class="code" href="classSVF_1_1ObjTypeInfo.html#a81bc3d785062c7e527ecf8e564cd52a4">getMaxFieldOffsetLimit</a>() > objSize)</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>  typeinfo-><a class="code" href="classSVF_1_1ObjTypeInfo.html#a9fff869c63776c6ebeff78933e0f6092">setMaxFieldOffsetLimit</a>(objSize);</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span> }</div><div class="ttc" id="classSVF_1_1SymbolTableBuilder_html_a0f6e58467a6c280181c0366ca6331f98"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#a0f6e58467a6c280181c0366ca6331f98">SVF::SymbolTableBuilder::getObjSize</a></div><div class="ttdeci">u32_t getObjSize(const Value *val)</div><div class="ttdoc">Return size of this object based on LLVM value. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00610">SymbolTableBuilder.cpp:610</a></div></div>
|
|
647
647
|
<div class="ttc" id="classSVF_1_1ObjTypeInfo_html_a9fff869c63776c6ebeff78933e0f6092"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a9fff869c63776c6ebeff78933e0f6092">SVF::ObjTypeInfo::setMaxFieldOffsetLimit</a></div><div class="ttdeci">void setMaxFieldOffsetLimit(u32_t limit)</div><div class="ttdoc">Get max field offset limit. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00663">SymbolTableInfo.h:663</a></div></div>
|
|
648
648
|
<div class="ttc" id="classSVF_1_1ObjTypeInfo_html_a91b41b7ade5871362b77a2ef566b2830a5e5bc3a1838476fbd80c52720c9d103e"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830a5e5bc3a1838476fbd80c52720c9d103e">SVF::ObjTypeInfo::CONST_DATA</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00613">SymbolTableInfo.h:613</a></div></div>
|
|
649
649
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a4d4191a1c81d80bf26aac120ed880135"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a4d4191a1c81d80bf26aac120ed880135">SVF::SVFUtil::ArgInProgEntryFunction</a></div><div class="ttdeci">bool ArgInProgEntryFunction(const Value *val)</div><div class="ttdoc">Return true if this is an argument of a program entry function (e.g. main) </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00452">LLVMUtil.h:452</a></div></div>
|
|
650
650
|
<div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
|
|
651
|
-
<div class="ttc" id="classSVF_1_1SymbolTableBuilder_html_a403767d4aee3cf36ef9655e734e0b74f"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#a403767d4aee3cf36ef9655e734e0b74f">SVF::SymbolTableBuilder::analyzeGlobalStackObjType</a></div><div class="ttdeci">void analyzeGlobalStackObjType(ObjTypeInfo *typeinfo, const Value *val)</div><div class="ttdoc">Analyse types of all flattened fields of this object. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#
|
|
651
|
+
<div class="ttc" id="classSVF_1_1SymbolTableBuilder_html_a403767d4aee3cf36ef9655e734e0b74f"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#a403767d4aee3cf36ef9655e734e0b74f">SVF::SymbolTableBuilder::analyzeGlobalStackObjType</a></div><div class="ttdeci">void analyzeGlobalStackObjType(ObjTypeInfo *typeinfo, const Value *val)</div><div class="ttdoc">Analyse types of all flattened fields of this object. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00503">SymbolTableBuilder.cpp:503</a></div></div>
|
|
652
652
|
<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#l00078">SVFBasicTypes.h:78</a></div></div>
|
|
653
653
|
<div class="ttc" id="classSVF_1_1ObjTypeInfo_html_a81bc3d785062c7e527ecf8e564cd52a4"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a81bc3d785062c7e527ecf8e564cd52a4">SVF::ObjTypeInfo::getMaxFieldOffsetLimit</a></div><div class="ttdeci">u32_t getMaxFieldOffsetLimit()</div><div class="ttdoc">Get max field offset limit. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00657">SymbolTableInfo.h:657</a></div></div>
|
|
654
654
|
<div class="ttc" id="classSVF_1_1ObjTypeInfo_html_ad6fb2bfae3d4b73a6821a87106f65f49"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">SVF::ObjTypeInfo::setFlag</a></div><div class="ttdeci">void setFlag(MEMTYPE mask)</div><div class="ttdoc">Flag for this object type. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00670">SymbolTableInfo.h:670</a></div></div>
|