svf-tools 1.0.471 → 1.0.474
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/CPPUtil_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/ConsG_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/ConsG_8h_source.html +2 -2
- package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +5 -5
- package/SVF-doxygen/html/html/ExeState_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/ICFG_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/IRGraph_8h_source.html +15 -15
- package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +29 -21
- package/SVF-doxygen/html/html/LLVMUtil_8h.html +6 -0
- package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +40 -37
- package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/MHP_8h_source.html +1 -1
- package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/PAGBuilderFromFile_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +15 -15
- package/SVF-doxygen/html/html/PathCondAllocator_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/PathCondAllocator_8h_source.html +1 -1
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +5 -5
- package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +26 -26
- package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +6 -6
- package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +11 -11
- package/SVF-doxygen/html/html/SVFIR_8h_source.html +15 -15
- package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVFStatements_8h_source.html +43 -43
- package/SVF-doxygen/html/html/SVFVariables_8h_source.html +5 -5
- package/SVF-doxygen/html/html/SaberAnnotator_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SaberAnnotator_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +53 -50
- package/SVF-doxygen/html/html/SymbolTableBuilder_8h_source.html +17 -16
- package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +77 -82
- package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +110 -108
- package/SVF-doxygen/html/html/TCT_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/TypeBasedHeapCloning_8h_source.html +1 -1
- package/SVF-doxygen/html/html/VFGNode_8h_source.html +5 -5
- package/SVF-doxygen/html/html/VFG_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/VFG_8h_source.html +6 -6
- package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/cfl_8cpp.html +1 -1
- package/SVF-doxygen/html/html/cfl_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt.html +17 -15
- package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +32 -32
- package/SVF-doxygen/html/html/classSVF_1_1BranchVFGNode.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CmpStmt.html +6 -4
- package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ExeState.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FunExitICFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1IRGraph.html +16 -16
- package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +91 -91
- package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo.html +94 -94
- package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +15 -15
- package/SVF-doxygen/html/html/classSVF_1_1PathCondAllocator.html +10 -10
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +22 -22
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +35 -35
- package/SVF-doxygen/html/html/classSVF_1_1SVFVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SelectStmt.html +2 -1
- package/SVF-doxygen/html/html/classSVF_1_1StInfo.html +36 -36
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder-members.html +14 -13
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +129 -101
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo-members.html +52 -50
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +232 -177
- package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt.html +20 -20
- package/SVF-doxygen/html/html/classSVF_1_1VFG.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +3 -3
- package/SVF-doxygen/html/html/dda_8cpp.html +1 -1
- package/SVF-doxygen/html/html/dda_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/functions_b.html +6 -3
- package/SVF-doxygen/html/html/functions_c.html +21 -16
- package/SVF-doxygen/html/html/functions_func_c.html +16 -13
- package/SVF-doxygen/html/html/functions_func_i.html +5 -5
- package/SVF-doxygen/html/html/functions_i.html +6 -6
- package/SVF-doxygen/html/html/functions_l.html +4 -4
- package/SVF-doxygen/html/html/functions_n.html +3 -0
- package/SVF-doxygen/html/html/functions_o.html +13 -13
- package/SVF-doxygen/html/html/functions_p.html +10 -12
- package/SVF-doxygen/html/html/functions_r.html +5 -3
- package/SVF-doxygen/html/html/functions_s.html +9 -9
- package/SVF-doxygen/html/html/functions_t.html +4 -4
- package/SVF-doxygen/html/html/functions_vars_b.html +3 -0
- package/SVF-doxygen/html/html/functions_vars_n.html +3 -0
- package/SVF-doxygen/html/html/functions_w.html +10 -6
- package/SVF-doxygen/html/html/globals_r.html +3 -3
- package/SVF-doxygen/html/html/globals_s.html +6 -10
- package/SVF-doxygen/html/html/mta_8cpp.html +1 -1
- package/SVF-doxygen/html/html/mta_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +152 -85
- package/SVF-doxygen/html/html/namespaceSVF_1_1cppUtil.html +2 -2
- package/SVF-doxygen/html/html/namespacemembers_func.html +14 -8
- package/SVF-doxygen/html/html/namespacemembers_i.html +10 -4
- package/SVF-doxygen/html/html/saber_8cpp.html +1 -1
- package/SVF-doxygen/html/html/saber_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/search/all_10.js +7 -7
- package/SVF-doxygen/html/html/search/all_12.js +4 -4
- package/SVF-doxygen/html/html/search/all_13.js +10 -10
- package/SVF-doxygen/html/html/search/all_14.js +7 -7
- package/SVF-doxygen/html/html/search/all_17.js +1 -1
- package/SVF-doxygen/html/html/search/all_2.js +1 -0
- package/SVF-doxygen/html/html/search/all_3.js +1 -0
- package/SVF-doxygen/html/html/search/all_9.js +5 -5
- package/SVF-doxygen/html/html/search/all_c.js +4 -4
- package/SVF-doxygen/html/html/search/all_e.js +3 -2
- package/SVF-doxygen/html/html/search/all_f.js +3 -3
- package/SVF-doxygen/html/html/search/functions_11.js +1 -1
- package/SVF-doxygen/html/html/search/functions_2.js +1 -0
- package/SVF-doxygen/html/html/search/functions_8.js +3 -3
- package/SVF-doxygen/html/html/search/variables_14.js +4 -4
- package/SVF-doxygen/html/html/search/variables_2.js +1 -0
- package/SVF-doxygen/html/html/search/variables_e.js +3 -2
- package/SVF-doxygen/html/html/svf-ex_8cpp.html +1 -1
- package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/wpa_8cpp.html +1 -1
- package/SVF-doxygen/html/html/wpa_8cpp_source.html +1 -1
- package/include/MemoryModel/SVFStatements.h +5 -3
- package/include/MemoryModel/SymbolTableInfo.h +3 -2
- package/include/SVF-FE/LLVMUtil.h +13 -3
- package/include/SVF-FE/SymbolTableBuilder.h +2 -0
- package/lib/MemoryModel/SymbolTableInfo.cpp +7 -36
- package/lib/SVF-FE/LLVMUtil.cpp +34 -0
- package/lib/SVF-FE/SVFIRBuilder.cpp +1 -1
- package/lib/SVF-FE/SymbolTableBuilder.cpp +21 -8
- package/package.json +1 -1
|
@@ -100,8 +100,10 @@ Public Member Functions</h2></td></tr>
|
|
|
100
100
|
<tr class="memdesc:abcc05a5ffa5fcddb7220e1c691d3ed87"><td class="mdescLeft"> </td><td class="mdescRight">Return size of this object based on LLVM value. <a href="#abcc05a5ffa5fcddb7220e1c691d3ed87">More...</a><br /></td></tr>
|
|
101
101
|
<tr class="separator:abcc05a5ffa5fcddb7220e1c691d3ed87"><td class="memSeparator" colspan="2"> </td></tr>
|
|
102
102
|
<tr><td colspan="2"><div class="groupHeader"></div></td></tr>
|
|
103
|
+
<tr class="memitem:a1186ed5d52a12f8495d3b64df78f3052"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SymbolTableBuilder.html#a1186ed5d52a12f8495d3b64df78f3052">collectNullPtrBlackholeSyms</a> (const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *val)</td></tr>
|
|
104
|
+
<tr class="memdesc:a1186ed5d52a12f8495d3b64df78f3052"><td class="mdescLeft"> </td><td class="mdescRight">collect the syms <a href="#a1186ed5d52a12f8495d3b64df78f3052">More...</a><br /></td></tr>
|
|
105
|
+
<tr class="separator:a1186ed5d52a12f8495d3b64df78f3052"><td class="memSeparator" colspan="2"> </td></tr>
|
|
103
106
|
<tr class="memitem:ac2fa9a797e3e2a8885ccc488030659d5"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a> (const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *val)</td></tr>
|
|
104
|
-
<tr class="memdesc:ac2fa9a797e3e2a8885ccc488030659d5"><td class="mdescLeft"> </td><td class="mdescRight">collect the syms <a href="#ac2fa9a797e3e2a8885ccc488030659d5">More...</a><br /></td></tr>
|
|
105
107
|
<tr class="separator:ac2fa9a797e3e2a8885ccc488030659d5"><td class="memSeparator" colspan="2"> </td></tr>
|
|
106
108
|
<tr class="memitem:abc8b35d432db78bd5282010c7c800d70"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SymbolTableBuilder.html#abc8b35d432db78bd5282010c7c800d70">collectVal</a> (const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *val)</td></tr>
|
|
107
109
|
<tr class="separator:abc8b35d432db78bd5282010c7c800d70"><td class="memSeparator" colspan="2"> </td></tr>
|
|
@@ -190,13 +192,13 @@ Private Attributes</h2></td></tr>
|
|
|
190
192
|
<p>Analyse types of heap and static objects. </p>
|
|
191
193
|
<p>Analyse types of heap and static objects </p>
|
|
192
194
|
|
|
193
|
-
<p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#
|
|
194
|
-
<div class="fragment"><div class="line"><a name="
|
|
195
|
-
<div class="ttc" id="classSVF_1_1ObjTypeInfo_html_a91b41b7ade5871362b77a2ef566b2830a692b4b0df23bad19ea04d18b01bf445c"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830a692b4b0df23bad19ea04d18b01bf445c">SVF::ObjTypeInfo::HEAP_OBJ</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#
|
|
196
|
-
<div class="ttc" id="classSVF_1_1SymbolTableBuilder_html_af5c882c10cd46c669c5aededbdb510d8"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#af5c882c10cd46c669c5aededbdb510d8">SVF::SymbolTableBuilder::analyzeObjType</a></div><div class="ttdeci">void analyzeObjType(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#
|
|
197
|
-
<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#
|
|
195
|
+
<p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#l00592">592</a> of file <a class="el" href="SymbolTableBuilder_8cpp_source.html">SymbolTableBuilder.cpp</a>.</p>
|
|
196
|
+
<div class="fragment"><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>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* castUse = <a class="code" href="namespaceSVF_1_1SVFUtil.html#ad72b3529e87e71767c6d226821cfddb3">getUniqueUseViaCastInst</a>(val))</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>  typeinfo-><a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830a692b4b0df23bad19ea04d18b01bf445c">ObjTypeInfo::HEAP_OBJ</a>);</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>  typeinfo-><a class="code" href="classSVF_1_1ObjTypeInfo.html#a57d714a511273b8275374cd4c7f14373">resetTypeForHeapStaticObj</a>(castUse->getType());</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#af5c882c10cd46c669c5aededbdb510d8">analyzeObjType</a>(typeinfo,castUse);</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>  <span class="keywordflow">else</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>  typeinfo-><a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830a692b4b0df23bad19ea04d18b01bf445c">ObjTypeInfo::HEAP_OBJ</a>);</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</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="l00604"></a><span class="lineno"> 604</span>  }</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span> }</div><div class="ttc" id="namespaceSVF_1_1SVFUtil_html_ad72b3529e87e71767c6d226821cfddb3"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#ad72b3529e87e71767c6d226821cfddb3">SVF::SVFUtil::getUniqueUseViaCastInst</a></div><div class="ttdeci">const Value * getUniqueUseViaCastInst(const Value *val)</div><div class="ttdoc">Return the bitcast instruction which is val&#39;s only use site, otherwise return nullptr. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00307">LLVMUtil.cpp:307</a></div></div>
|
|
197
|
+
<div class="ttc" id="classSVF_1_1ObjTypeInfo_html_a91b41b7ade5871362b77a2ef566b2830a692b4b0df23bad19ea04d18b01bf445c"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830a692b4b0df23bad19ea04d18b01bf445c">SVF::ObjTypeInfo::HEAP_OBJ</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00568">SymbolTableInfo.h:568</a></div></div>
|
|
198
|
+
<div class="ttc" id="classSVF_1_1SymbolTableBuilder_html_af5c882c10cd46c669c5aededbdb510d8"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#af5c882c10cd46c669c5aededbdb510d8">SVF::SymbolTableBuilder::analyzeObjType</a></div><div class="ttdeci">void analyzeObjType(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#l00546">SymbolTableBuilder.cpp:546</a></div></div>
|
|
199
|
+
<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#l00634">SymbolTableInfo.h:634</a></div></div>
|
|
198
200
|
<div class="ttc" id="classSVF_1_1ObjTypeInfo_html_a57d714a511273b8275374cd4c7f14373"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a57d714a511273b8275374cd4c7f14373">SVF::ObjTypeInfo::resetTypeForHeapStaticObj</a></div><div class="ttdeci">void resetTypeForHeapStaticObj(const Type *type)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00051">SymbolTableInfo.cpp:51</a></div></div>
|
|
199
|
-
<div class="ttc" id="classSVF_1_1ObjTypeInfo_html_a91b41b7ade5871362b77a2ef566b2830ad17b2a35fb492561c4011dbe3880c6c9"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830ad17b2a35fb492561c4011dbe3880c6c9">SVF::ObjTypeInfo::HASPTR_OBJ</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#
|
|
201
|
+
<div class="ttc" id="classSVF_1_1ObjTypeInfo_html_a91b41b7ade5871362b77a2ef566b2830ad17b2a35fb492561c4011dbe3880c6c9"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830ad17b2a35fb492561c4011dbe3880c6c9">SVF::ObjTypeInfo::HASPTR_OBJ</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00575">SymbolTableInfo.h:575</a></div></div>
|
|
200
202
|
<div class="ttc" id="namespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00072">BasicTypes.h:72</a></div></div>
|
|
201
203
|
</div><!-- fragment -->
|
|
202
204
|
</div>
|
|
@@ -230,22 +232,22 @@ Private Attributes</h2></td></tr>
|
|
|
230
232
|
<p>Analyse types of all flattened fields of this object. </p>
|
|
231
233
|
<p>Analyse types of all flattened fields of this object </p>
|
|
232
234
|
|
|
233
|
-
<p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#
|
|
234
|
-
<div class="fragment"><div class="line"><a name="
|
|
235
|
+
<p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#l00546">546</a> of file <a class="el" href="SymbolTableBuilder_8cpp_source.html">SymbolTableBuilder.cpp</a>.</p>
|
|
236
|
+
<div class="fragment"><div class="line"><a name="l00547"></a><span class="lineno"> 547</span> {</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span> </div><div class="line"><a name="l00549"></a><span class="lineno"> 549</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="l00550"></a><span class="lineno"> 550</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(refty && <span class="stringliteral">"this value should be a pointer type!"</span>);</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>  <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* elemTy = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8e7f56fa15cea924a09cd6903de2606c">getPtrElementType</a>(refty);</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>  <span class="keywordtype">bool</span> isPtrObj = <span class="keyword">false</span>;</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>  <span class="comment">// Find the inter nested array element</span></div><div class="line"><a name="l00554"></a><span class="lineno"> 554</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="l00555"></a><span class="lineno"> 555</span>  {</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>  elemTy = AT->getElementType();</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  <span class="keywordflow">if</span>(elemTy->isPointerTy())</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>  isPtrObj = <span class="keyword">true</span>;</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>  <span class="keywordflow">if</span>(SVFUtil::isa<GlobalVariable>(val) && SVFUtil::cast<GlobalVariable>(val)->hasInitializer()</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>  && SVFUtil::isa<ConstantArray>(SVFUtil::cast<GlobalVariable>(val)->getInitializer()))</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</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="l00562"></a><span class="lineno"> 562</span>  <span class="keywordflow">else</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#a91b41b7ade5871362b77a2ef566b2830adedc43e0fcaebf433120869aa9307b1c">ObjTypeInfo::VAR_ARRAY_OBJ</a>);</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>  }</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</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="l00566"></a><span class="lineno"> 566</span>  {</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  <span class="keyword">const</span> std::vector<const Type*>& flattenFields = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-><a class="code" href="classSVF_1_1SymbolTableInfo.html#abdd4abea485b94ae31fd9b75dd3866de">getFlattenFieldTypes</a>(ST);</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>  <span class="keywordflow">for</span>(std::vector<const Type*>::const_iterator it = flattenFields.begin(), eit = flattenFields.end();</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>  it!=eit; ++it)</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>  {</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>  <span class="keywordflow">if</span>((*it)->isPointerTy())</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>  isPtrObj = <span class="keyword">true</span>;</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">if</span>(SVFUtil::isa<GlobalVariable>(val) && SVFUtil::cast<GlobalVariable>(val)->hasInitializer()</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>  && SVFUtil::isa<ConstantStruct>(SVFUtil::cast<GlobalVariable>(val)->getInitializer()))</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</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="l00577"></a><span class="lineno"> 577</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00578"></a><span class="lineno"> 578</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="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> (elemTy->isPointerTy())</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>  isPtrObj = <span class="keyword">true</span>;</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>  }</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span> </div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>  <span class="keywordflow">if</span>(isPtrObj)</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</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="l00587"></a><span class="lineno"> 587</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#l00572">SymbolTableInfo.h:572</a></div></div>
|
|
235
237
|
<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="ttdoc">LLVM Basic classes. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00065">BasicTypes.h:65</a></div></div>
|
|
236
238
|
<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>
|
|
237
239
|
<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="Util_2BasicTypes_8h_source.html#l00089">BasicTypes.h:89</a></div></div>
|
|
238
240
|
<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="Util_2BasicTypes_8h_source.html#l00088">BasicTypes.h:88</a></div></div>
|
|
239
|
-
<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#
|
|
241
|
+
<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#l00634">SymbolTableInfo.h:634</a></div></div>
|
|
240
242
|
<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="Util_2BasicTypes_8h_source.html#l00087">BasicTypes.h:87</a></div></div>
|
|
241
|
-
<div class="ttc" id="classSVF_1_1ObjTypeInfo_html_a91b41b7ade5871362b77a2ef566b2830adedc43e0fcaebf433120869aa9307b1c"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830adedc43e0fcaebf433120869aa9307b1c">SVF::ObjTypeInfo::VAR_ARRAY_OBJ</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#
|
|
242
|
-
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a8e7f56fa15cea924a09cd6903de2606c"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a8e7f56fa15cea924a09cd6903de2606c">SVF::SVFUtil::getPtrElementType</a></div><div class="ttdeci">static Type * getPtrElementType(const PointerType *pty)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#
|
|
243
|
-
<div class="ttc" id="classSVF_1_1ObjTypeInfo_html_a91b41b7ade5871362b77a2ef566b2830ad17b2a35fb492561c4011dbe3880c6c9"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830ad17b2a35fb492561c4011dbe3880c6c9">SVF::ObjTypeInfo::HASPTR_OBJ</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#
|
|
244
|
-
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_abdd4abea485b94ae31fd9b75dd3866de"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#abdd4abea485b94ae31fd9b75dd3866de">SVF::SymbolTableInfo::getFlattenFieldTypes</a></div><div class="ttdeci">const std::vector< const Type * > & getFlattenFieldTypes(const StructType *T)</div><div class="ttdoc">Return the flattened field type for struct type only. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#
|
|
243
|
+
<div class="ttc" id="classSVF_1_1ObjTypeInfo_html_a91b41b7ade5871362b77a2ef566b2830adedc43e0fcaebf433120869aa9307b1c"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830adedc43e0fcaebf433120869aa9307b1c">SVF::ObjTypeInfo::VAR_ARRAY_OBJ</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00570">SymbolTableInfo.h:570</a></div></div>
|
|
244
|
+
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a8e7f56fa15cea924a09cd6903de2606c"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a8e7f56fa15cea924a09cd6903de2606c">SVF::SVFUtil::getPtrElementType</a></div><div class="ttdeci">static Type * getPtrElementType(const PointerType *pty)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00073">LLVMUtil.h:73</a></div></div>
|
|
245
|
+
<div class="ttc" id="classSVF_1_1ObjTypeInfo_html_a91b41b7ade5871362b77a2ef566b2830ad17b2a35fb492561c4011dbe3880c6c9"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830ad17b2a35fb492561c4011dbe3880c6c9">SVF::ObjTypeInfo::HASPTR_OBJ</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00575">SymbolTableInfo.h:575</a></div></div>
|
|
246
|
+
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_abdd4abea485b94ae31fd9b75dd3866de"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#abdd4abea485b94ae31fd9b75dd3866de">SVF::SymbolTableInfo::getFlattenFieldTypes</a></div><div class="ttdeci">const std::vector< const Type * > & getFlattenFieldTypes(const StructType *T)</div><div class="ttdoc">Return the flattened field type for struct type only. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00422">SymbolTableInfo.cpp:422</a></div></div>
|
|
245
247
|
<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#l00107">SymbolTableInfo.cpp:107</a></div></div>
|
|
246
248
|
<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>
|
|
247
|
-
<div class="ttc" id="classSVF_1_1ObjTypeInfo_html_a91b41b7ade5871362b77a2ef566b2830aaf98981bd15b41f543fd99d0c6222f08"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830aaf98981bd15b41f543fd99d0c6222f08">SVF::ObjTypeInfo::VAR_STRUCT_OBJ</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#
|
|
248
|
-
<div class="ttc" id="classSVF_1_1ObjTypeInfo_html_a91b41b7ade5871362b77a2ef566b2830a6443b9fadd2d34e00832b2215a120ebd"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830a6443b9fadd2d34e00832b2215a120ebd">SVF::ObjTypeInfo::CONST_STRUCT_OBJ</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#
|
|
249
|
+
<div class="ttc" id="classSVF_1_1ObjTypeInfo_html_a91b41b7ade5871362b77a2ef566b2830aaf98981bd15b41f543fd99d0c6222f08"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830aaf98981bd15b41f543fd99d0c6222f08">SVF::ObjTypeInfo::VAR_STRUCT_OBJ</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00569">SymbolTableInfo.h:569</a></div></div>
|
|
250
|
+
<div class="ttc" id="classSVF_1_1ObjTypeInfo_html_a91b41b7ade5871362b77a2ef566b2830a6443b9fadd2d34e00832b2215a120ebd"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830a6443b9fadd2d34e00832b2215a120ebd">SVF::ObjTypeInfo::CONST_STRUCT_OBJ</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00571">SymbolTableInfo.h:571</a></div></div>
|
|
249
251
|
</div><!-- fragment -->
|
|
250
252
|
</div>
|
|
251
253
|
</div>
|
|
@@ -278,14 +280,14 @@ Private Attributes</h2></td></tr>
|
|
|
278
280
|
<p>Analyse types of heap and static objects. </p>
|
|
279
281
|
<p>Analyse types of heap and static objects </p>
|
|
280
282
|
|
|
281
|
-
<p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#
|
|
282
|
-
<div class="fragment"><div class="line"><a name="
|
|
283
|
-
<div class="ttc" id="classSVF_1_1ObjTypeInfo_html_a91b41b7ade5871362b77a2ef566b2830a692b4b0df23bad19ea04d18b01bf445c"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830a692b4b0df23bad19ea04d18b01bf445c">SVF::ObjTypeInfo::HEAP_OBJ</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#
|
|
284
|
-
<div class="ttc" id="classSVF_1_1SymbolTableBuilder_html_af5c882c10cd46c669c5aededbdb510d8"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#af5c882c10cd46c669c5aededbdb510d8">SVF::SymbolTableBuilder::analyzeObjType</a></div><div class="ttdeci">void analyzeObjType(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#
|
|
285
|
-
<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#
|
|
283
|
+
<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>
|
|
284
|
+
<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>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* castUse = <a class="code" href="namespaceSVF_1_1SVFUtil.html#ad72b3529e87e71767c6d226821cfddb3">getUniqueUseViaCastInst</a>(val))</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>  {</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>  typeinfo-><a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830a4e7606afe2dabdef9c9836ae798a9d98">ObjTypeInfo::STATIC_OBJ</a>);</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>  typeinfo-><a class="code" href="classSVF_1_1ObjTypeInfo.html#a57d714a511273b8275374cd4c7f14373">resetTypeForHeapStaticObj</a>(castUse->getType());</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#af5c882c10cd46c669c5aededbdb510d8">analyzeObjType</a>(typeinfo,castUse);</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>  }</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>  {</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>  typeinfo-><a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830a692b4b0df23bad19ea04d18b01bf445c">ObjTypeInfo::HEAP_OBJ</a>);</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</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="l00622"></a><span class="lineno"> 622</span>  }</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span> }</div><div class="ttc" id="namespaceSVF_1_1SVFUtil_html_ad72b3529e87e71767c6d226821cfddb3"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#ad72b3529e87e71767c6d226821cfddb3">SVF::SVFUtil::getUniqueUseViaCastInst</a></div><div class="ttdeci">const Value * getUniqueUseViaCastInst(const Value *val)</div><div class="ttdoc">Return the bitcast instruction which is val&#39;s only use site, otherwise return nullptr. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00307">LLVMUtil.cpp:307</a></div></div>
|
|
285
|
+
<div class="ttc" id="classSVF_1_1ObjTypeInfo_html_a91b41b7ade5871362b77a2ef566b2830a692b4b0df23bad19ea04d18b01bf445c"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830a692b4b0df23bad19ea04d18b01bf445c">SVF::ObjTypeInfo::HEAP_OBJ</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00568">SymbolTableInfo.h:568</a></div></div>
|
|
286
|
+
<div class="ttc" id="classSVF_1_1SymbolTableBuilder_html_af5c882c10cd46c669c5aededbdb510d8"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#af5c882c10cd46c669c5aededbdb510d8">SVF::SymbolTableBuilder::analyzeObjType</a></div><div class="ttdeci">void analyzeObjType(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#l00546">SymbolTableBuilder.cpp:546</a></div></div>
|
|
287
|
+
<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#l00634">SymbolTableInfo.h:634</a></div></div>
|
|
286
288
|
<div class="ttc" id="classSVF_1_1ObjTypeInfo_html_a57d714a511273b8275374cd4c7f14373"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a57d714a511273b8275374cd4c7f14373">SVF::ObjTypeInfo::resetTypeForHeapStaticObj</a></div><div class="ttdeci">void resetTypeForHeapStaticObj(const Type *type)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00051">SymbolTableInfo.cpp:51</a></div></div>
|
|
287
|
-
<div class="ttc" id="classSVF_1_1ObjTypeInfo_html_a91b41b7ade5871362b77a2ef566b2830ad17b2a35fb492561c4011dbe3880c6c9"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830ad17b2a35fb492561c4011dbe3880c6c9">SVF::ObjTypeInfo::HASPTR_OBJ</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#
|
|
288
|
-
<div class="ttc" id="classSVF_1_1ObjTypeInfo_html_a91b41b7ade5871362b77a2ef566b2830a4e7606afe2dabdef9c9836ae798a9d98"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830a4e7606afe2dabdef9c9836ae798a9d98">SVF::ObjTypeInfo::STATIC_OBJ</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#
|
|
289
|
+
<div class="ttc" id="classSVF_1_1ObjTypeInfo_html_a91b41b7ade5871362b77a2ef566b2830ad17b2a35fb492561c4011dbe3880c6c9"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830ad17b2a35fb492561c4011dbe3880c6c9">SVF::ObjTypeInfo::HASPTR_OBJ</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00575">SymbolTableInfo.h:575</a></div></div>
|
|
290
|
+
<div class="ttc" id="classSVF_1_1ObjTypeInfo_html_a91b41b7ade5871362b77a2ef566b2830a4e7606afe2dabdef9c9836ae798a9d98"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830a4e7606afe2dabdef9c9836ae798a9d98">SVF::ObjTypeInfo::STATIC_OBJ</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00566">SymbolTableInfo.h:566</a></div></div>
|
|
289
291
|
<div class="ttc" id="namespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00072">BasicTypes.h:72</a></div></div>
|
|
290
292
|
</div><!-- fragment -->
|
|
291
293
|
</div>
|
|
@@ -323,9 +325,9 @@ Private Attributes</h2></td></tr>
|
|
|
323
325
|
<div class="ttc" id="classSVF_1_1NodeIDAllocator_html_a92b053f79cfa1259603836cb0aacad7d"><div class="ttname"><a href="classSVF_1_1NodeIDAllocator.html#a92b053f79cfa1259603836cb0aacad7d">SVF::NodeIDAllocator::endSymbolAllocation</a></div><div class="ttdeci">NodeID endSymbolAllocation(void)</div><div class="ttdoc">Notify the allocator that all symbols have had IDs allocated. </div><div class="ttdef"><b>Definition:</b> <a href="NodeIDAllocator_8cpp_source.html#l00164">NodeIDAllocator.cpp:164</a></div></div>
|
|
324
326
|
<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>
|
|
325
327
|
<div class="ttc" id="classSVF_1_1CallSite_html_a9526f6c3829f8897d1ca617feda8451a"><div class="ttname"><a href="classSVF_1_1CallSite.html#a9526f6c3829f8897d1ca617feda8451a">SVF::CallSite::getCalledValue</a></div><div class="ttdeci">Value * getCalledValue() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00251">BasicTypes.h:251</a></div></div>
|
|
326
|
-
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a6ddf057415f641bd8ad15bded1415776"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a6ddf057415f641bd8ad15bded1415776">SVF::SymbolTableInfo::createBlkObj</a></div><div class="ttdeci">MemObj * createBlkObj(SymID symId)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#
|
|
328
|
+
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a6ddf057415f641bd8ad15bded1415776"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a6ddf057415f641bd8ad15bded1415776">SVF::SymbolTableInfo::createBlkObj</a></div><div class="ttdeci">MemObj * createBlkObj(SymID symId)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00338">SymbolTableInfo.cpp:338</a></div></div>
|
|
327
329
|
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_afd2cf6ef6d7f2a583c709a72067be89baa3ecb7c51e2cba67d1f9a5284c2f215f"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#afd2cf6ef6d7f2a583c709a72067be89baa3ecb7c51e2cba67d1f9a5284c2f215f">SVF::SymbolTableInfo::ConstantObj</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00059">SymbolTableInfo.h:59</a></div></div>
|
|
328
|
-
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a125faa0295b38d027b35bc3d76b3afdd"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a125faa0295b38d027b35bc3d76b3afdd">SVF::SymbolTableInfo::totalSymNum</a></div><div class="ttdeci">SymID totalSymNum</div><div class="ttdoc">total number of symbols </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#
|
|
330
|
+
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a125faa0295b38d027b35bc3d76b3afdd"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a125faa0295b38d027b35bc3d76b3afdd">SVF::SymbolTableInfo::totalSymNum</a></div><div class="ttdeci">SymID totalSymNum</div><div class="ttdoc">total number of symbols </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00107">SymbolTableInfo.h:107</a></div></div>
|
|
329
331
|
<div class="ttc" id="SVF-FE_2BasicTypes_8h_html_a160997c1a0fb1000445d04b89d9c1323"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#a160997c1a0fb1000445d04b89d9c1323">inst_iterator</a></div><div class="ttdeci">llvm::inst_iterator inst_iterator</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00110">BasicTypes.h:110</a></div></div>
|
|
330
332
|
<div class="ttc" id="classSVF_1_1CallSite_html_a46e8ffe430bb2711abaafc9d7864909e"><div class="ttname"><a href="classSVF_1_1CallSite.html#a46e8ffe430bb2711abaafc9d7864909e">SVF::CallSite::arg_end</a></div><div class="ttdeci">User::const_op_iterator arg_end() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00227">BasicTypes.h:227</a></div></div>
|
|
331
333
|
<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#l00084">SVFBasicTypes.h:84</a></div></div>
|
|
@@ -335,7 +337,7 @@ Private Attributes</h2></td></tr>
|
|
|
335
337
|
<div class="ttc" id="classSVF_1_1SVFModule_html_a648542aa5c4b487ad5aa12a39d15e951"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a648542aa5c4b487ad5aa12a39d15e951">SVF::SVFModule::llvmFunBegin</a></div><div class="ttdeci">llvm_iterator llvmFunBegin()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00130">SVFModule.h:130</a></div></div>
|
|
336
338
|
<div class="ttc" id="classSVF_1_1SVFModule_html_aa5a0780c5c69a1e9a0ba902b4ad49714"><div class="ttname"><a href="classSVF_1_1SVFModule.html#aa5a0780c5c69a1e9a0ba902b4ad49714">SVF::SVFModule::llvm_iterator</a></div><div class="ttdeci">LLVMFunctionSetType::iterator llvm_iterator</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00053">SVFModule.h:53</a></div></div>
|
|
337
339
|
<div class="ttc" id="SVF-FE_2BasicTypes_8h_html_a20b13f90796ee748f58e6c5faa7c63da"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#a20b13f90796ee748f58e6c5faa7c63da">CastInst</a></div><div class="ttdeci">llvm::CastInst CastInst</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00071">BasicTypes.h:71</a></div></div>
|
|
338
|
-
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a9f4cf6914b400b9f69c7852f13c496a9"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a9f4cf6914b400b9f69c7852f13c496a9">SVF::SymbolTableInfo::dump</a></div><div class="ttdeci">virtual void dump()</div><div class="ttdoc">Another debug method. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#
|
|
340
|
+
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a9f4cf6914b400b9f69c7852f13c496a9"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a9f4cf6914b400b9f69c7852f13c496a9">SVF::SymbolTableInfo::dump</a></div><div class="ttdeci">virtual void dump()</div><div class="ttdoc">Another debug method. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00534">SymbolTableInfo.cpp:534</a></div></div>
|
|
339
341
|
<div class="ttc" id="namespaceSVF_html_a5faee14fa1dd41447bc73ac365fe33c1"><div class="ttname"><a href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a></div><div class="ttdeci">llvm::Function Function</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00070">BasicTypes.h:70</a></div></div>
|
|
340
342
|
<div class="ttc" id="SVF-FE_2BasicTypes_8h_html_a02550b1e1110f4cfca868603ce243564"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#a02550b1e1110f4cfca868603ce243564">CmpInst</a></div><div class="ttdeci">llvm::CmpInst CmpInst</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00072">BasicTypes.h:72</a></div></div>
|
|
341
343
|
<div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00073">BasicTypes.h:73</a></div></div>
|
|
@@ -354,21 +356,49 @@ Private Attributes</h2></td></tr>
|
|
|
354
356
|
<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="Util_2BasicTypes_8h_source.html#l00202">BasicTypes.h:202</a></div></div>
|
|
355
357
|
<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>
|
|
356
358
|
<div class="ttc" id="SVF-FE_2BasicTypes_8h_html_a55ac065a1d559c907908492c6853dd53"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#a55ac065a1d559c907908492c6853dd53">SwitchInst</a></div><div class="ttdeci">llvm::SwitchInst SwitchInst</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00068">BasicTypes.h:68</a></div></div>
|
|
357
|
-
<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#
|
|
359
|
+
<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#l00294">SymbolTableBuilder.cpp:294</a></div></div>
|
|
358
360
|
<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="Util_2BasicTypes_8h_source.html#l00214">BasicTypes.h:214</a></div></div>
|
|
359
361
|
<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#l00209">SVFUtil.h:209</a></div></div>
|
|
360
|
-
<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="
|
|
361
|
-
<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#
|
|
362
|
-
<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#
|
|
362
|
+
<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="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00211">SymbolTableBuilder.cpp:211</a></div></div>
|
|
363
|
+
<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#l00347">SymbolTableInfo.cpp:347</a></div></div>
|
|
364
|
+
<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#l00309">SymbolTableBuilder.cpp:309</a></div></div>
|
|
363
365
|
<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>
|
|
364
366
|
<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#l00228">SVFUtil.cpp:228</a></div></div>
|
|
365
367
|
<div class="ttc" id="SVF-FE_2BasicTypes_8h_html_adeac5db1db4ed03898d30f205fd02264"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#adeac5db1db4ed03898d30f205fd02264">BranchInst</a></div><div class="ttdeci">llvm::BranchInst BranchInst</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00067">BasicTypes.h:67</a></div></div>
|
|
366
368
|
<div class="ttc" id="namespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00072">BasicTypes.h:72</a></div></div>
|
|
367
|
-
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a4f916c64ca04c4db30bd19fb8505724d"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a4f916c64ca04c4db30bd19fb8505724d">SVF::SymbolTableInfo::setModule</a></div><div class="ttdeci">void setModule(SVFModule *m)</div><div class="ttdoc">Module. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#
|
|
369
|
+
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a4f916c64ca04c4db30bd19fb8505724d"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a4f916c64ca04c4db30bd19fb8505724d">SVF::SymbolTableInfo::setModule</a></div><div class="ttdeci">void setModule(SVFModule *m)</div><div class="ttdoc">Module. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00159">SymbolTableInfo.h:159</a></div></div>
|
|
368
370
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a0d100868bf63b968d387eb50e9603f7c"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a0d100868bf63b968d387eb50e9603f7c">SVF::SVFUtil::cast</a></div><div class="ttdeci">std::enable_if<!is_simple_type< Y >::value, typename cast_retty< X, const Y >::ret_type >::type cast(const Y &Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00297">Casting.h:297</a></div></div>
|
|
369
371
|
</div><!-- fragment -->
|
|
370
372
|
</div>
|
|
371
373
|
</div>
|
|
374
|
+
<a id="a1186ed5d52a12f8495d3b64df78f3052"></a>
|
|
375
|
+
<h2 class="memtitle"><span class="permalink"><a href="#a1186ed5d52a12f8495d3b64df78f3052">◆ </a></span>collectNullPtrBlackholeSyms()</h2>
|
|
376
|
+
|
|
377
|
+
<div class="memitem">
|
|
378
|
+
<div class="memproto">
|
|
379
|
+
<table class="memname">
|
|
380
|
+
<tr>
|
|
381
|
+
<td class="memname">void SymbolTableBuilder::collectNullPtrBlackholeSyms </td>
|
|
382
|
+
<td>(</td>
|
|
383
|
+
<td class="paramtype">const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> * </td>
|
|
384
|
+
<td class="paramname"><em>val</em></td><td>)</td>
|
|
385
|
+
<td></td>
|
|
386
|
+
</tr>
|
|
387
|
+
</table>
|
|
388
|
+
</div><div class="memdoc">
|
|
389
|
+
|
|
390
|
+
<p>collect the syms </p>
|
|
391
|
+
<p>Collect special sym here </p>
|
|
392
|
+
|
|
393
|
+
<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>
|
|
394
|
+
<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>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a4c1107b2635f374e71e6a3a43834469b">SVFUtil::isNullPtrSym</a>(val))</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">symInfo</a>-><a class="code" href="classSVF_1_1SymbolTableInfo.html#a971a064010c989792d900ca026584e9f">nullPtrSyms</a>.insert(val);</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#ac0df4ee0bf78167dd9461227b5cce7af">SVFUtil::isBlackholeSym</a>(val))</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">symInfo</a>-><a class="code" href="classSVF_1_1SymbolTableInfo.html#a3f661249c4543c7bdb7ed17706b086cc">blackholeSyms</a>.insert(val);</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span> }</div><div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a4c1107b2635f374e71e6a3a43834469b"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a4c1107b2635f374e71e6a3a43834469b">SVF::SVFUtil::isNullPtrSym</a></div><div class="ttdeci">bool isNullPtrSym(const Value *val)</div><div class="ttdoc">Check whether this value is a black hole. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00054">LLVMUtil.h:54</a></div></div>
|
|
395
|
+
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_ac0df4ee0bf78167dd9461227b5cce7af"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#ac0df4ee0bf78167dd9461227b5cce7af">SVF::SVFUtil::isBlackholeSym</a></div><div class="ttdeci">bool isBlackholeSym(const Value *val)</div><div class="ttdoc">Check whether this value is a black hole. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00048">LLVMUtil.h:48</a></div></div>
|
|
396
|
+
<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>
|
|
397
|
+
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a3f661249c4543c7bdb7ed17706b086cc"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a3f661249c4543c7bdb7ed17706b086cc">SVF::SymbolTableInfo::blackholeSyms</a></div><div class="ttdeci">Set< const Value * > blackholeSyms</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00092">SymbolTableInfo.h:92</a></div></div>
|
|
398
|
+
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a971a064010c989792d900ca026584e9f"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a971a064010c989792d900ca026584e9f">SVF::SymbolTableInfo::nullPtrSyms</a></div><div class="ttdeci">Set< const Value * > nullPtrSyms</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00091">SymbolTableInfo.h:91</a></div></div>
|
|
399
|
+
</div><!-- fragment -->
|
|
400
|
+
</div>
|
|
401
|
+
</div>
|
|
372
402
|
<a id="a891bfea437256d1b7aa957d32797e419"></a>
|
|
373
403
|
<h2 class="memtitle"><span class="permalink"><a href="#a891bfea437256d1b7aa957d32797e419">◆ </a></span>collectObj()</h2>
|
|
374
404
|
|
|
@@ -386,22 +416,22 @@ Private Attributes</h2></td></tr>
|
|
|
386
416
|
</div><div class="memdoc">
|
|
387
417
|
<p>Get memory object sym, if not available create a new one </p>
|
|
388
418
|
|
|
389
|
-
<p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#
|
|
390
|
-
<div class="fragment"><div class="line"><a name="
|
|
419
|
+
<p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#l00262">262</a> of file <a class="el" href="SymbolTableBuilder_8cpp_source.html">SymbolTableBuilder.cpp</a>.</p>
|
|
420
|
+
<div class="fragment"><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>  val = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a4b55d5252da1f316f505cf6ce2078b28">getGlobalRep</a>(val);</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</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="l00266"></a><span class="lineno"> 266</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="l00267"></a><span class="lineno"> 267</span>  {</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</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="l00269"></a><span class="lineno"> 269</span>  <span class="comment">// then we treat them as one ConstantObj</span></div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  <span class="keywordflow">if</span>((<a class="code" href="namespaceSVF_1_1SVFUtil.html#a6442fbf0cccd55cf93eab2b656756e9a">SVFUtil::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="l00271"></a><span class="lineno"> 271</span>  {</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</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="l00273"></a><span class="lineno"> 273</span>  }</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <span class="comment">// otherwise, we will create an object for each abstract memory location</span></div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  {</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  <span class="comment">// create obj sym and sym type</span></div><div class="line"><a name="l00278"></a><span class="lineno"> 278</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="l00279"></a><span class="lineno"> 279</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="l00280"></a><span class="lineno"> 280</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="l00281"></a><span class="lineno"> 281</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">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="l00282"></a><span class="lineno"> 282</span> </div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  <span class="comment">// create a memory object</span></div><div class="line"><a name="l00284"></a><span class="lineno"> 284</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="l00285"></a><span class="lineno"> 285</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="l00286"></a><span class="lineno"> 286</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="l00287"></a><span class="lineno"> 287</span>  }</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  }</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</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#l00373">SymbolTableInfo.h:373</a></div></div>
|
|
391
421
|
<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>
|
|
422
|
+
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a6442fbf0cccd55cf93eab2b656756e9a"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a6442fbf0cccd55cf93eab2b656756e9a">SVF::SVFUtil::isConstantObjSym</a></div><div class="ttdeci">bool isConstantObjSym(const Value *val)</div><div class="ttdoc">Check whether this value points-to a constant object. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00060">LLVMUtil.cpp:60</a></div></div>
|
|
392
423
|
<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#l00258">SVFUtil.h:258</a></div></div>
|
|
393
424
|
<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>
|
|
394
425
|
<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#l00162">SVFBasicTypes.h:162</a></div></div>
|
|
395
|
-
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_ab582424fdb6d9674c1bd4466cdfbe497"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#ab582424fdb6d9674c1bd4466cdfbe497">SVF::SymbolTableInfo::constantSymID</a></div><div class="ttdeci">SymID constantSymID() const</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#
|
|
426
|
+
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_ab582424fdb6d9674c1bd4466cdfbe497"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#ab582424fdb6d9674c1bd4466cdfbe497">SVF::SymbolTableInfo::constantSymID</a></div><div class="ttdeci">SymID constantSymID() const</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00213">SymbolTableInfo.h:213</a></div></div>
|
|
396
427
|
<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#l00091">SVFBasicTypes.h:91</a></div></div>
|
|
397
428
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aed0b0b9f035057552a6a82154fd88e61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVF::SVFUtil::outs</a></div><div class="ttdeci">std::ostream & 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>
|
|
398
429
|
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a5840b742ed8c73ece548b9b4aede07ec"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a5840b742ed8c73ece548b9b4aede07ec">SVF::SymbolTableInfo::objSymMap</a></div><div class="ttdeci">ValueToIDMapTy objSymMap</div><div class="ttdoc">map a obj reference to its sym id </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00085">SymbolTableInfo.h:85</a></div></div>
|
|
399
430
|
<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>
|
|
400
431
|
<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#l00088">SymbolTableInfo.h:88</a></div></div>
|
|
401
|
-
<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#
|
|
432
|
+
<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#l00503">SymbolTableBuilder.cpp:503</a></div></div>
|
|
402
433
|
<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>
|
|
403
|
-
<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#
|
|
404
|
-
<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#l00335">SymbolTableInfo.cpp:335</a></div></div>
|
|
434
|
+
<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#l00139">SymbolTableInfo.h:139</a></div></div>
|
|
405
435
|
<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#l00154">SVFBasicTypes.h:154</a></div></div>
|
|
406
436
|
</div><!-- fragment -->
|
|
407
437
|
</div>
|
|
@@ -423,8 +453,8 @@ Private Attributes</h2></td></tr>
|
|
|
423
453
|
</div><div class="memdoc">
|
|
424
454
|
<p>Create unique return sym, if not available create a new one </p>
|
|
425
455
|
|
|
426
|
-
<p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#
|
|
427
|
-
<div class="fragment"><div class="line"><a name="
|
|
456
|
+
<p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#l00294">294</a> of file <a class="el" href="SymbolTableBuilder_8cpp_source.html">SymbolTableBuilder.cpp</a>.</p>
|
|
457
|
+
<div class="fragment"><div class="line"><a name="l00295"></a><span class="lineno"> 295</span> {</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</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="l00297"></a><span class="lineno"> 297</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="l00298"></a><span class="lineno"> 298</span>  {</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</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="l00300"></a><span class="lineno"> 300</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="l00301"></a><span class="lineno"> 301</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="l00302"></a><span class="lineno"> 302</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">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="l00303"></a><span class="lineno"> 303</span>  }</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</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#l00162">SVFBasicTypes.h:162</a></div></div>
|
|
428
458
|
<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#l00091">SVFBasicTypes.h:91</a></div></div>
|
|
429
459
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aed0b0b9f035057552a6a82154fd88e61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVF::SVFUtil::outs</a></div><div class="ttdeci">std::ostream & 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>
|
|
430
460
|
<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>
|
|
@@ -450,21 +480,16 @@ Private Attributes</h2></td></tr>
|
|
|
450
480
|
</tr>
|
|
451
481
|
</table>
|
|
452
482
|
</div><div class="memdoc">
|
|
453
|
-
|
|
454
|
-
<p>collect the syms </p>
|
|
455
483
|
<p>Collect symbols, including value and object syms </p>
|
|
456
484
|
|
|
457
|
-
<p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#
|
|
458
|
-
<div class="fragment"><div class="line"><a name="
|
|
459
|
-
<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#
|
|
485
|
+
<p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#l00211">211</a> of file <a class="el" href="SymbolTableBuilder_8cpp_source.html">SymbolTableBuilder.cpp</a>.</p>
|
|
486
|
+
<div class="fragment"><div class="line"><a name="l00212"></a><span class="lineno"> 212</span> {</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span> </div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <span class="comment">//TODO: filter the non-pointer type // if (!SVFUtil::isa<PointerType>(val->getType())) return;</span></div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span> </div><div class="line"><a name="l00216"></a><span class="lineno"> 216</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#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"collect sym from ##"</span> << <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">SVFUtil::value2String</a>(val) << <span class="stringliteral">" \n"</span>);</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span> </div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="comment">//TODO handle constant expression value here??</span></div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abe39a7a3557899b4991bcc60d436dc50">handleCE</a>(val);</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span> </div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <span class="comment">// create a value sym</span></div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abc8b35d432db78bd5282010c7c800d70">collectVal</a>(val);</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span> </div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="comment">// create an object If it is a heap, stack, global, function.</span></div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#acc9fd07cb66dbdeef696c3c745856094">isObject</a>(val))</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  {</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a891bfea437256d1b7aa957d32797e419">collectObj</a>(val);</div><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> }</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#l00325">SymbolTableBuilder.cpp:325</a></div></div>
|
|
487
|
+
<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#l00262">SymbolTableBuilder.cpp:262</a></div></div>
|
|
460
488
|
<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#l00042">LLVMUtil.cpp:42</a></div></div>
|
|
461
489
|
<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#l00162">SVFBasicTypes.h:162</a></div></div>
|
|
462
490
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aed0b0b9f035057552a6a82154fd88e61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVF::SVFUtil::outs</a></div><div class="ttdeci">std::ostream & 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>
|
|
463
491
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a7486fd8e5350879ed1cbd835c0d4e191"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">SVF::SVFUtil::value2String</a></div><div class="ttdeci">const std::string value2String(const Value *value)</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00391">SVFUtil.cpp:391</a></div></div>
|
|
464
|
-
<div class="ttc" id="
|
|
465
|
-
<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>
|
|
466
|
-
<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#l00323">SymbolTableInfo.cpp:323</a></div></div>
|
|
467
|
-
<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>
|
|
492
|
+
<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#l00234">SymbolTableBuilder.cpp:234</a></div></div>
|
|
468
493
|
<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#l00154">SVFBasicTypes.h:154</a></div></div>
|
|
469
494
|
</div><!-- fragment -->
|
|
470
495
|
</div>
|
|
@@ -487,16 +512,19 @@ Private Attributes</h2></td></tr>
|
|
|
487
512
|
<p>Get value sym, if not available create a new one </p>
|
|
488
513
|
<p>handle global constant expression here </p>
|
|
489
514
|
|
|
490
|
-
<p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#
|
|
491
|
-
<div class="fragment"><div class="line"><a name="
|
|
492
|
-
<div class="ttc" id="
|
|
493
|
-
<div class="ttc" id="
|
|
515
|
+
<p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#l00234">234</a> of file <a class="el" href="SymbolTableBuilder_8cpp_source.html">SymbolTableBuilder.cpp</a>.</p>
|
|
516
|
+
<div class="fragment"><div class="line"><a name="l00235"></a><span class="lineno"> 235</span> {</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <span class="comment">// collect and record special sym here</span></div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a4c1107b2635f374e71e6a3a43834469b">SVFUtil::isNullPtrSym</a>(val) || <a class="code" href="namespaceSVF_1_1SVFUtil.html#ac0df4ee0bf78167dd9461227b5cce7af">SVFUtil::isBlackholeSym</a>(val))</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  {</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a1186ed5d52a12f8495d3b64df78f3052">collectNullPtrBlackholeSyms</a>(val);</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <span class="keywordflow">return</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>  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="l00243"></a><span class="lineno"> 243</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="l00244"></a><span class="lineno"> 244</span>  {</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <span class="comment">// create val sym and sym type</span></div><div class="line"><a name="l00246"></a><span class="lineno"> 246</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="l00247"></a><span class="lineno"> 247</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="l00248"></a><span class="lineno"> 248</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="l00249"></a><span class="lineno"> 249</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">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="l00251"></a><span class="lineno"> 251</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="l00252"></a><span class="lineno"> 252</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a72732ec0392d9d5b900fc12177890779">handleGlobalCE</a>(globalVar);</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  }</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="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a6442fbf0cccd55cf93eab2b656756e9a">SVFUtil::isConstantObjSym</a>(val))</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a891bfea437256d1b7aa957d32797e419">collectObj</a>(val);</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</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="Util_2BasicTypes_8h_source.html#l00076">BasicTypes.h:76</a></div></div>
|
|
517
|
+
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a6442fbf0cccd55cf93eab2b656756e9a"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a6442fbf0cccd55cf93eab2b656756e9a">SVF::SVFUtil::isConstantObjSym</a></div><div class="ttdeci">bool isConstantObjSym(const Value *val)</div><div class="ttdoc">Check whether this value points-to a constant object. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00060">LLVMUtil.cpp:60</a></div></div>
|
|
518
|
+
<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#l00262">SymbolTableBuilder.cpp:262</a></div></div>
|
|
519
|
+
<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#l00404">SymbolTableBuilder.cpp:404</a></div></div>
|
|
494
520
|
<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#l00162">SVFBasicTypes.h:162</a></div></div>
|
|
521
|
+
<div class="ttc" id="classSVF_1_1SymbolTableBuilder_html_a1186ed5d52a12f8495d3b64df78f3052"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#a1186ed5d52a12f8495d3b64df78f3052">SVF::SymbolTableBuilder::collectNullPtrBlackholeSyms</a></div><div class="ttdeci">void collectNullPtrBlackholeSyms(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>
|
|
495
522
|
<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#l00091">SVFBasicTypes.h:91</a></div></div>
|
|
496
523
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aed0b0b9f035057552a6a82154fd88e61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVF::SVFUtil::outs</a></div><div class="ttdeci">std::ostream & 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>
|
|
524
|
+
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a4c1107b2635f374e71e6a3a43834469b"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a4c1107b2635f374e71e6a3a43834469b">SVF::SVFUtil::isNullPtrSym</a></div><div class="ttdeci">bool isNullPtrSym(const Value *val)</div><div class="ttdoc">Check whether this value is a black hole. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00054">LLVMUtil.h:54</a></div></div>
|
|
525
|
+
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_ac0df4ee0bf78167dd9461227b5cce7af"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#ac0df4ee0bf78167dd9461227b5cce7af">SVF::SVFUtil::isBlackholeSym</a></div><div class="ttdeci">bool isBlackholeSym(const Value *val)</div><div class="ttdoc">Check whether this value is a black hole. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00048">LLVMUtil.h:48</a></div></div>
|
|
497
526
|
<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>
|
|
498
527
|
<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>
|
|
499
|
-
<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#l00335">SymbolTableInfo.cpp:335</a></div></div>
|
|
500
528
|
<div class="ttc" id="classSVF_1_1NodeIDAllocator_html_a26b5e09e10448694435f74a8b622a7e8"><div class="ttname"><a href="classSVF_1_1NodeIDAllocator.html#a26b5e09e10448694435f74a8b622a7e8">SVF::NodeIDAllocator::allocateValueId</a></div><div class="ttdeci">NodeID allocateValueId(void)</div><div class="ttdoc">Allocate a value ID as determined by the strategy. </div><div class="ttdef"><b>Definition:</b> <a href="NodeIDAllocator_8cpp_source.html#l00129">NodeIDAllocator.cpp:129</a></div></div>
|
|
501
529
|
<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#l00154">SVFBasicTypes.h:154</a></div></div>
|
|
502
530
|
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a5054f95a7b77257ffb283044aab17b08"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a5054f95a7b77257ffb283044aab17b08">SVF::SymbolTableInfo::valSymMap</a></div><div class="ttdeci">ValueToIDMapTy valSymMap</div><div class="ttdoc">map a value to its sym id </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00084">SymbolTableInfo.h:84</a></div></div>
|
|
@@ -520,8 +548,8 @@ Private Attributes</h2></td></tr>
|
|
|
520
548
|
</div><div class="memdoc">
|
|
521
549
|
<p>Create vararg sym, if not available create a new one </p>
|
|
522
550
|
|
|
523
|
-
<p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#
|
|
524
|
-
<div class="fragment"><div class="line"><a name="
|
|
551
|
+
<p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#l00309">309</a> of file <a class="el" href="SymbolTableBuilder_8cpp_source.html">SymbolTableBuilder.cpp</a>.</p>
|
|
552
|
+
<div class="fragment"><div class="line"><a name="l00310"></a><span class="lineno"> 310</span> {</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</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="l00312"></a><span class="lineno"> 312</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="l00313"></a><span class="lineno"> 313</span>  {</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</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="l00315"></a><span class="lineno"> 315</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="l00316"></a><span class="lineno"> 316</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="l00317"></a><span class="lineno"> 317</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">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="l00318"></a><span class="lineno"> 318</span>  }</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</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#l00162">SVFBasicTypes.h:162</a></div></div>
|
|
525
553
|
<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#l00091">SVFBasicTypes.h:91</a></div></div>
|
|
526
554
|
<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#l00087">SymbolTableInfo.h:87</a></div></div>
|
|
527
555
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aed0b0b9f035057552a6a82154fd88e61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVF::SVFUtil::outs</a></div><div class="ttdeci">std::ostream & 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>
|
|
@@ -550,23 +578,22 @@ Private Attributes</h2></td></tr>
|
|
|
550
578
|
|
|
551
579
|
<p>Create an objectInfo based on LLVM value. </p>
|
|
552
580
|
|
|
553
|
-
<p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#
|
|
554
|
-
<div class="fragment"><div class="line"><a name="
|
|
581
|
+
<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>
|
|
582
|
+
<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>  <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="l00506"></a><span class="lineno"> 506</span> </div><div class="line"><a name="l00507"></a><span class="lineno"> 507</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="l00508"></a><span class="lineno"> 508</span> </div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  <span class="comment">// We consider two types of objects:</span></div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>  <span class="comment">// (1) A heap/static object from a callsite</span></div><div class="line"><a name="l00511"></a><span class="lineno"> 511</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="l00512"></a><span class="lineno"> 512</span>  refTy = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a9232d260dc83d3a25cd98195ba76567a">getRefTypeOfHeapAllocOrStatic</a>(I);</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  <span class="comment">// (2) Other objects (e.g., alloca, global, etc.)</span></div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00515"></a><span class="lineno"> 515</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="l00516"></a><span class="lineno"> 516</span> </div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>  <span class="keywordflow">if</span> (refTy)</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>  <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *objTy = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8e7f56fa15cea924a09cd6903de2606c">getPtrElementType</a>(refTy);</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</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>(objTy, <a class="code" href="classSVF_1_1Options.html#adfc1a5c6098d3867e29fc65ca9ffa1cc">Options::MaxFieldLimit</a>);</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a92ba9c9671e557ba950c14f418079696">initTypeInfo</a>(typeInfo,val);</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>  <span class="keywordflow">return</span> typeInfo;</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">else</span></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>  <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="l00527"></a><span class="lineno"> 527</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">writeWrnMsg</a>(val->getName().str());</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</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="l00529"></a><span class="lineno"> 529</span>  <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a6442fbf0cccd55cf93eab2b656756e9a">SVFUtil::isConstantObjSym</a>(val))</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  {</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</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->getType(), 0);</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a92ba9c9671e557ba950c14f418079696">initTypeInfo</a>(typeInfo,val);</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  <span class="keywordflow">return</span> typeInfo;</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>  }</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>  {</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</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="l00538"></a><span class="lineno"> 538</span>  <a class="code" href="util_8h.html#a23c00958edf66c39625a0d535dee57b7">abort</a>();</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>  }</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> }</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="ttdoc">LLVM Basic classes. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00065">BasicTypes.h:65</a></div></div>
|
|
555
583
|
<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>
|
|
584
|
+
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a6442fbf0cccd55cf93eab2b656756e9a"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a6442fbf0cccd55cf93eab2b656756e9a">SVF::SVFUtil::isConstantObjSym</a></div><div class="ttdeci">bool isConstantObjSym(const Value *val)</div><div class="ttdoc">Check whether this value points-to a constant object. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00060">LLVMUtil.cpp:60</a></div></div>
|
|
556
585
|
<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="Util_2BasicTypes_8h_source.html#l00089">BasicTypes.h:89</a></div></div>
|
|
557
586
|
<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>
|
|
558
587
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a28c0ede7e4765d2a686fc8ae0f5641a4"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">SVF::SVFUtil::getSourceLoc</a></div><div class="ttdeci">std::string getSourceLoc(const Value *val)</div><div class="ttdoc">Return source code including line number and file name from debug information. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00268">SVFUtil.cpp:268</a></div></div>
|
|
559
588
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a077caa1b10ab84d101d79fc7ea50db2d"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">SVF::SVFUtil::writeWrnMsg</a></div><div class="ttdeci">void writeWrnMsg(std::string msg)</div><div class="ttdoc">Writes a message run through wrnMsg. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00068">SVFUtil.cpp:68</a></div></div>
|
|
560
589
|
<div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00073">BasicTypes.h:73</a></div></div>
|
|
561
|
-
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a8e7f56fa15cea924a09cd6903de2606c"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a8e7f56fa15cea924a09cd6903de2606c">SVF::SVFUtil::getPtrElementType</a></div><div class="ttdeci">static Type * getPtrElementType(const PointerType *pty)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#
|
|
562
|
-
<div class="ttc" id="
|
|
563
|
-
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a9232d260dc83d3a25cd98195ba76567a"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a9232d260dc83d3a25cd98195ba76567a">SVF::SVFUtil::getRefTypeOfHeapAllocOrStatic</a></div><div class="ttdeci">const PointerType * getRefTypeOfHeapAllocOrStatic(const CallSite cs)</div><div class="ttdoc">Get the reference type of heap/static object from an allocation site. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00075">LLVMUtil.h:75</a></div></div>
|
|
590
|
+
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a8e7f56fa15cea924a09cd6903de2606c"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a8e7f56fa15cea924a09cd6903de2606c">SVF::SVFUtil::getPtrElementType</a></div><div class="ttdeci">static Type * getPtrElementType(const PointerType *pty)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00073">LLVMUtil.h:73</a></div></div>
|
|
591
|
+
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a9232d260dc83d3a25cd98195ba76567a"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a9232d260dc83d3a25cd98195ba76567a">SVF::SVFUtil::getRefTypeOfHeapAllocOrStatic</a></div><div class="ttdeci">const PointerType * getRefTypeOfHeapAllocOrStatic(const CallSite cs)</div><div class="ttdoc">Get the reference type of heap/static object from an allocation site. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00085">LLVMUtil.h:85</a></div></div>
|
|
564
592
|
<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>
|
|
565
593
|
<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>
|
|
566
594
|
<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#l00209">SVFUtil.h:209</a></div></div>
|
|
567
|
-
<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#
|
|
568
|
-
<div class="ttc" id="
|
|
569
|
-
<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#l00557">SymbolTableInfo.h:557</a></div></div>
|
|
595
|
+
<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#l00628">SymbolTableBuilder.cpp:628</a></div></div>
|
|
596
|
+
<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#l00558">SymbolTableInfo.h:558</a></div></div>
|
|
570
597
|
</div><!-- fragment -->
|
|
571
598
|
</div>
|
|
572
599
|
</div>
|
|
@@ -589,11 +616,11 @@ Private Attributes</h2></td></tr>
|
|
|
589
616
|
<p>Return size of this object based on LLVM value. </p>
|
|
590
617
|
<p>Return size of this Object </p>
|
|
591
618
|
|
|
592
|
-
<p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#
|
|
593
|
-
<div class="fragment"><div class="line"><a name="
|
|
619
|
+
<p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#l00695">695</a> of file <a class="el" href="SymbolTableBuilder_8cpp_source.html">SymbolTableBuilder.cpp</a>.</p>
|
|
620
|
+
<div class="fragment"><div class="line"><a name="l00696"></a><span class="lineno"> 696</span> {</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(ety && <span class="stringliteral">"type is null?"</span>);</div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> numOfFields = 1;</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>  <span class="keywordflow">if</span> (SVFUtil::isa<StructType>(ety) || SVFUtil::isa<ArrayType>(ety))</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>  {</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>  numOfFields = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-><a class="code" href="classSVF_1_1SymbolTableInfo.html#aec579894eed558ea89740b68360187aa">getNumOfFlattenElements</a>(ety);</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>  }</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>  <span class="keywordflow">return</span> numOfFields;</div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span> }</div><div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
|
|
594
621
|
<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#l00084">SVFBasicTypes.h:84</a></div></div>
|
|
595
622
|
<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#l00107">SymbolTableInfo.cpp:107</a></div></div>
|
|
596
|
-
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_aec579894eed558ea89740b68360187aa"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#aec579894eed558ea89740b68360187aa">SVF::SymbolTableInfo::getNumOfFlattenElements</a></div><div class="ttdeci">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#
|
|
623
|
+
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_aec579894eed558ea89740b68360187aa"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#aec579894eed558ea89740b68360187aa">SVF::SymbolTableInfo::getNumOfFlattenElements</a></div><div class="ttdeci">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#l00365">SymbolTableInfo.cpp:365</a></div></div>
|
|
597
624
|
</div><!-- fragment -->
|
|
598
625
|
</div>
|
|
599
626
|
</div>
|
|
@@ -614,24 +641,24 @@ Private Attributes</h2></td></tr>
|
|
|
614
641
|
</div><div class="memdoc">
|
|
615
642
|
<p>Handle constant expression </p>
|
|
616
643
|
|
|
617
|
-
<p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#
|
|
618
|
-
<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="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">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#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"handle constant expression "</span> << <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">SVFUtil::value2String</a>(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="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">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#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"handle constant expression "</span> << <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">SVFUtil::value2String</a>(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="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">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#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"handle constant expression "</span> << <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">SVFUtil::value2String</a>(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="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">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>  {</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abc8b35d432db78bd5282010c7c800d70">collectVal</a>(int2Ptrce);</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  }</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a> *ptr2Intce = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a093b7ae4ad144fb5d028366b1814861a">isPtr2IntConstantExpr</a>(ref))</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  {</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abc8b35d432db78bd5282010c7c800d70">collectVal</a>(ptr2Intce);</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</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="l00359"></a><span class="lineno"> 359</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abe39a7a3557899b4991bcc60d436dc50">handleCE</a>(opnd);</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  }</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#a1373688c6faba4dcdb640106575ea433">isTruncConstantExpr</a>(ref) || <a class="code" href="namespaceSVF_1_1SVFUtil.html#a4adb63c87a9489ab905d42230ac66299">isCmpConstantExpr</a>(ref))</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</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>  }</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</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="l00366"></a><span class="lineno"> 366</span>  {</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abc8b35d432db78bd5282010c7c800d70">collectVal</a>(ref);</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  }</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  <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="l00370"></a><span class="lineno"> 370</span>  {</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  <span class="comment">// we don't handle unary constant expression like fneg(x) now</span></div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abc8b35d432db78bd5282010c7c800d70">collectVal</a>(ref);</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  }</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<ConstantAggregate>(ref))</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  {</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  <span class="comment">// we don't handle constant agrgregate like constant vectors</span></div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abc8b35d432db78bd5282010c7c800d70">collectVal</a>(ref);</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  }</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  {</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  <span class="keywordflow">if</span> (SVFUtil::isa<ConstantExpr>(val))</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</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="l00383"></a><span class="lineno"> 383</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abc8b35d432db78bd5282010c7c800d70">collectVal</a>(ref);</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  }</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  }</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</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>
|
|
619
|
-
<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#
|
|
620
|
-
<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#
|
|
644
|
+
<p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#l00325">325</a> of file <a class="el" href="SymbolTableBuilder_8cpp_source.html">SymbolTableBuilder.cpp</a>.</p>
|
|
645
|
+
<div class="fragment"><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>  <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="l00328"></a><span class="lineno"> 328</span>  {</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a>* ce = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a384b0986a6c4e99dfc4e1629b3598c3c">isGepConstantExpr</a>(ref))</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  {</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</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="l00332"></a><span class="lineno"> 332</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"handle constant expression "</span> << <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">SVFUtil::value2String</a>(ref) << <span class="stringliteral">"\n"</span>);</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abc8b35d432db78bd5282010c7c800d70">collectVal</a>(ce);</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abc8b35d432db78bd5282010c7c800d70">collectVal</a>(ce->getOperand(0));</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  <span class="comment">// handle the recursive constant express case</span></div><div class="line"><a name="l00336"></a><span class="lineno"> 336</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="l00337"></a><span class="lineno"> 337</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abe39a7a3557899b4991bcc60d436dc50">handleCE</a>(ce->getOperand(0));</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  }</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a>* ce = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7e404bcc6613ba10a56c4fbdc842c5a8">isCastConstantExpr</a>(ref))</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  {</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</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="l00342"></a><span class="lineno"> 342</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"handle constant expression "</span> << <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">SVFUtil::value2String</a>(ref) << <span class="stringliteral">"\n"</span>);</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);</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abc8b35d432db78bd5282010c7c800d70">collectVal</a>(ce->getOperand(0));</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  <span class="comment">// handle the recursive constant express case</span></div><div class="line"><a name="l00346"></a><span class="lineno"> 346</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="l00347"></a><span class="lineno"> 347</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abe39a7a3557899b4991bcc60d436dc50">handleCE</a>(ce->getOperand(0));</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="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a>* ce = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a07d991d5bfccce9ebdef0cbb6f4bf739">isSelectConstantExpr</a>(ref))</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  {</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</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="l00352"></a><span class="lineno"> 352</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"handle constant expression "</span> << <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">SVFUtil::value2String</a>(ref) << <span class="stringliteral">"\n"</span>);</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abc8b35d432db78bd5282010c7c800d70">collectVal</a>(ce);</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abc8b35d432db78bd5282010c7c800d70">collectVal</a>(ce->getOperand(0));</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abc8b35d432db78bd5282010c7c800d70">collectVal</a>(ce->getOperand(1));</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abc8b35d432db78bd5282010c7c800d70">collectVal</a>(ce->getOperand(2));</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  <span class="comment">// handle the recursive constant express case</span></div><div class="line"><a name="l00358"></a><span class="lineno"> 358</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="l00359"></a><span class="lineno"> 359</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abe39a7a3557899b4991bcc60d436dc50">handleCE</a>(ce->getOperand(0));</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abe39a7a3557899b4991bcc60d436dc50">handleCE</a>(ce->getOperand(1));</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abe39a7a3557899b4991bcc60d436dc50">handleCE</a>(ce->getOperand(2));</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  }</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  <span class="comment">// if we meet a int2ptr, then it points-to black hole</span></div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a> *int2Ptrce = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a6bc4376ada53ddfbf8df2ca817153555">isInt2PtrConstantExpr</a>(ref))</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  {</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abc8b35d432db78bd5282010c7c800d70">collectVal</a>(int2Ptrce);</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  }</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a> *ptr2Intce = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a093b7ae4ad144fb5d028366b1814861a">isPtr2IntConstantExpr</a>(ref))</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</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>(ptr2Intce);</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</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="l00372"></a><span class="lineno"> 372</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abe39a7a3557899b4991bcc60d436dc50">handleCE</a>(opnd);</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  }</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</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="l00375"></a><span class="lineno"> 375</span>  {</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abc8b35d432db78bd5282010c7c800d70">collectVal</a>(ref);</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  }</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</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="l00379"></a><span class="lineno"> 379</span>  {</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abc8b35d432db78bd5282010c7c800d70">collectVal</a>(ref);</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="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="l00383"></a><span class="lineno"> 383</span>  {</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  <span class="comment">// we don't handle unary constant expression like fneg(x) now</span></div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abc8b35d432db78bd5282010c7c800d70">collectVal</a>(ref);</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  }</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<ConstantAggregate>(ref))</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  {</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  <span class="comment">// we don't handle constant agrgregate like constant vectors</span></div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abc8b35d432db78bd5282010c7c800d70">collectVal</a>(ref);</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">else</span></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="keywordflow">if</span> (SVFUtil::isa<ConstantExpr>(val))</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</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="l00396"></a><span class="lineno"> 396</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abc8b35d432db78bd5282010c7c800d70">collectVal</a>(ref);</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>  }</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</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#l00325">SymbolTableBuilder.cpp:325</a></div></div>
|
|
646
|
+
<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#l00235">LLVMUtil.h:235</a></div></div>
|
|
647
|
+
<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#l00269">LLVMUtil.h:269</a></div></div>
|
|
621
648
|
<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>
|
|
622
|
-
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a6bc4376ada53ddfbf8df2ca817153555"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a6bc4376ada53ddfbf8df2ca817153555">SVF::SVFUtil::isInt2PtrConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isInt2PtrConstantExpr(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#
|
|
623
|
-
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a4adb63c87a9489ab905d42230ac66299"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a4adb63c87a9489ab905d42230ac66299">SVF::SVFUtil::isCmpConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isCmpConstantExpr(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#
|
|
624
|
-
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a384b0986a6c4e99dfc4e1629b3598c3c"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a384b0986a6c4e99dfc4e1629b3598c3c">SVF::SVFUtil::isGepConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isGepConstantExpr(const Value *val)</div><div class="ttdoc">Return corresponding constant expression, otherwise return nullptr. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#
|
|
649
|
+
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a6bc4376ada53ddfbf8df2ca817153555"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a6bc4376ada53ddfbf8df2ca817153555">SVF::SVFUtil::isInt2PtrConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isInt2PtrConstantExpr(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00195">LLVMUtil.h:195</a></div></div>
|
|
650
|
+
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a4adb63c87a9489ab905d42230ac66299"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a4adb63c87a9489ab905d42230ac66299">SVF::SVFUtil::isCmpConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isCmpConstantExpr(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00249">LLVMUtil.h:249</a></div></div>
|
|
651
|
+
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a384b0986a6c4e99dfc4e1629b3598c3c"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a384b0986a6c4e99dfc4e1629b3598c3c">SVF::SVFUtil::isGepConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isGepConstantExpr(const Value *val)</div><div class="ttdoc">Return corresponding constant expression, otherwise return nullptr. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00185">LLVMUtil.h:185</a></div></div>
|
|
625
652
|
<div class="ttc" id="SVF-FE_2BasicTypes_8h_html_a60115de303225d173fb935cf7619a2cb"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a></div><div class="ttdeci">llvm::ConstantExpr ConstantExpr</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00057">BasicTypes.h:57</a></div></div>
|
|
626
653
|
<div class="ttc" id="SVFBasicTypes_8h_html_aaff570bb354b8519a4852ffda413af7c"><div class="ttname"><a href="SVFBasicTypes_8h.html#aaff570bb354b8519a4852ffda413af7c">DMemModelCE</a></div><div class="ttdeci">#define DMemModelCE</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00163">SVFBasicTypes.h:163</a></div></div>
|
|
627
654
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aed0b0b9f035057552a6a82154fd88e61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVF::SVFUtil::outs</a></div><div class="ttdeci">std::ostream & 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>
|
|
628
655
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a7486fd8e5350879ed1cbd835c0d4e191"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">SVF::SVFUtil::value2String</a></div><div class="ttdeci">const std::string value2String(const Value *value)</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00391">SVFUtil.cpp:391</a></div></div>
|
|
629
|
-
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a093b7ae4ad144fb5d028366b1814861a"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a093b7ae4ad144fb5d028366b1814861a">SVF::SVFUtil::isPtr2IntConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isPtr2IntConstantExpr(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#
|
|
656
|
+
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a093b7ae4ad144fb5d028366b1814861a"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a093b7ae4ad144fb5d028366b1814861a">SVF::SVFUtil::isPtr2IntConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isPtr2IntConstantExpr(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00205">LLVMUtil.h:205</a></div></div>
|
|
630
657
|
<div class="ttc" id="namespaceSVF_html_a7e230c0cba2e3a7c2e5a5f2ee7d88af9"><div class="ttname"><a href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">SVF::Constant</a></div><div class="ttdeci">llvm::Constant Constant</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00094">BasicTypes.h:94</a></div></div>
|
|
631
|
-
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a07d991d5bfccce9ebdef0cbb6f4bf739"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a07d991d5bfccce9ebdef0cbb6f4bf739">SVF::SVFUtil::isSelectConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isSelectConstantExpr(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#
|
|
632
|
-
<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#
|
|
633
|
-
<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#
|
|
634
|
-
<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#
|
|
658
|
+
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a07d991d5bfccce9ebdef0cbb6f4bf739"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a07d991d5bfccce9ebdef0cbb6f4bf739">SVF::SVFUtil::isSelectConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isSelectConstantExpr(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00225">LLVMUtil.h:225</a></div></div>
|
|
659
|
+
<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#l00215">LLVMUtil.h:215</a></div></div>
|
|
660
|
+
<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#l00259">LLVMUtil.h:259</a></div></div>
|
|
661
|
+
<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#l00234">SymbolTableBuilder.cpp:234</a></div></div>
|
|
635
662
|
<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#l00154">SVFBasicTypes.h:154</a></div></div>
|
|
636
663
|
</div><!-- fragment -->
|
|
637
664
|
</div>
|
|
@@ -655,12 +682,12 @@ Private Attributes</h2></td></tr>
|
|
|
655
682
|
<p>Handle constant expression. </p>
|
|
656
683
|
<p>Handle global constant expression </p>
|
|
657
684
|
|
|
658
|
-
<p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#
|
|
659
|
-
<div class="fragment"><div class="line"><a name="
|
|
685
|
+
<p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#l00404">404</a> of file <a class="el" href="SymbolTableBuilder_8cpp_source.html">SymbolTableBuilder.cpp</a>.</p>
|
|
686
|
+
<div class="fragment"><div class="line"><a name="l00405"></a><span class="lineno"> 405</span> {</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(G);</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>  <span class="comment">//The type this global points to</span></div><div class="line"><a name="l00409"></a><span class="lineno"> 409</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="l00410"></a><span class="lineno"> 410</span>  <span class="keywordtype">bool</span> is_array = 0;</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  <span class="comment">//An array is considered a single variable of its type.</span></div><div class="line"><a name="l00412"></a><span class="lineno"> 412</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="l00413"></a><span class="lineno"> 413</span>  {</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  T = AT->getElementType();</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  is_array = 1;</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="line"><a name="l00418"></a><span class="lineno"> 418</span>  <span class="keywordflow">if</span> (SVFUtil::isa<StructType>(T))</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  {</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  <span class="comment">//A struct may be used in constant GEP expr.</span></div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  <span class="keywordflow">for</span> (Value::const_user_iterator it = G->user_begin(), ie = G->user_end();</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  it != ie; ++it)</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  {</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abe39a7a3557899b4991bcc60d436dc50">handleCE</a>(*it);</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>  }</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  {</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  <span class="keywordflow">if</span> (is_array)</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  {</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  <span class="keywordflow">for</span> (Value::const_user_iterator it = G->user_begin(), ie =</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  G->user_end(); it != ie; ++it)</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#abe39a7a3557899b4991bcc60d436dc50">handleCE</a>(*it);</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>  }</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">if</span> (G->hasInitializer())</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#a1efd9406182eb86b1ee4829c931b566d">handleGlobalInitializerCE</a>(G->getInitializer());</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="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#l00325">SymbolTableBuilder.cpp:325</a></div></div>
|
|
660
687
|
<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="ttdoc">LLVM Basic classes. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00065">BasicTypes.h:65</a></div></div>
|
|
661
688
|
<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>
|
|
662
689
|
<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="Util_2BasicTypes_8h_source.html#l00088">BasicTypes.h:88</a></div></div>
|
|
663
|
-
<div class="ttc" id="classSVF_1_1SymbolTableBuilder_html_a1efd9406182eb86b1ee4829c931b566d"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#a1efd9406182eb86b1ee4829c931b566d">SVF::SymbolTableBuilder::handleGlobalInitializerCE</a></div><div class="ttdeci">void handleGlobalInitializerCE(const Constant *C)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#
|
|
690
|
+
<div class="ttc" id="classSVF_1_1SymbolTableBuilder_html_a1efd9406182eb86b1ee4829c931b566d"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#a1efd9406182eb86b1ee4829c931b566d">SVF::SymbolTableBuilder::handleGlobalInitializerCE</a></div><div class="ttdeci">void handleGlobalInitializerCE(const Constant *C)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00448">SymbolTableBuilder.cpp:448</a></div></div>
|
|
664
691
|
</div><!-- fragment -->
|
|
665
692
|
</div>
|
|
666
693
|
</div>
|
|
@@ -681,8 +708,8 @@ Private Attributes</h2></td></tr>
|
|
|
681
708
|
</div><div class="memdoc">
|
|
682
709
|
<p>Handle global variable initialization </p>
|
|
683
710
|
|
|
684
|
-
<p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#
|
|
685
|
-
<div class="fragment"><div class="line"><a name="
|
|
711
|
+
<p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#l00448">448</a> of file <a class="el" href="SymbolTableBuilder_8cpp_source.html">SymbolTableBuilder.cpp</a>.</p>
|
|
712
|
+
<div class="fragment"><div class="line"><a name="l00449"></a><span class="lineno"> 449</span> {</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>  <span class="keywordflow">if</span> (C->getType()->isSingleValueType())</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  {</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a> *E = SVFUtil::dyn_cast<ConstantExpr>(C))</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>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abe39a7a3557899b4991bcc60d436dc50">handleCE</a>(E);</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  }</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  {</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abc8b35d432db78bd5282010c7c800d70">collectVal</a>(C);</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  }</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  }</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<ConstantArray>(C))</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  {</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</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="l00465"></a><span class="lineno"> 465</span>  {</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a1efd9406182eb86b1ee4829c931b566d">handleGlobalInitializerCE</a>(SVFUtil::cast<Constant>(C->getOperand(i)));</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  }</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  }</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<ConstantStruct>(C))</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  {</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  <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="l00472"></a><span class="lineno"> 472</span>  {</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a1efd9406182eb86b1ee4829c931b566d">handleGlobalInitializerCE</a>(SVFUtil::cast<Constant>(C->getOperand(i)));</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>  }</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#aca8fd472027d8636b36713a7494c88d6">ConstantData</a>* data = SVFUtil::dyn_cast<ConstantData>(C))</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  {</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1Options.html#a5c051cf6a93a87a07aa1d31e302a2877">Options::ModelConsts</a>)</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  {</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#a66b2dbc1be121511c3b5b264f94558d3">ConstantDataSequential</a>* seq = SVFUtil::dyn_cast<ConstantDataSequential>(data))</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">for</span>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i < seq->getNumElements(); i++)</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>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">Constant</a>* ct = seq->getElementAsConstant(i);</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a1efd9406182eb86b1ee4829c931b566d">handleGlobalInitializerCE</a>(ct);</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  }</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  }</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  {</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(SVFUtil::isa<ConstantAggregateZero>(data) && <span class="stringliteral">"Single value type data should have been handled!"</span>);</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>  }</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>  }</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  <span class="keywordflow">else</span></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>  <span class="comment">//TODO:assert(SVFUtil::isa<ConstantVector>(C),"what else do we have");</span></div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>  }</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</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#l00325">SymbolTableBuilder.cpp:325</a></div></div>
|
|
686
713
|
<div class="ttc" id="classSVF_1_1Options_html_a5c051cf6a93a87a07aa1d31e302a2877"><div class="ttname"><a href="classSVF_1_1Options.html#a5c051cf6a93a87a07aa1d31e302a2877">SVF::Options::ModelConsts</a></div><div class="ttdeci">static const llvm::cl::opt< bool > ModelConsts</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00216">Options.h:216</a></div></div>
|
|
687
714
|
<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>
|
|
688
715
|
<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#l00084">SVFBasicTypes.h:84</a></div></div>
|
|
@@ -690,8 +717,8 @@ Private Attributes</h2></td></tr>
|
|
|
690
717
|
<div class="ttc" id="SVF-FE_2BasicTypes_8h_html_a66b2dbc1be121511c3b5b264f94558d3"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#a66b2dbc1be121511c3b5b264f94558d3">ConstantDataSequential</a></div><div class="ttdeci">llvm::ConstantDataSequential ConstantDataSequential</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00056">BasicTypes.h:56</a></div></div>
|
|
691
718
|
<div class="ttc" id="namespaceSVF_html_a7e230c0cba2e3a7c2e5a5f2ee7d88af9"><div class="ttname"><a href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">SVF::Constant</a></div><div class="ttdeci">llvm::Constant Constant</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00094">BasicTypes.h:94</a></div></div>
|
|
692
719
|
<div class="ttc" id="SVF-FE_2BasicTypes_8h_html_aca8fd472027d8636b36713a7494c88d6"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#aca8fd472027d8636b36713a7494c88d6">ConstantData</a></div><div class="ttdeci">llvm::ConstantData ConstantData</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00059">BasicTypes.h:59</a></div></div>
|
|
693
|
-
<div class="ttc" id="classSVF_1_1SymbolTableBuilder_html_a1efd9406182eb86b1ee4829c931b566d"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#a1efd9406182eb86b1ee4829c931b566d">SVF::SymbolTableBuilder::handleGlobalInitializerCE</a></div><div class="ttdeci">void handleGlobalInitializerCE(const Constant *C)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#
|
|
694
|
-
<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#
|
|
720
|
+
<div class="ttc" id="classSVF_1_1SymbolTableBuilder_html_a1efd9406182eb86b1ee4829c931b566d"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#a1efd9406182eb86b1ee4829c931b566d">SVF::SymbolTableBuilder::handleGlobalInitializerCE</a></div><div class="ttdeci">void handleGlobalInitializerCE(const Constant *C)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00448">SymbolTableBuilder.cpp:448</a></div></div>
|
|
721
|
+
<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#l00234">SymbolTableBuilder.cpp:234</a></div></div>
|
|
695
722
|
</div><!-- fragment -->
|
|
696
723
|
</div>
|
|
697
724
|
</div>
|
|
@@ -725,31 +752,32 @@ Private Attributes</h2></td></tr>
|
|
|
725
752
|
<p>Initialize the type info of an object </p>
|
|
726
753
|
<p>This is for <code>alloca <ty> <NumElements></code>. For example, <code>alloca i64 3</code> allocates 3 i64 on the stack (objSize=3) In most cases, <code>NumElements</code> is not specified in the instruction, which means there is only one element (objSize=1). </p>
|
|
727
754
|
|
|
728
|
-
<p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#
|
|
729
|
-
<div class="fragment"><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> </div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> objSize = 1;</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>  <span class="comment">// Global variable</span></div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>  <span class="keywordflow">if</span> (SVFUtil::isa<Function>(val))</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>  {</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</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="l00623"></a><span class="lineno"> 623</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#af5c882c10cd46c669c5aededbdb510d8">analyzeObjType</a>(typeinfo,val);</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>  objSize = <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abcc05a5ffa5fcddb7220e1c691d3ed87">getObjSize</a>(typeinfo-><a class="code" href="classSVF_1_1ObjTypeInfo.html#a706cdc47e78732853252d5a4af85653a">getType</a>());</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>  }</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#a5e06fe1b4b25113ac322dbeda71055dc">AllocaInst</a>* allocaInst = SVFUtil::dyn_cast<AllocaInst>(val))</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>  {</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</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="l00629"></a><span class="lineno"> 629</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#af5c882c10cd46c669c5aededbdb510d8">analyzeObjType</a>(typeinfo,val);</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a> *sz = SVFUtil::dyn_cast<ConstantInt>(allocaInst->getArraySize()))</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>  objSize = sz->getZExtValue() * <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abcc05a5ffa5fcddb7220e1c691d3ed87">getObjSize</a>(typeinfo-><a class="code" href="classSVF_1_1ObjTypeInfo.html#a706cdc47e78732853252d5a4af85653a">getType</a>());</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>  objSize = <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abcc05a5ffa5fcddb7220e1c691d3ed87">getObjSize</a>(typeinfo-><a class="code" href="classSVF_1_1ObjTypeInfo.html#a706cdc47e78732853252d5a4af85653a">getType</a>());</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>  }</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa<GlobalVariable>(val))</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>  {</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</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="l00640"></a><span class="lineno"> 640</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="l00641"></a><span class="lineno"> 641</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="l00642"></a><span class="lineno"> 642</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#af5c882c10cd46c669c5aededbdb510d8">analyzeObjType</a>(typeinfo,val);</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>  objSize = <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abcc05a5ffa5fcddb7220e1c691d3ed87">getObjSize</a>(typeinfo-><a class="code" href="classSVF_1_1ObjTypeInfo.html#a706cdc47e78732853252d5a4af85653a">getType</a>());</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>  }</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</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="l00646"></a><span class="lineno"> 646</span>  {</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a9fca576448cc1cb38c894a7ae3d9ec56">analyzeHeapObjType</a>(typeinfo,val);</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>  <span class="comment">// Heap object, label its field as infinite here</span></div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>  objSize = typeinfo-><a class="code" href="classSVF_1_1ObjTypeInfo.html#a81bc3d785062c7e527ecf8e564cd52a4">getMaxFieldOffsetLimit</a>();</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>  }</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</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="l00652"></a><span class="lineno"> 652</span>  {</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#afe2806a0aef240ab313975decfe362f7">analyzeStaticObjType</a>(typeinfo,val);</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>  <span class="comment">// static object allocated before main, label its field as infinite here</span></div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>  objSize = typeinfo-><a class="code" href="classSVF_1_1ObjTypeInfo.html#a81bc3d785062c7e527ecf8e564cd52a4">getMaxFieldOffsetLimit</a>();</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>  }</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</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="l00658"></a><span class="lineno"> 658</span>  {</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#afe2806a0aef240ab313975decfe362f7">analyzeStaticObjType</a>(typeinfo,val);</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>  <span class="comment">// user input data, label its field as infinite here</span></div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>  objSize = typeinfo-><a class="code" href="classSVF_1_1ObjTypeInfo.html#a81bc3d785062c7e527ecf8e564cd52a4">getMaxFieldOffsetLimit</a>();</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>  }</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>  <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="l00664"></a><span class="lineno"> 664</span>  {</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</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="l00666"></a><span class="lineno"> 666</span>  objSize = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-><a class="code" href="classSVF_1_1SymbolTableInfo.html#aec579894eed558ea89740b68360187aa">getNumOfFlattenElements</a>(val->getType());</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>  }</div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>  {</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>  <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="l00671"></a><span class="lineno"> 671</span>  <a class="code" href="util_8h.html#a23c00958edf66c39625a0d535dee57b7">abort</a>();</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>  }</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span> </div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>  <span class="comment">// Reset maxOffsetLimit if it is over the total fieldNum of this object</span></div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>  <span class="keywordflow">if</span>(typeinfo-><a class="code" href="classSVF_1_1ObjTypeInfo.html#a81bc3d785062c7e527ecf8e564cd52a4">getMaxFieldOffsetLimit</a>() > objSize)</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>  typeinfo-><a class="code" href="classSVF_1_1ObjTypeInfo.html#aff17d13e520a731accedd06350af6221">setNumOfElements</a>(objSize);</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span> }</div><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#l00573">SymbolTableInfo.h:573</a></div></div>
|
|
730
|
-
<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#
|
|
755
|
+
<p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#l00628">628</a> of file <a class="el" href="SymbolTableBuilder_8cpp_source.html">SymbolTableBuilder.cpp</a>.</p>
|
|
756
|
+
<div class="fragment"><div class="line"><a name="l00629"></a><span class="lineno"> 629</span> {</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span> </div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> objSize = 1;</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>  <span class="comment">// Global variable</span></div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>  <span class="keywordflow">if</span> (SVFUtil::isa<Function>(val))</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>  {</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</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="l00636"></a><span class="lineno"> 636</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#af5c882c10cd46c669c5aededbdb510d8">analyzeObjType</a>(typeinfo,val);</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>  objSize = <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abcc05a5ffa5fcddb7220e1c691d3ed87">getObjSize</a>(typeinfo-><a class="code" href="classSVF_1_1ObjTypeInfo.html#a706cdc47e78732853252d5a4af85653a">getType</a>());</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>  }</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#a5e06fe1b4b25113ac322dbeda71055dc">AllocaInst</a>* allocaInst = SVFUtil::dyn_cast<AllocaInst>(val))</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>  {</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</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="l00642"></a><span class="lineno"> 642</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#af5c882c10cd46c669c5aededbdb510d8">analyzeObjType</a>(typeinfo,val);</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a> *sz = SVFUtil::dyn_cast<ConstantInt>(allocaInst->getArraySize()))</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>  objSize = sz->getZExtValue() * <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abcc05a5ffa5fcddb7220e1c691d3ed87">getObjSize</a>(typeinfo-><a class="code" href="classSVF_1_1ObjTypeInfo.html#a706cdc47e78732853252d5a4af85653a">getType</a>());</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>  objSize = <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abcc05a5ffa5fcddb7220e1c691d3ed87">getObjSize</a>(typeinfo-><a class="code" href="classSVF_1_1ObjTypeInfo.html#a706cdc47e78732853252d5a4af85653a">getType</a>());</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>  }</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa<GlobalVariable>(val))</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>  {</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</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="l00653"></a><span class="lineno"> 653</span>  <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a6442fbf0cccd55cf93eab2b656756e9a">SVFUtil::isConstantObjSym</a>(val))</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</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="l00655"></a><span class="lineno"> 655</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#af5c882c10cd46c669c5aededbdb510d8">analyzeObjType</a>(typeinfo,val);</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>  objSize = <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abcc05a5ffa5fcddb7220e1c691d3ed87">getObjSize</a>(typeinfo-><a class="code" href="classSVF_1_1ObjTypeInfo.html#a706cdc47e78732853252d5a4af85653a">getType</a>());</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>  }</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</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="l00659"></a><span class="lineno"> 659</span>  {</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a9fca576448cc1cb38c894a7ae3d9ec56">analyzeHeapObjType</a>(typeinfo,val);</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>  <span class="comment">// Heap object, label its field as infinite here</span></div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>  objSize = typeinfo-><a class="code" href="classSVF_1_1ObjTypeInfo.html#a81bc3d785062c7e527ecf8e564cd52a4">getMaxFieldOffsetLimit</a>();</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>  }</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</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="l00665"></a><span class="lineno"> 665</span>  {</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#afe2806a0aef240ab313975decfe362f7">analyzeStaticObjType</a>(typeinfo,val);</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>  <span class="comment">// static object allocated before main, label its field as infinite here</span></div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>  objSize = typeinfo-><a class="code" href="classSVF_1_1ObjTypeInfo.html#a81bc3d785062c7e527ecf8e564cd52a4">getMaxFieldOffsetLimit</a>();</div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>  }</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>  <span class="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="l00671"></a><span class="lineno"> 671</span>  {</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#afe2806a0aef240ab313975decfe362f7">analyzeStaticObjType</a>(typeinfo,val);</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>  <span class="comment">// user input data, label its field as infinite here</span></div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>  objSize = typeinfo-><a class="code" href="classSVF_1_1ObjTypeInfo.html#a81bc3d785062c7e527ecf8e564cd52a4">getMaxFieldOffsetLimit</a>();</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>  }</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</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="l00677"></a><span class="lineno"> 677</span>  {</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</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="l00679"></a><span class="lineno"> 679</span>  objSize = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-><a class="code" href="classSVF_1_1SymbolTableInfo.html#aec579894eed558ea89740b68360187aa">getNumOfFlattenElements</a>(val->getType());</div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>  }</div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>  {</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</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="l00684"></a><span class="lineno"> 684</span>  <a class="code" href="util_8h.html#a23c00958edf66c39625a0d535dee57b7">abort</a>();</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>  }</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span> </div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>  <span class="comment">// Reset maxOffsetLimit if it is over the total fieldNum of this object</span></div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>  <span class="keywordflow">if</span>(typeinfo-><a class="code" href="classSVF_1_1ObjTypeInfo.html#a81bc3d785062c7e527ecf8e564cd52a4">getMaxFieldOffsetLimit</a>() > objSize)</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>  typeinfo-><a class="code" href="classSVF_1_1ObjTypeInfo.html#aff17d13e520a731accedd06350af6221">setNumOfElements</a>(objSize);</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span> }</div><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#l00574">SymbolTableInfo.h:574</a></div></div>
|
|
757
|
+
<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#l00132">LLVMUtil.h:132</a></div></div>
|
|
731
758
|
<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>
|
|
759
|
+
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a6442fbf0cccd55cf93eab2b656756e9a"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a6442fbf0cccd55cf93eab2b656756e9a">SVF::SVFUtil::isConstantObjSym</a></div><div class="ttdeci">bool isConstantObjSym(const Value *val)</div><div class="ttdoc">Check whether this value points-to a constant object. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00060">LLVMUtil.cpp:60</a></div></div>
|
|
732
760
|
<div class="ttc" id="SVF-FE_2BasicTypes_8h_html_a5e06fe1b4b25113ac322dbeda71055dc"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#a5e06fe1b4b25113ac322dbeda71055dc">AllocaInst</a></div><div class="ttdeci">llvm::AllocaInst AllocaInst</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00063">BasicTypes.h:63</a></div></div>
|
|
733
761
|
<div class="ttc" id="namespaceSVF_html_adefcb50414ea999d70cea5ccdbcb98d7"><div class="ttname"><a href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">SVF::ConstantInt</a></div><div class="ttdeci">llvm::ConstantInt ConstantInt</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00095">BasicTypes.h:95</a></div></div>
|
|
734
762
|
<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#l00084">SVFBasicTypes.h:84</a></div></div>
|
|
735
|
-
<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#
|
|
736
|
-
<div class="ttc" id="classSVF_1_1SymbolTableBuilder_html_af5c882c10cd46c669c5aededbdb510d8"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#af5c882c10cd46c669c5aededbdb510d8">SVF::SymbolTableBuilder::analyzeObjType</a></div><div class="ttdeci">void analyzeObjType(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#
|
|
737
|
-
<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#
|
|
738
|
-
<div class="ttc" id="classSVF_1_1ObjTypeInfo_html_a706cdc47e78732853252d5a4af85653a"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a706cdc47e78732853252d5a4af85653a">SVF::ObjTypeInfo::getType</a></div><div class="ttdeci">const Type * getType() const</div><div class="ttdoc">Get LLVM type. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#
|
|
739
|
-
<div class="ttc" id="classSVF_1_1ObjTypeInfo_html_a91b41b7ade5871362b77a2ef566b2830ad2ba0edfac1460f3fd89e7a6c4c4691b"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830ad2ba0edfac1460f3fd89e7a6c4c4691b">SVF::ObjTypeInfo::GLOBVAR_OBJ</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#
|
|
763
|
+
<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#l00608">SymbolTableInfo.h:608</a></div></div>
|
|
764
|
+
<div class="ttc" id="classSVF_1_1SymbolTableBuilder_html_af5c882c10cd46c669c5aededbdb510d8"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#af5c882c10cd46c669c5aededbdb510d8">SVF::SymbolTableBuilder::analyzeObjType</a></div><div class="ttdeci">void analyzeObjType(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#l00546">SymbolTableBuilder.cpp:546</a></div></div>
|
|
765
|
+
<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#l00634">SymbolTableInfo.h:634</a></div></div>
|
|
766
|
+
<div class="ttc" id="classSVF_1_1ObjTypeInfo_html_a706cdc47e78732853252d5a4af85653a"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a706cdc47e78732853252d5a4af85653a">SVF::ObjTypeInfo::getType</a></div><div class="ttdeci">const Type * getType() const</div><div class="ttdoc">Get LLVM type. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00602">SymbolTableInfo.h:602</a></div></div>
|
|
767
|
+
<div class="ttc" id="classSVF_1_1ObjTypeInfo_html_a91b41b7ade5871362b77a2ef566b2830ad2ba0edfac1460f3fd89e7a6c4c4691b"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830ad2ba0edfac1460f3fd89e7a6c4c4691b">SVF::ObjTypeInfo::GLOBVAR_OBJ</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00565">SymbolTableInfo.h:565</a></div></div>
|
|
740
768
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_ae62938f722543d6d7fc201b685be1abf"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#ae62938f722543d6d7fc201b685be1abf">SVF::SVFUtil::isStaticExtCall</a></div><div class="ttdeci">bool isStaticExtCall(const CallSite cs)</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00571">SVFUtil.h:571</a></div></div>
|
|
741
769
|
<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#l00107">SymbolTableInfo.cpp:107</a></div></div>
|
|
742
|
-
<div class="ttc" id="classSVF_1_1SymbolTableBuilder_html_abcc05a5ffa5fcddb7220e1c691d3ed87"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#abcc05a5ffa5fcddb7220e1c691d3ed87">SVF::SymbolTableBuilder::getObjSize</a></div><div class="ttdeci">u32_t getObjSize(const Type *type)</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#
|
|
770
|
+
<div class="ttc" id="classSVF_1_1SymbolTableBuilder_html_abcc05a5ffa5fcddb7220e1c691d3ed87"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#abcc05a5ffa5fcddb7220e1c691d3ed87">SVF::SymbolTableBuilder::getObjSize</a></div><div class="ttdeci">u32_t getObjSize(const Type *type)</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#l00695">SymbolTableBuilder.cpp:695</a></div></div>
|
|
743
771
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a93ac673b885633849fa484938405ca75"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a93ac673b885633849fa484938405ca75">SVF::SVFUtil::isHeapAllocExtCall</a></div><div class="ttdeci">bool isHeapAllocExtCall(const CallSite cs)</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00525">SVFUtil.h:525</a></div></div>
|
|
744
|
-
<div class="ttc" id="classSVF_1_1SymbolTableBuilder_html_afe2806a0aef240ab313975decfe362f7"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#afe2806a0aef240ab313975decfe362f7">SVF::SymbolTableBuilder::analyzeStaticObjType</a></div><div class="ttdeci">void analyzeStaticObjType(ObjTypeInfo *typeinfo, const Value *val)</div><div class="ttdoc">Analyse types of heap and static objects. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#
|
|
745
|
-
<div class="ttc" id="classSVF_1_1ObjTypeInfo_html_a91b41b7ade5871362b77a2ef566b2830a84c1bc6eaff950330a102afca1efc04c"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830a84c1bc6eaff950330a102afca1efc04c">SVF::ObjTypeInfo::CONST_GLOBAL_OBJ</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#
|
|
772
|
+
<div class="ttc" id="classSVF_1_1SymbolTableBuilder_html_afe2806a0aef240ab313975decfe362f7"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#afe2806a0aef240ab313975decfe362f7">SVF::SymbolTableBuilder::analyzeStaticObjType</a></div><div class="ttdeci">void analyzeStaticObjType(ObjTypeInfo *typeinfo, const Value *val)</div><div class="ttdoc">Analyse types of heap and static objects. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00610">SymbolTableBuilder.cpp:610</a></div></div>
|
|
773
|
+
<div class="ttc" id="classSVF_1_1ObjTypeInfo_html_a91b41b7ade5871362b77a2ef566b2830a84c1bc6eaff950330a102afca1efc04c"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830a84c1bc6eaff950330a102afca1efc04c">SVF::ObjTypeInfo::CONST_GLOBAL_OBJ</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00573">SymbolTableInfo.h:573</a></div></div>
|
|
746
774
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a9e85d445e8b7b205134acd3874bba388"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a9e85d445e8b7b205134acd3874bba388">SVF::SVFUtil::isConstantData</a></div><div class="ttdeci">bool isConstantData(const Value *val)</div><div class="ttdoc">Return true if the value refers to constant data, e.g., i32 0. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00457">SVFUtil.h:457</a></div></div>
|
|
747
775
|
<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>
|
|
748
|
-
<div class="ttc" id="classSVF_1_1ObjTypeInfo_html_a91b41b7ade5871362b77a2ef566b2830aad918042d1f04a5e3960817d55ccb5d5"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830aad918042d1f04a5e3960817d55ccb5d5">SVF::ObjTypeInfo::STACK_OBJ</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#
|
|
749
|
-
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_aec579894eed558ea89740b68360187aa"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#aec579894eed558ea89740b68360187aa">SVF::SymbolTableInfo::getNumOfFlattenElements</a></div><div class="ttdeci">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#
|
|
750
|
-
<div class="ttc" id="classSVF_1_1ObjTypeInfo_html_a91b41b7ade5871362b77a2ef566b2830af5f94b2a41dab25fa08c94a989fb9515"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830af5f94b2a41dab25fa08c94a989fb9515">SVF::ObjTypeInfo::FUNCTION_OBJ</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#
|
|
751
|
-
<div class="ttc" id="classSVF_1_1ObjTypeInfo_html_aff17d13e520a731accedd06350af6221"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#aff17d13e520a731accedd06350af6221">SVF::ObjTypeInfo::setNumOfElements</a></div><div class="ttdeci">void setNumOfElements(u32_t num)</div><div class="ttdoc">Set the number of elements of this object. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#
|
|
752
|
-
<div class="ttc" id="classSVF_1_1SymbolTableBuilder_html_a9fca576448cc1cb38c894a7ae3d9ec56"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#a9fca576448cc1cb38c894a7ae3d9ec56">SVF::SymbolTableBuilder::analyzeHeapObjType</a></div><div class="ttdeci">void analyzeHeapObjType(ObjTypeInfo *typeinfo, const Value *val)</div><div class="ttdoc">Analyse types of heap and static objects. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#
|
|
776
|
+
<div class="ttc" id="classSVF_1_1ObjTypeInfo_html_a91b41b7ade5871362b77a2ef566b2830aad918042d1f04a5e3960817d55ccb5d5"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830aad918042d1f04a5e3960817d55ccb5d5">SVF::ObjTypeInfo::STACK_OBJ</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00567">SymbolTableInfo.h:567</a></div></div>
|
|
777
|
+
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_aec579894eed558ea89740b68360187aa"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#aec579894eed558ea89740b68360187aa">SVF::SymbolTableInfo::getNumOfFlattenElements</a></div><div class="ttdeci">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#l00365">SymbolTableInfo.cpp:365</a></div></div>
|
|
778
|
+
<div class="ttc" id="classSVF_1_1ObjTypeInfo_html_a91b41b7ade5871362b77a2ef566b2830af5f94b2a41dab25fa08c94a989fb9515"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830af5f94b2a41dab25fa08c94a989fb9515">SVF::ObjTypeInfo::FUNCTION_OBJ</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00564">SymbolTableInfo.h:564</a></div></div>
|
|
779
|
+
<div class="ttc" id="classSVF_1_1ObjTypeInfo_html_aff17d13e520a731accedd06350af6221"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#aff17d13e520a731accedd06350af6221">SVF::ObjTypeInfo::setNumOfElements</a></div><div class="ttdeci">void setNumOfElements(u32_t num)</div><div class="ttdoc">Set the number of elements of this object. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00620">SymbolTableInfo.h:620</a></div></div>
|
|
780
|
+
<div class="ttc" id="classSVF_1_1SymbolTableBuilder_html_a9fca576448cc1cb38c894a7ae3d9ec56"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#a9fca576448cc1cb38c894a7ae3d9ec56">SVF::SymbolTableBuilder::analyzeHeapObjType</a></div><div class="ttdeci">void analyzeHeapObjType(ObjTypeInfo *typeinfo, const Value *val)</div><div class="ttdoc">Analyse types of heap and static objects. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00592">SymbolTableBuilder.cpp:592</a></div></div>
|
|
753
781
|
</div><!-- fragment -->
|
|
754
782
|
</div>
|
|
755
783
|
</div>
|