svf-tools 1.0.374 → 1.0.378
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 +5 -6
- package/SVF-doxygen/html/html/Andersen_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/ConsG_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/ConsG_8h_source.html +6 -6
- package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/DDAClient_8h_source.html +1 -1
- package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +13 -13
- package/SVF-doxygen/html/html/ExtAPI_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/ExtAPI_8h_source.html +1 -1
- package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +3 -3
- package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/IRGraph_8h_source.html +1 -1
- 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/MemRegion_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/OfflineConsG_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +15 -15
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +2 -2
- package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +13 -13
- package/SVF-doxygen/html/html/SVFG_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +25 -25
- package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +30 -28
- package/SVF-doxygen/html/html/SVFIR_8h_source.html +63 -65
- package/SVF-doxygen/html/html/SVFModule_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +18 -19
- package/SVF-doxygen/html/html/SVFVariables_8h_source.html +118 -121
- package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +20 -13
- package/SVF-doxygen/html/html/SymbolTableBuilder_8h_source.html +7 -4
- package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +81 -43
- package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +45 -47
- package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +12 -12
- package/SVF-doxygen/html/html/VFGNode_8h_source.html +2 -2
- package/SVF-doxygen/html/html/VFG_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/VFG_8h_source.html +2 -2
- package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ActualParmVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ActualRetVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AliasDDAClient.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +5 -6
- package/SVF-doxygen/html/html/classSVF_1_1ArgumentVFGNode.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +10 -10
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CloneDummyObjVar-members.html +22 -25
- package/SVF-doxygen/html/html/classSVF_1_1CloneDummyObjVar.html +16 -25
- package/SVF-doxygen/html/html/classSVF_1_1CloneFIObjVar-members.html +22 -25
- package/SVF-doxygen/html/html/classSVF_1_1CloneFIObjVar.html +17 -26
- package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar-members.html +23 -26
- package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar.html +17 -26
- package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1DDAClient.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar-members.html +22 -25
- package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar.html +18 -27
- package/SVF-doxygen/html/html/classSVF_1_1DummyValVar-members.html +21 -24
- package/SVF-doxygen/html/html/classSVF_1_1DummyValVar.html +18 -27
- package/SVF-doxygen/html/html/classSVF_1_1ExtAPI.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1FIObjVar-members.html +22 -25
- package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.html +19 -28
- package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1FormalParmVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FormalRetVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GepObjVar-members.html +24 -27
- package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +41 -50
- package/SVF-doxygen/html/html/classSVF_1_1GepValVar-members.html +22 -25
- package/SVF-doxygen/html/html/classSVF_1_1GepValVar.html +28 -37
- package/SVF-doxygen/html/html/classSVF_1_1IRGraph.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode.html +2 -2
- 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_1MRGenerator.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +69 -69
- package/SVF-doxygen/html/html/classSVF_1_1NullPtrVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo-members.html +7 -8
- package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo.html +124 -174
- package/SVF-doxygen/html/html/classSVF_1_1ObjVar-members.html +22 -25
- package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +23 -32
- package/SVF-doxygen/html/html/classSVF_1_1OfflineConsG.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +16 -16
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +26 -26
- package/SVF-doxygen/html/html/classSVF_1_1RetPN-members.html +22 -25
- package/SVF-doxygen/html/html/classSVF_1_1RetPN.html +18 -27
- package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +180 -187
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +146 -154
- package/SVF-doxygen/html/html/classSVF_1_1SVFModule.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFVar-members.html +23 -26
- package/SVF-doxygen/html/html/classSVF_1_1SVFVar.html +54 -151
- package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1StInfo.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder-members.html +10 -7
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +154 -35
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +77 -73
- package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +20 -20
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1VFG.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1ValVar-members.html +21 -24
- package/SVF-doxygen/html/html/classSVF_1_1ValVar.html +16 -25
- package/SVF-doxygen/html/html/classSVF_1_1VarArgPN-members.html +22 -25
- package/SVF-doxygen/html/html/classSVF_1_1VarArgPN.html +18 -27
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +1 -1
- package/SVF-doxygen/html/html/functions_a.html +6 -6
- package/SVF-doxygen/html/html/functions_c.html +1 -1
- package/SVF-doxygen/html/html/functions_func.html +6 -6
- package/SVF-doxygen/html/html/functions_func_c.html +1 -1
- package/SVF-doxygen/html/html/functions_func_g.html +6 -3
- package/SVF-doxygen/html/html/functions_func_i.html +11 -17
- package/SVF-doxygen/html/html/functions_func_o.html +4 -4
- package/SVF-doxygen/html/html/functions_func_r.html +5 -2
- package/SVF-doxygen/html/html/functions_g.html +7 -4
- package/SVF-doxygen/html/html/functions_i.html +12 -21
- package/SVF-doxygen/html/html/functions_l.html +3 -3
- package/SVF-doxygen/html/html/functions_o.html +17 -13
- package/SVF-doxygen/html/html/functions_p.html +4 -4
- package/SVF-doxygen/html/html/functions_r.html +10 -7
- package/SVF-doxygen/html/html/functions_rela.html +2 -1
- package/SVF-doxygen/html/html/functions_s.html +15 -12
- package/SVF-doxygen/html/html/functions_t.html +7 -5
- package/SVF-doxygen/html/html/functions_vars_i.html +3 -6
- package/SVF-doxygen/html/html/namespaceSVF.html +1 -1
- package/SVF-doxygen/html/html/search/all_1.js +4 -4
- package/SVF-doxygen/html/html/search/all_10.js +9 -9
- package/SVF-doxygen/html/html/search/all_12.js +1 -0
- package/SVF-doxygen/html/html/search/all_13.js +9 -9
- package/SVF-doxygen/html/html/search/all_14.js +5 -5
- package/SVF-doxygen/html/html/search/all_3.js +1 -1
- package/SVF-doxygen/html/html/search/all_7.js +2 -1
- package/SVF-doxygen/html/html/search/all_9.js +2 -5
- package/SVF-doxygen/html/html/search/all_c.js +2 -2
- package/SVF-doxygen/html/html/search/all_d.js +2 -2
- package/SVF-doxygen/html/html/search/all_e.js +2 -2
- package/SVF-doxygen/html/html/search/all_f.js +1 -1
- package/SVF-doxygen/html/html/search/functions_0.js +4 -4
- package/SVF-doxygen/html/html/search/functions_2.js +1 -1
- package/SVF-doxygen/html/html/search/functions_6.js +2 -1
- package/SVF-doxygen/html/html/search/functions_8.js +1 -3
- package/SVF-doxygen/html/html/search/functions_d.js +1 -1
- package/SVF-doxygen/html/html/search/functions_e.js +1 -1
- package/SVF-doxygen/html/html/search/functions_f.js +1 -0
- package/SVF-doxygen/html/html/search/related_9.js +1 -1
- package/SVF-doxygen/html/html/search/variables_14.js +2 -2
- package/SVF-doxygen/html/html/search/variables_9.js +1 -2
- package/SVF-doxygen/html/html/search/variables_d.js +1 -1
- package/SVF-doxygen/html/html/search/variables_e.js +2 -2
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +1 -1
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +3 -3
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01OfflineConsG_01_5_01_4.html +1 -1
- package/SVF-doxygen/html/html/svf-ex_8cpp.html +2 -2
- package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +2 -2
- package/include/MemoryModel/SVFIR.h +4 -36
- package/include/MemoryModel/SVFVariables.h +2 -13
- package/include/MemoryModel/SymbolTableInfo.h +6 -18
- package/include/SVF-FE/SVFIRBuilder.h +3 -4
- package/include/SVF-FE/SymbolTableBuilder.h +8 -1
- package/lib/MemoryModel/SVFIR.cpp +44 -2
- package/lib/MemoryModel/SVFVariables.cpp +6 -13
- package/lib/MemoryModel/SymbolTableInfo.cpp +21 -48
- package/lib/SVF-FE/SVFIRBuilder.cpp +1 -1
- package/lib/SVF-FE/SymbolTableBuilder.cpp +60 -13
- package/lib/Util/ExtAPI.cpp +1 -0
- package/lib/WPA/AndersenStat.cpp +1 -1
- package/package.json +1 -1
|
@@ -225,9 +225,9 @@ Protected Member Functions</h2></td></tr>
|
|
|
225
225
|
<tr class="memitem:abf7567c655499d6744de8df689c11fad"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SymbolTableInfo.html#abf7567c655499d6744de8df689c11fad">collectSimpleTypeInfo</a> (const <a class="el" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *T)</td></tr>
|
|
226
226
|
<tr class="memdesc:abf7567c655499d6744de8df689c11fad"><td class="mdescLeft"> </td><td class="mdescRight">Collect simple type (non-aggregate) info. <a href="#abf7567c655499d6744de8df689c11fad">More...</a><br /></td></tr>
|
|
227
227
|
<tr class="separator:abf7567c655499d6744de8df689c11fad"><td class="memSeparator" colspan="2"> </td></tr>
|
|
228
|
-
<tr class="memitem:
|
|
229
|
-
<tr class="memdesc:
|
|
230
|
-
<tr class="separator:
|
|
228
|
+
<tr class="memitem:a2b0f2c6745d14a9f6447ed96484dddac"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1ObjTypeInfo.html">ObjTypeInfo</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SymbolTableInfo.html#a2b0f2c6745d14a9f6447ed96484dddac">createObjTypeInfo</a> (const <a class="el" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *type)</td></tr>
|
|
229
|
+
<tr class="memdesc:a2b0f2c6745d14a9f6447ed96484dddac"><td class="mdescLeft"> </td><td class="mdescRight">Create an objectInfo based on LLVM type (value is null, and type could be null, representing a dummy object) <a href="#a2b0f2c6745d14a9f6447ed96484dddac">More...</a><br /></td></tr>
|
|
230
|
+
<tr class="separator:a2b0f2c6745d14a9f6447ed96484dddac"><td class="memSeparator" colspan="2"> </td></tr>
|
|
231
231
|
</table><table class="memberdecls">
|
|
232
232
|
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
|
|
233
233
|
Protected Attributes</h2></td></tr>
|
|
@@ -557,7 +557,7 @@ Friends</h2></td></tr>
|
|
|
557
557
|
</div><div class="memdoc">
|
|
558
558
|
|
|
559
559
|
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8h_source.html#l00131">131</a> of file <a class="el" href="SymbolTableInfo_8h_source.html">SymbolTableInfo.h</a>.</p>
|
|
560
|
-
<div class="fragment"><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  {</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <a class="code" href="classSVF_1_1SymbolTableInfo.html#a87cc3289dd69e5378487dd9ae2c9e82e">destroy</a>();</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  }</div><div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a87cc3289dd69e5378487dd9ae2c9e82e"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a87cc3289dd69e5378487dd9ae2c9e82e">SVF::SymbolTableInfo::destroy</a></div><div class="ttdeci">void destroy()</div><div class="ttdoc">Clean up memory. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#
|
|
560
|
+
<div class="fragment"><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  {</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <a class="code" href="classSVF_1_1SymbolTableInfo.html#a87cc3289dd69e5378487dd9ae2c9e82e">destroy</a>();</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  }</div><div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a87cc3289dd69e5378487dd9ae2c9e82e"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a87cc3289dd69e5378487dd9ae2c9e82e">SVF::SymbolTableInfo::destroy</a></div><div class="ttdeci">void destroy()</div><div class="ttdoc">Clean up memory. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00292">SymbolTableInfo.cpp:292</a></div></div>
|
|
561
561
|
</div><!-- fragment -->
|
|
562
562
|
</div>
|
|
563
563
|
</div>
|
|
@@ -648,8 +648,8 @@ Friends</h2></td></tr>
|
|
|
648
648
|
<p>Array's flatten field infor is the same as its element's flatten infor.</p>
|
|
649
649
|
<p>Flatten arrays, map each array element index <code>i</code> to flattened index <code>(i * nfE * totalElemNum)/outArrayElemNum</code> nfE>1 if the array element is a struct with more than one field. </p>
|
|
650
650
|
|
|
651
|
-
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#
|
|
652
|
-
<div class="fragment"><div class="line"><a name="
|
|
651
|
+
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00144">144</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
|
|
652
|
+
<div class="fragment"><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> {</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <a class="code" href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">u64_t</a> totalElemNum = ty->getNumElements();</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* elemTy = ty->getElementType();</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keywordflow">while</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a146d286041987860388da3d8bc85cee3">ArrayType</a>* aty = SVFUtil::dyn_cast<ArrayType>(elemTy))</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  {</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  totalElemNum *= aty->getNumElements();</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  elemTy = aty->getElementType();</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  }</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  </div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* stinfo = <span class="keyword">new</span> <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>(totalElemNum);</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <a class="code" href="classSVF_1_1SymbolTableInfo.html#ad8b9fa0a4e4b91efb80586e692bd0dcd">typeToFieldInfo</a>[ty] = stinfo;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> </div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="keywordflow">if</span>(totalElemNum==0){</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  stinfo-><a class="code" href="classSVF_1_1StInfo.html#a1a8be773f23b5a5fd36d44698bae9986">addFldWithType</a>(0, elemTy, 0);</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  stinfo-><a class="code" href="classSVF_1_1StInfo.html#a1a07c2b1415c29d7d70791c6dfe602a3">setNumOfFieldsAndElems</a>(1, 1);</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <a class="code" href="classSVF_1_1FlattenedFieldInfo.html">FlattenedFieldInfo</a> field(0, elemTy);</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  stinfo-><a class="code" href="classSVF_1_1StInfo.html#ab5908115f11eccee61bd0759a51d5af0">getFlattenedFieldInfoVec</a>().push_back(field);</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  }</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> </div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* elemStInfo = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a90bca8ff906ea48fb5e3a69da463ccab">getStructInfo</a>(elemTy);</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> nfE = elemStInfo-><a class="code" href="classSVF_1_1StInfo.html#ae5fad367673315da57a604e64b5889f0">getNumOfFlattenFields</a>();</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> j = 0; j < nfE; j++)</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  {</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> idx = elemStInfo-><a class="code" href="classSVF_1_1StInfo.html#ab5908115f11eccee61bd0759a51d5af0">getFlattenedFieldInfoVec</a>()[j].getFlattenFldIdx();</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* fieldTy = elemStInfo-><a class="code" href="classSVF_1_1StInfo.html#ab5908115f11eccee61bd0759a51d5af0">getFlattenedFieldInfoVec</a>()[j].getFlattenElemTy();</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <a class="code" href="classSVF_1_1FlattenedFieldInfo.html">FlattenedFieldInfo</a> field(idx, fieldTy);</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  stinfo-><a class="code" href="classSVF_1_1StInfo.html#ab5908115f11eccee61bd0759a51d5af0">getFlattenedFieldInfoVec</a>().push_back(field);</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  }</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span> </div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> outArrayElemNum = ty->getNumElements();</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="keywordflow">for</span>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i < outArrayElemNum; i++)</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  stinfo-><a class="code" href="classSVF_1_1StInfo.html#a1a8be773f23b5a5fd36d44698bae9986">addFldWithType</a>(0, elemTy, (i * nfE * totalElemNum)/outArrayElemNum);</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> </div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  stinfo-><a class="code" href="classSVF_1_1StInfo.html#a1a07c2b1415c29d7d70791c6dfe602a3">setNumOfFieldsAndElems</a>(nfE, nfE * totalElemNum);</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span> }</div><div class="ttc" id="classSVF_1_1StInfo_html_a1a8be773f23b5a5fd36d44698bae9986"><div class="ttname"><a href="classSVF_1_1StInfo.html#a1a8be773f23b5a5fd36d44698bae9986">SVF::StInfo::addFldWithType</a></div><div class="ttdeci">void addFldWithType(u32_t fldIdx, const Type *type, u32_t elemIdx)</div><div class="ttdoc">Add field index and element index and their corresponding type. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00059">SymbolTableInfo.cpp:59</a></div></div>
|
|
653
653
|
<div class="ttc" id="namespaceSVF_html_a1d008c0666c145622b81d427be64c52d"><div class="ttname"><a href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">SVF::Type</a></div><div class="ttdeci">llvm::Type Type</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00075">BasicTypes.h:75</a></div></div>
|
|
654
654
|
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_ad8b9fa0a4e4b91efb80586e692bd0dcd"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#ad8b9fa0a4e4b91efb80586e692bd0dcd">SVF::SymbolTableInfo::typeToFieldInfo</a></div><div class="ttdeci">TypeToFieldInfoMap typeToFieldInfo</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00398">SymbolTableInfo.h:398</a></div></div>
|
|
655
655
|
<div class="ttc" id="namespaceSVF_html_a146d286041987860388da3d8bc85cee3"><div class="ttname"><a href="namespaceSVF.html#a146d286041987860388da3d8bc85cee3">SVF::ArrayType</a></div><div class="ttdeci">llvm::ArrayType ArrayType</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00107">BasicTypes.h:107</a></div></div>
|
|
@@ -692,8 +692,8 @@ Friends</h2></td></tr>
|
|
|
692
692
|
<p>Collect simple type (non-aggregate) info </p>
|
|
693
693
|
<p>Only one field </p>
|
|
694
694
|
|
|
695
|
-
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#
|
|
696
|
-
<div class="fragment"><div class="line"><a name="
|
|
695
|
+
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00247">247</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
|
|
696
|
+
<div class="fragment"><div class="line"><a name="l00248"></a><span class="lineno"> 248</span> {</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* stinfo = <span class="keyword">new</span> <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>(1);</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <a class="code" href="classSVF_1_1SymbolTableInfo.html#ad8b9fa0a4e4b91efb80586e692bd0dcd">typeToFieldInfo</a>[ty] = stinfo;</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span> </div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  stinfo-><a class="code" href="classSVF_1_1StInfo.html#a1a8be773f23b5a5fd36d44698bae9986">addFldWithType</a>(0, ty, 0);</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>  <a class="code" href="classSVF_1_1FlattenedFieldInfo.html">FlattenedFieldInfo</a> field(0, ty);</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  stinfo-><a class="code" href="classSVF_1_1StInfo.html#ab5908115f11eccee61bd0759a51d5af0">getFlattenedFieldInfoVec</a>().push_back(field);</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span> </div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  stinfo-><a class="code" href="classSVF_1_1StInfo.html#a1a07c2b1415c29d7d70791c6dfe602a3">setNumOfFieldsAndElems</a>(1,1);</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span> }</div><div class="ttc" id="classSVF_1_1StInfo_html_a1a8be773f23b5a5fd36d44698bae9986"><div class="ttname"><a href="classSVF_1_1StInfo.html#a1a8be773f23b5a5fd36d44698bae9986">SVF::StInfo::addFldWithType</a></div><div class="ttdeci">void addFldWithType(u32_t fldIdx, const Type *type, u32_t elemIdx)</div><div class="ttdoc">Add field index and element index and their corresponding type. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00059">SymbolTableInfo.cpp:59</a></div></div>
|
|
697
697
|
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_ad8b9fa0a4e4b91efb80586e692bd0dcd"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#ad8b9fa0a4e4b91efb80586e692bd0dcd">SVF::SymbolTableInfo::typeToFieldInfo</a></div><div class="ttdeci">TypeToFieldInfoMap typeToFieldInfo</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00398">SymbolTableInfo.h:398</a></div></div>
|
|
698
698
|
<div class="ttc" id="classSVF_1_1FlattenedFieldInfo_html"><div class="ttname"><a href="classSVF_1_1FlattenedFieldInfo.html">SVF::FlattenedFieldInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00045">LocationSet.h:45</a></div></div>
|
|
699
699
|
<div class="ttc" id="classSVF_1_1StInfo_html_ab5908115f11eccee61bd0759a51d5af0"><div class="ttname"><a href="classSVF_1_1StInfo.html#ab5908115f11eccee61bd0759a51d5af0">SVF::StInfo::getFlattenedFieldInfoVec</a></div><div class="ttdeci">std::vector< FlattenedFieldInfo > & getFlattenedFieldInfoVec()</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00559">SymbolTableInfo.h:559</a></div></div>
|
|
@@ -731,8 +731,8 @@ Friends</h2></td></tr>
|
|
|
731
731
|
<p>The struct info should not be processed before</p>
|
|
732
732
|
<p>offset with int_32 (s64_t) is large enough and will not cause overflow </p>
|
|
733
733
|
|
|
734
|
-
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#
|
|
735
|
-
<div class="fragment"><div class="line"><a name="
|
|
734
|
+
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00192">192</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
|
|
735
|
+
<div class="fragment"><div class="line"><a name="l00193"></a><span class="lineno"> 193</span> {</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* stinfo = <span class="keyword">new</span> <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>(1);</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <a class="code" href="classSVF_1_1SymbolTableInfo.html#ad8b9fa0a4e4b91efb80586e692bd0dcd">typeToFieldInfo</a>[sty] = stinfo;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span> </div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="comment">// Number of fields after flattening the struct</span></div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> nf = 0;</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <span class="comment">// The offset when considering array stride info</span></div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> strideOffset = 0;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="keywordflow">for</span> (StructType::element_iterator it = sty->element_begin(), ie =</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  sty->element_end(); it != ie; ++it)</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  {</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *et = *it;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  stinfo-><a class="code" href="classSVF_1_1StInfo.html#a1a8be773f23b5a5fd36d44698bae9986">addFldWithType</a>(nf, et, strideOffset);</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span> </div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="keywordflow">if</span> (SVFUtil::isa<StructType>(et) || SVFUtil::isa<ArrayType>(et))</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  {</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <a class="code" href="classSVF_1_1StInfo.html">StInfo</a> * subStinfo = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a90bca8ff906ea48fb5e3a69da463ccab">getStructInfo</a>(et);</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> nfE = subStinfo-><a class="code" href="classSVF_1_1StInfo.html#ae5fad367673315da57a604e64b5889f0">getNumOfFlattenFields</a>();</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <span class="comment">//Copy ST's info, whose element 0 is the size of ST itself.</span></div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> j = 0; j < nfE; j++)</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="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> fldIdx = nf + subStinfo-><a class="code" href="classSVF_1_1StInfo.html#ab5908115f11eccee61bd0759a51d5af0">getFlattenedFieldInfoVec</a>()[j].getFlattenFldIdx();</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* elemTy = subStinfo-><a class="code" href="classSVF_1_1StInfo.html#ab5908115f11eccee61bd0759a51d5af0">getFlattenedFieldInfoVec</a>()[j].getFlattenElemTy();</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <a class="code" href="classSVF_1_1FlattenedFieldInfo.html">FlattenedFieldInfo</a> field(fldIdx, elemTy);</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  stinfo-><a class="code" href="classSVF_1_1StInfo.html#ab5908115f11eccee61bd0759a51d5af0">getFlattenedFieldInfoVec</a>().push_back(field);</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>  nf += nfE;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  strideOffset += nfE * subStinfo-><a class="code" href="classSVF_1_1StInfo.html#af5094ec542f345d214a682d4138cf690">getStride</a>();</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="keywordflow">else</span> <span class="comment">//simple type</span></div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  {</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <a class="code" href="classSVF_1_1FlattenedFieldInfo.html">FlattenedFieldInfo</a> field(nf, et);</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  stinfo-><a class="code" href="classSVF_1_1StInfo.html#ab5908115f11eccee61bd0759a51d5af0">getFlattenedFieldInfoVec</a>().push_back(field);</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  nf += 1;</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  strideOffset += 1;</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  }</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  }</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span> </div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  stinfo-><a class="code" href="classSVF_1_1StInfo.html#a1a07c2b1415c29d7d70791c6dfe602a3">setNumOfFieldsAndElems</a>(nf,strideOffset);</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span> </div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <span class="comment">//Record the size of the complete struct and update max_struct.</span></div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <span class="keywordflow">if</span> (nf > <a class="code" href="classSVF_1_1SymbolTableInfo.html#abb8550c9ef856e45cb7675c3796f9a35">maxStSize</a>)</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  {</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <a class="code" href="classSVF_1_1SymbolTableInfo.html#a4e33a01e203f07a8154af6ee65f5ba46">maxStruct</a> = sty;</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <a class="code" href="classSVF_1_1SymbolTableInfo.html#abb8550c9ef856e45cb7675c3796f9a35">maxStSize</a> = nf;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  }</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span> }</div><div class="ttc" id="classSVF_1_1StInfo_html_a1a8be773f23b5a5fd36d44698bae9986"><div class="ttname"><a href="classSVF_1_1StInfo.html#a1a8be773f23b5a5fd36d44698bae9986">SVF::StInfo::addFldWithType</a></div><div class="ttdeci">void addFldWithType(u32_t fldIdx, const Type *type, u32_t elemIdx)</div><div class="ttdoc">Add field index and element index and their corresponding type. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00059">SymbolTableInfo.cpp:59</a></div></div>
|
|
736
736
|
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a4e33a01e203f07a8154af6ee65f5ba46"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a4e33a01e203f07a8154af6ee65f5ba46">SVF::SymbolTableInfo::maxStruct</a></div><div class="ttdeci">const Type * maxStruct</div><div class="ttdoc">The struct type with the most fields. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00401">SymbolTableInfo.h:401</a></div></div>
|
|
737
737
|
<div class="ttc" id="namespaceSVF_html_a1d008c0666c145622b81d427be64c52d"><div class="ttname"><a href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">SVF::Type</a></div><div class="ttdeci">llvm::Type Type</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00075">BasicTypes.h:75</a></div></div>
|
|
738
738
|
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_ad8b9fa0a4e4b91efb80586e692bd0dcd"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#ad8b9fa0a4e4b91efb80586e692bd0dcd">SVF::SymbolTableInfo::typeToFieldInfo</a></div><div class="ttdeci">TypeToFieldInfoMap typeToFieldInfo</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00398">SymbolTableInfo.h:398</a></div></div>
|
|
@@ -767,14 +767,14 @@ Friends</h2></td></tr>
|
|
|
767
767
|
<p>Collect type info. </p>
|
|
768
768
|
<p>Collect a LLVM type info </p>
|
|
769
769
|
|
|
770
|
-
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#
|
|
771
|
-
<div class="fragment"><div class="line"><a name="
|
|
770
|
+
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00128">128</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
|
|
771
|
+
<div class="fragment"><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> {</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1SymbolTableInfo.html#ad8b9fa0a4e4b91efb80586e692bd0dcd">typeToFieldInfo</a>.find(ty) == <a class="code" href="classSVF_1_1SymbolTableInfo.html#ad8b9fa0a4e4b91efb80586e692bd0dcd">typeToFieldInfo</a>.end() && <span class="stringliteral">"this type has been collected before"</span>);</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> </div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a146d286041987860388da3d8bc85cee3">ArrayType</a>* aty = SVFUtil::dyn_cast<ArrayType>(ty))</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <a class="code" href="classSVF_1_1SymbolTableInfo.html#aea1c4ec32c307feb5da455a41cc51b5e">collectArrayInfo</a>(aty);</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a2bf58575ac7d068e0f1a4cf953b9e6cb">StructType</a>* sty = SVFUtil::dyn_cast<StructType>(ty))</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <a class="code" href="classSVF_1_1SymbolTableInfo.html#ab5297b79a02d8afce647a8b61bdab804">collectStructInfo</a>(sty);</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <a class="code" href="classSVF_1_1SymbolTableInfo.html#abf7567c655499d6744de8df689c11fad">collectSimpleTypeInfo</a>(ty);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> }</div><div class="ttc" id="classSVF_1_1SymbolTableInfo_html_ad8b9fa0a4e4b91efb80586e692bd0dcd"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#ad8b9fa0a4e4b91efb80586e692bd0dcd">SVF::SymbolTableInfo::typeToFieldInfo</a></div><div class="ttdeci">TypeToFieldInfoMap typeToFieldInfo</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00398">SymbolTableInfo.h:398</a></div></div>
|
|
772
772
|
<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>
|
|
773
773
|
<div class="ttc" id="namespaceSVF_html_a146d286041987860388da3d8bc85cee3"><div class="ttname"><a href="namespaceSVF.html#a146d286041987860388da3d8bc85cee3">SVF::ArrayType</a></div><div class="ttdeci">llvm::ArrayType ArrayType</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00107">BasicTypes.h:107</a></div></div>
|
|
774
774
|
<div class="ttc" id="namespaceSVF_html_a2bf58575ac7d068e0f1a4cf953b9e6cb"><div class="ttname"><a href="namespaceSVF.html#a2bf58575ac7d068e0f1a4cf953b9e6cb">SVF::StructType</a></div><div class="ttdeci">llvm::StructType StructType</div><div class="ttdoc">LLVM types. </div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00106">BasicTypes.h:106</a></div></div>
|
|
775
|
-
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_ab5297b79a02d8afce647a8b61bdab804"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#ab5297b79a02d8afce647a8b61bdab804">SVF::SymbolTableInfo::collectStructInfo</a></div><div class="ttdeci">virtual void collectStructInfo(const StructType *T)</div><div class="ttdoc">Collect the struct info. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#
|
|
776
|
-
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_aea1c4ec32c307feb5da455a41cc51b5e"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#aea1c4ec32c307feb5da455a41cc51b5e">SVF::SymbolTableInfo::collectArrayInfo</a></div><div class="ttdeci">virtual void collectArrayInfo(const ArrayType *T)</div><div class="ttdoc">Collect the array info. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#
|
|
777
|
-
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_abf7567c655499d6744de8df689c11fad"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#abf7567c655499d6744de8df689c11fad">SVF::SymbolTableInfo::collectSimpleTypeInfo</a></div><div class="ttdeci">virtual void collectSimpleTypeInfo(const Type *T)</div><div class="ttdoc">Collect simple type (non-aggregate) info. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#
|
|
775
|
+
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_ab5297b79a02d8afce647a8b61bdab804"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#ab5297b79a02d8afce647a8b61bdab804">SVF::SymbolTableInfo::collectStructInfo</a></div><div class="ttdeci">virtual void collectStructInfo(const StructType *T)</div><div class="ttdoc">Collect the struct info. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00192">SymbolTableInfo.cpp:192</a></div></div>
|
|
776
|
+
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_aea1c4ec32c307feb5da455a41cc51b5e"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#aea1c4ec32c307feb5da455a41cc51b5e">SVF::SymbolTableInfo::collectArrayInfo</a></div><div class="ttdeci">virtual void collectArrayInfo(const ArrayType *T)</div><div class="ttdoc">Collect the array info. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00144">SymbolTableInfo.cpp:144</a></div></div>
|
|
777
|
+
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_abf7567c655499d6744de8df689c11fad"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#abf7567c655499d6744de8df689c11fad">SVF::SymbolTableInfo::collectSimpleTypeInfo</a></div><div class="ttdeci">virtual void collectSimpleTypeInfo(const Type *T)</div><div class="ttdoc">Collect simple type (non-aggregate) info. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00247">SymbolTableInfo.cpp:247</a></div></div>
|
|
778
778
|
</div><!-- fragment -->
|
|
779
779
|
</div>
|
|
780
780
|
</div>
|
|
@@ -822,12 +822,13 @@ Friends</h2></td></tr>
|
|
|
822
822
|
</table>
|
|
823
823
|
</div><div class="memdoc">
|
|
824
824
|
|
|
825
|
-
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#
|
|
826
|
-
<div class="fragment"><div class="line"><a name="
|
|
825
|
+
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00373">373</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
|
|
826
|
+
<div class="fragment"><div class="line"><a name="l00374"></a><span class="lineno"> 374</span> {</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1SymbolTableInfo.html#ad9cdb21e20182f3bc95f04bbb97712f3">isBlkObj</a>(symId));</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1SymbolTableInfo.html#aeab14702eabde827923a692cba8f7f8a">objMap</a>.find(symId)==<a class="code" href="classSVF_1_1SymbolTableInfo.html#aeab14702eabde827923a692cba8f7f8a">objMap</a>.end());</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* obj = <span class="keyword">new</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>(symId, <a class="code" href="classSVF_1_1SymbolTableInfo.html#a2b0f2c6745d14a9f6447ed96484dddac">createObjTypeInfo</a>(IntegerType::get(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()->getContext(), 32)));</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  <a class="code" href="classSVF_1_1SymbolTableInfo.html#aeab14702eabde827923a692cba8f7f8a">objMap</a>[symId] = obj;</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  <span class="keywordflow">return</span> obj;</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span> }</div><div class="ttc" id="classSVF_1_1SymbolTableInfo_html_ad9cdb21e20182f3bc95f04bbb97712f3"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#ad9cdb21e20182f3bc95f04bbb97712f3">SVF::SymbolTableInfo::isBlkObj</a></div><div class="ttdeci">static bool isBlkObj(NodeID id)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00198">SymbolTableInfo.h:198</a></div></div>
|
|
827
827
|
<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#l00411">SymbolTableInfo.h:411</a></div></div>
|
|
828
828
|
<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>
|
|
829
|
-
<div class="ttc" id="
|
|
829
|
+
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a2b0f2c6745d14a9f6447ed96484dddac"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a2b0f2c6745d14a9f6447ed96484dddac">SVF::SymbolTableInfo::createObjTypeInfo</a></div><div class="ttdeci">ObjTypeInfo * createObjTypeInfo(const Type *type)</div><div class="ttdoc">Create an objectInfo based on LLVM type (value is null, and type could be null, representing a dummy ...</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00102">SymbolTableInfo.cpp:102</a></div></div>
|
|
830
830
|
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_aeab14702eabde827923a692cba8f7f8a"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#aeab14702eabde827923a692cba8f7f8a">SVF::SymbolTableInfo::objMap</a></div><div class="ttdeci">IDToMemMapTy objMap</div><div class="ttdoc">map a memory sym id to its obj </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00091">SymbolTableInfo.h:91</a></div></div>
|
|
831
|
+
<div class="ttc" id="classSVF_1_1LLVMModuleSet_html_acf40310917909e4234282c0695a43160"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">SVF::LLVMModuleSet::getLLVMModuleSet</a></div><div class="ttdeci">static LLVMModuleSet * getLLVMModuleSet()</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00069">LLVMModule.h:69</a></div></div>
|
|
831
832
|
</div><!-- fragment -->
|
|
832
833
|
</div>
|
|
833
834
|
</div>
|
|
@@ -847,12 +848,13 @@ Friends</h2></td></tr>
|
|
|
847
848
|
</table>
|
|
848
849
|
</div><div class="memdoc">
|
|
849
850
|
|
|
850
|
-
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#
|
|
851
|
-
<div class="fragment"><div class="line"><a name="
|
|
851
|
+
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00382">382</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
|
|
852
|
+
<div class="fragment"><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>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1SymbolTableInfo.html#a704b917b1e1dbaf9cd758fa9acc1083b">isConstantObj</a>(symId));</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1SymbolTableInfo.html#aeab14702eabde827923a692cba8f7f8a">objMap</a>.find(symId)==<a class="code" href="classSVF_1_1SymbolTableInfo.html#aeab14702eabde827923a692cba8f7f8a">objMap</a>.end());</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* obj = <span class="keyword">new</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>(symId, <a class="code" href="classSVF_1_1SymbolTableInfo.html#a2b0f2c6745d14a9f6447ed96484dddac">createObjTypeInfo</a>(IntegerType::get(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()->getContext(), 32)));</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  <a class="code" href="classSVF_1_1SymbolTableInfo.html#aeab14702eabde827923a692cba8f7f8a">objMap</a>[symId] = obj;</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  <span class="keywordflow">return</span> obj;</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</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#l00411">SymbolTableInfo.h:411</a></div></div>
|
|
852
853
|
<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>
|
|
853
854
|
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a704b917b1e1dbaf9cd758fa9acc1083b"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a704b917b1e1dbaf9cd758fa9acc1083b">SVF::SymbolTableInfo::isConstantObj</a></div><div class="ttdeci">static bool isConstantObj(NodeID id)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00202">SymbolTableInfo.h:202</a></div></div>
|
|
854
|
-
<div class="ttc" id="
|
|
855
|
+
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a2b0f2c6745d14a9f6447ed96484dddac"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a2b0f2c6745d14a9f6447ed96484dddac">SVF::SymbolTableInfo::createObjTypeInfo</a></div><div class="ttdeci">ObjTypeInfo * createObjTypeInfo(const Type *type)</div><div class="ttdoc">Create an objectInfo based on LLVM type (value is null, and type could be null, representing a dummy ...</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00102">SymbolTableInfo.cpp:102</a></div></div>
|
|
855
856
|
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_aeab14702eabde827923a692cba8f7f8a"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#aeab14702eabde827923a692cba8f7f8a">SVF::SymbolTableInfo::objMap</a></div><div class="ttdeci">IDToMemMapTy objMap</div><div class="ttdoc">map a memory sym id to its obj </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00091">SymbolTableInfo.h:91</a></div></div>
|
|
857
|
+
<div class="ttc" id="classSVF_1_1LLVMModuleSet_html_acf40310917909e4234282c0695a43160"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">SVF::LLVMModuleSet::getLLVMModuleSet</a></div><div class="ttdeci">static LLVMModuleSet * getLLVMModuleSet()</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00069">LLVMModule.h:69</a></div></div>
|
|
856
858
|
</div><!-- fragment -->
|
|
857
859
|
</div>
|
|
858
860
|
</div>
|
|
@@ -884,16 +886,16 @@ Friends</h2></td></tr>
|
|
|
884
886
|
|
|
885
887
|
<p>Can only be invoked by SVFIR::addDummyNode() when creaing <a class="el" href="classSVF_1_1SVFIR.html">SVFIR</a> from file. </p>
|
|
886
888
|
|
|
887
|
-
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#
|
|
888
|
-
<div class="fragment"><div class="line"><a name="
|
|
889
|
+
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00391">391</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
|
|
890
|
+
<div class="fragment"><div class="line"><a name="l00392"></a><span class="lineno"> 392</span> {</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1SymbolTableInfo.html#aeab14702eabde827923a692cba8f7f8a">objMap</a>.find(symId)==<a class="code" href="classSVF_1_1SymbolTableInfo.html#aeab14702eabde827923a692cba8f7f8a">objMap</a>.end() && <span class="stringliteral">"this dummy obj has been created before"</span>);</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* memObj = <span class="keyword">new</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>(symId, <a class="code" href="classSVF_1_1SymbolTableInfo.html#a2b0f2c6745d14a9f6447ed96484dddac">createObjTypeInfo</a>(type));</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  <a class="code" href="classSVF_1_1SymbolTableInfo.html#aeab14702eabde827923a692cba8f7f8a">objMap</a>[symId] = memObj;</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  <span class="keywordflow">return</span> memObj;</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</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#l00411">SymbolTableInfo.h:411</a></div></div>
|
|
889
891
|
<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>
|
|
890
|
-
<div class="ttc" id="
|
|
892
|
+
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a2b0f2c6745d14a9f6447ed96484dddac"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a2b0f2c6745d14a9f6447ed96484dddac">SVF::SymbolTableInfo::createObjTypeInfo</a></div><div class="ttdeci">ObjTypeInfo * createObjTypeInfo(const Type *type)</div><div class="ttdoc">Create an objectInfo based on LLVM type (value is null, and type could be null, representing a dummy ...</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00102">SymbolTableInfo.cpp:102</a></div></div>
|
|
891
893
|
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_aeab14702eabde827923a692cba8f7f8a"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#aeab14702eabde827923a692cba8f7f8a">SVF::SymbolTableInfo::objMap</a></div><div class="ttdeci">IDToMemMapTy objMap</div><div class="ttdoc">map a memory sym id to its obj </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00091">SymbolTableInfo.h:91</a></div></div>
|
|
892
894
|
</div><!-- fragment -->
|
|
893
895
|
</div>
|
|
894
896
|
</div>
|
|
895
|
-
<a id="
|
|
896
|
-
<h2 class="memtitle"><span class="permalink"><a href="#
|
|
897
|
+
<a id="a2b0f2c6745d14a9f6447ed96484dddac"></a>
|
|
898
|
+
<h2 class="memtitle"><span class="permalink"><a href="#a2b0f2c6745d14a9f6447ed96484dddac">◆ </a></span>createObjTypeInfo()</h2>
|
|
897
899
|
|
|
898
900
|
<div class="memitem">
|
|
899
901
|
<div class="memproto">
|
|
@@ -905,7 +907,7 @@ Friends</h2></td></tr>
|
|
|
905
907
|
<td class="memname"><a class="el" href="classSVF_1_1ObjTypeInfo.html">ObjTypeInfo</a> * SymbolTableInfo::createObjTypeInfo </td>
|
|
906
908
|
<td>(</td>
|
|
907
909
|
<td class="paramtype">const <a class="el" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> * </td>
|
|
908
|
-
<td class="paramname"><em>type</em
|
|
910
|
+
<td class="paramname"><em>type</em></td><td>)</td>
|
|
909
911
|
<td></td>
|
|
910
912
|
</tr>
|
|
911
913
|
</table>
|
|
@@ -918,10 +920,12 @@ Friends</h2></td></tr>
|
|
|
918
920
|
|
|
919
921
|
<p>Create an objectInfo based on LLVM type (value is null, and type could be null, representing a dummy object) </p>
|
|
920
922
|
|
|
921
|
-
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#
|
|
922
|
-
<div class="fragment"><div class="line"><a name="
|
|
923
|
+
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00102">102</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
|
|
924
|
+
<div class="fragment"><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> {</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</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>(type, <a class="code" href="classSVF_1_1StInfo.html#ad6e599717952f8ccc2771cd72254b6b2">StInfo::getMaxFieldLimit</a>());</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordflow">if</span>(type && type->isPointerTy()){</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</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="l00107"></a><span class="lineno"> 107</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="l00108"></a><span class="lineno"> 108</span>  }</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keywordflow">return</span> typeInfo;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> }</div><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#l00603">SymbolTableInfo.h:603</a></div></div>
|
|
925
|
+
<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#l00654">SymbolTableInfo.h:654</a></div></div>
|
|
926
|
+
<div class="ttc" id="classSVF_1_1StInfo_html_ad6e599717952f8ccc2771cd72254b6b2"><div class="ttname"><a href="classSVF_1_1StInfo.html#ad6e599717952f8ccc2771cd72254b6b2">SVF::StInfo::getMaxFieldLimit</a></div><div class="ttdeci">static u32_t getMaxFieldLimit()</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00539">SymbolTableInfo.h:539</a></div></div>
|
|
927
|
+
<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#l00610">SymbolTableInfo.h:610</a></div></div>
|
|
923
928
|
<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#l00593">SymbolTableInfo.h:593</a></div></div>
|
|
924
|
-
<div class="ttc" id="classSVF_1_1ObjTypeInfo_html_a66692043a56c327ac7ac00cc3126cd78"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a66692043a56c327ac7ac00cc3126cd78">SVF::ObjTypeInfo::analyzeHeapObjType</a></div><div class="ttdeci">void analyzeHeapObjType(const Type *type)</div><div class="ttdoc">Analyse types of heap and static objects. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00602">SymbolTableInfo.cpp:602</a></div></div>
|
|
925
929
|
</div><!-- fragment -->
|
|
926
930
|
</div>
|
|
927
931
|
</div>
|
|
@@ -951,8 +955,8 @@ Friends</h2></td></tr>
|
|
|
951
955
|
<p>Clean up memory. </p>
|
|
952
956
|
<p>Destroy the memory for this symbol table after use </p>
|
|
953
957
|
|
|
954
|
-
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#
|
|
955
|
-
<div class="fragment"><div class="line"><a name="
|
|
958
|
+
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00292">292</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
|
|
959
|
+
<div class="fragment"><div class="line"><a name="l00293"></a><span class="lineno"> 293</span> {</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span> </div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  <span class="keywordflow">for</span> (IDToMemMapTy::iterator iter = <a class="code" href="classSVF_1_1SymbolTableInfo.html#aeab14702eabde827923a692cba8f7f8a">objMap</a>.begin(); iter != <a class="code" href="classSVF_1_1SymbolTableInfo.html#aeab14702eabde827923a692cba8f7f8a">objMap</a>.end();</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  ++iter)</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  {</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  <span class="keywordflow">if</span> (iter->second)</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  <span class="keyword">delete</span> iter->second;</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  }</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  <span class="keywordflow">for</span> (TypeToFieldInfoMap::iterator iter = <a class="code" href="classSVF_1_1SymbolTableInfo.html#ad8b9fa0a4e4b91efb80586e692bd0dcd">typeToFieldInfo</a>.begin();</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  iter != <a class="code" href="classSVF_1_1SymbolTableInfo.html#ad8b9fa0a4e4b91efb80586e692bd0dcd">typeToFieldInfo</a>.end(); ++iter)</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  {</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <span class="keywordflow">if</span> (iter->second)</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  <span class="keyword">delete</span> iter->second;</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  }</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span> </div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SymbolTableInfo.html#ae577a32079a8e95d0185bfc45d919635">dl</a>){</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  <span class="keyword">delete</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#ae577a32079a8e95d0185bfc45d919635">dl</a>;</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  <a class="code" href="classSVF_1_1SymbolTableInfo.html#ae577a32079a8e95d0185bfc45d919635">dl</a> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  }</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SymbolTableInfo.html#af8fdaaa03cd2ae9b7d50f57bc678b8ba">mod</a>){</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <span class="keyword">delete</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#af8fdaaa03cd2ae9b7d50f57bc678b8ba">mod</a>;</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  <a class="code" href="classSVF_1_1SymbolTableInfo.html#af8fdaaa03cd2ae9b7d50f57bc678b8ba">mod</a> = <span class="keyword">nullptr</span>;</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> }</div><div class="ttc" id="classSVF_1_1SymbolTableInfo_html_ad8b9fa0a4e4b91efb80586e692bd0dcd"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#ad8b9fa0a4e4b91efb80586e692bd0dcd">SVF::SymbolTableInfo::typeToFieldInfo</a></div><div class="ttdeci">TypeToFieldInfoMap typeToFieldInfo</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00398">SymbolTableInfo.h:398</a></div></div>
|
|
956
960
|
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_ae577a32079a8e95d0185bfc45d919635"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#ae577a32079a8e95d0185bfc45d919635">SVF::SymbolTableInfo::dl</a></div><div class="ttdeci">static DataLayout * dl</div><div class="ttdoc">Data layout on a target machine. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00085">SymbolTableInfo.h:85</a></div></div>
|
|
957
961
|
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_af8fdaaa03cd2ae9b7d50f57bc678b8ba"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#af8fdaaa03cd2ae9b7d50f57bc678b8ba">SVF::SymbolTableInfo::mod</a></div><div class="ttdeci">SVFModule * mod</div><div class="ttdoc">Module. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00099">SymbolTableInfo.h:99</a></div></div>
|
|
958
962
|
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_aeab14702eabde827923a692cba8f7f8a"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#aeab14702eabde827923a692cba8f7f8a">SVF::SymbolTableInfo::objMap</a></div><div class="ttdeci">IDToMemMapTy objMap</div><div class="ttdoc">map a memory sym id to its obj </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00091">SymbolTableInfo.h:91</a></div></div>
|
|
@@ -984,8 +988,8 @@ Friends</h2></td></tr>
|
|
|
984
988
|
|
|
985
989
|
<p>Another debug method. </p>
|
|
986
990
|
|
|
987
|
-
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#
|
|
988
|
-
<div class="fragment"><div class="line"><a name="
|
|
991
|
+
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00544">544</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
|
|
992
|
+
<div class="fragment"><div class="line"><a name="l00545"></a><span class="lineno"> 545</span> {</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>  <a class="code" href="namespaceSVF.html#aedf0d6718ca176e0b9e17ab4b30729c6">OrderedMap<SymID, Value*></a> idmap;</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>  <a class="code" href="namespaceSVF.html#ad11fe2412b2182365a662ff0e4639b48">SymID</a> maxid = 0;</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>  <span class="keywordflow">for</span> (ValueToIDMapTy::iterator iter = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a5054f95a7b77257ffb283044aab17b08">valSymMap</a>.begin(); iter != <a class="code" href="classSVF_1_1SymbolTableInfo.html#a5054f95a7b77257ffb283044aab17b08">valSymMap</a>.end();</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>  ++iter)</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>  {</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ad11fe2412b2182365a662ff0e4639b48">SymID</a> i = iter->second;</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>  maxid = max(i, maxid);</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>  <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val = (<a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>*) iter->first;</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>  idmap[i] = val;</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>  }</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>  <span class="keywordflow">for</span> (ValueToIDMapTy::iterator iter = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a5840b742ed8c73ece548b9b4aede07ec">objSymMap</a>.begin(); iter != <a class="code" href="classSVF_1_1SymbolTableInfo.html#a5840b742ed8c73ece548b9b4aede07ec">objSymMap</a>.end();</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  ++iter)</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>  {</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ad11fe2412b2182365a662ff0e4639b48">SymID</a> i = iter->second;</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>  maxid = max(i, maxid);</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>  <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val = (<a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>*) iter->first;</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  idmap[i] = val;</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>  }</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>  <span class="keywordflow">for</span> (FunToIDMapTy::iterator iter = <a class="code" href="classSVF_1_1SymbolTableInfo.html#ae6f8a4dbe09ff4756983ffdbed6d0681">returnSymMap</a>.begin(); iter != <a class="code" href="classSVF_1_1SymbolTableInfo.html#ae6f8a4dbe09ff4756983ffdbed6d0681">returnSymMap</a>.end();</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  ++iter)</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> <a class="code" href="namespaceSVF.html#ad11fe2412b2182365a662ff0e4639b48">SymID</a> i = iter->second;</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>  maxid = max(i, maxid);</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>  <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val = (<a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>*) iter->first;</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>  idmap[i] = val;</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>  }</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>  <span class="keywordflow">for</span> (FunToIDMapTy::iterator iter = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a94c06e5ac0b50989743a9e63c9a6d5b9">varargSymMap</a>.begin(); iter != <a class="code" href="classSVF_1_1SymbolTableInfo.html#a94c06e5ac0b50989743a9e63c9a6d5b9">varargSymMap</a>.end();</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>  ++iter)</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>  {</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ad11fe2412b2182365a662ff0e4639b48">SymID</a> i = iter->second;</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>  maxid = max(i, maxid);</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>  <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val = (<a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>*) iter->first;</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  idmap[i] = val;</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>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">"{SymbolTableInfo \n"</span>;</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> iter : idmap) {</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << iter.first << <span class="stringliteral">" "</span> << <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">value2String</a>(iter.second) << <span class="stringliteral">"\n"</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>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">"}\n"</span>;</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span> }</div><div class="ttc" id="namespaceSVF_html_ad11fe2412b2182365a662ff0e4639b48"><div class="ttname"><a href="namespaceSVF.html#ad11fe2412b2182365a662ff0e4639b48">SVF::SymID</a></div><div class="ttdeci">unsigned SymID</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00082">SVFBasicTypes.h:82</a></div></div>
|
|
989
993
|
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a94c06e5ac0b50989743a9e63c9a6d5b9"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a94c06e5ac0b50989743a9e63c9a6d5b9">SVF::SymbolTableInfo::varargSymMap</a></div><div class="ttdeci">FunToIDMapTy varargSymMap</div><div class="ttdoc">vararg map </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00090">SymbolTableInfo.h:90</a></div></div>
|
|
990
994
|
<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#l00390">SVFUtil.cpp:390</a></div></div>
|
|
991
995
|
<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#l00088">SymbolTableInfo.h:88</a></div></div>
|
|
@@ -1148,9 +1152,9 @@ Friends</h2></td></tr>
|
|
|
1148
1152
|
<p>Flatterned offset information of a struct or an array including its array fields. </p>
|
|
1149
1153
|
<p>When <a class="el" href="classSVF_1_1Options.html#a170426acc0f9d99470fd1bde40d273e2">Options::ModelArrays</a> is disabled, any element index Array is modeled as the base </p>
|
|
1150
1154
|
|
|
1151
|
-
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#
|
|
1152
|
-
<div class="fragment"><div class="line"><a name="
|
|
1153
|
-
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_aeb3f594076c60fc313c29d282f347f08"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#aeb3f594076c60fc313c29d282f347f08">SVF::SymbolTableInfo::getStructInfoIter</a></div><div class="ttdeci">TypeToFieldInfoMap::iterator getStructInfoIter(const Type *T)</div><div class="ttdoc">Get struct info. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#
|
|
1155
|
+
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00409">409</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
|
|
1156
|
+
<div class="fragment"><div class="line"><a name="l00410"></a><span class="lineno"> 410</span> {</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1Options.html#a170426acc0f9d99470fd1bde40d273e2">Options::ModelArrays</a>){</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  std::vector<u32_t>& so = <a class="code" href="classSVF_1_1SymbolTableInfo.html#aeb3f594076c60fc313c29d282f347f08">getStructInfoIter</a>(T)->second->getFlattenedElemIdxVec();</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a> ((<span class="keywordtype">unsigned</span>)origId <= so.size() && !so.empty() && <span class="stringliteral">"Array index out of bounds, can't get flattened index!"</span>);</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  <span class="keywordflow">return</span> so[origId];</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  }</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  <span class="keywordflow">else</span>{</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  <span class="keywordflow">if</span>(SVFUtil::isa<StructType>(T)){</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  std::vector<u32_t>& so = <a class="code" href="classSVF_1_1SymbolTableInfo.html#aeb3f594076c60fc313c29d282f347f08">getStructInfoIter</a>(T)->second->getFlattenedFieldIdxVec();</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a> ((<span class="keywordtype">unsigned</span>)origId <= so.size() && !so.empty() && <span class="stringliteral">"Struct index out of bounds, can't get flattened index!"</span>);</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  <span class="keywordflow">return</span> so[origId];</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  }</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  <span class="keywordflow">else</span>{</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(SVFUtil::isa<ArrayType>(T) && <span class="stringliteral">"Only accept struct or array type if Options::ModelArrays is disabled!"</span>);</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  <span class="keywordflow">return</span> 0;</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>  }</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</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>
|
|
1157
|
+
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_aeb3f594076c60fc313c29d282f347f08"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#aeb3f594076c60fc313c29d282f347f08">SVF::SymbolTableInfo::getStructInfoIter</a></div><div class="ttdeci">TypeToFieldInfoMap::iterator getStructInfoIter(const Type *T)</div><div class="ttdoc">Get struct info. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00086">SymbolTableInfo.cpp:86</a></div></div>
|
|
1154
1158
|
<div class="ttc" id="classSVF_1_1Options_html_a170426acc0f9d99470fd1bde40d273e2"><div class="ttname"><a href="classSVF_1_1Options.html#a170426acc0f9d99470fd1bde40d273e2">SVF::Options::ModelArrays</a></div><div class="ttdeci">static const llvm::cl::opt< bool > ModelArrays</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00214">Options.h:214</a></div></div>
|
|
1155
1159
|
</div><!-- fragment -->
|
|
1156
1160
|
</div>
|
|
@@ -1171,8 +1175,8 @@ Friends</h2></td></tr>
|
|
|
1171
1175
|
</table>
|
|
1172
1176
|
</div><div class="memdoc">
|
|
1173
1177
|
|
|
1174
|
-
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#
|
|
1175
|
-
<div class="fragment"><div class="line"><a name="
|
|
1178
|
+
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00430">430</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
|
|
1179
|
+
<div class="fragment"><div class="line"><a name="l00431"></a><span class="lineno"> 431</span> {</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#aeb3f594076c60fc313c29d282f347f08">getStructInfoIter</a>(T)->second->getFlattenedFieldInfoVec();</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span> }</div><div class="ttc" id="classSVF_1_1SymbolTableInfo_html_aeb3f594076c60fc313c29d282f347f08"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#aeb3f594076c60fc313c29d282f347f08">SVF::SymbolTableInfo::getStructInfoIter</a></div><div class="ttdeci">TypeToFieldInfoMap::iterator getStructInfoIter(const Type *T)</div><div class="ttdoc">Get struct info. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00086">SymbolTableInfo.cpp:86</a></div></div>
|
|
1176
1180
|
</div><!-- fragment -->
|
|
1177
1181
|
</div>
|
|
1178
1182
|
</div>
|
|
@@ -1202,8 +1206,8 @@ Friends</h2></td></tr>
|
|
|
1202
1206
|
</table>
|
|
1203
1207
|
</div><div class="memdoc">
|
|
1204
1208
|
|
|
1205
|
-
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#
|
|
1206
|
-
<div class="fragment"><div class="line"><a name="
|
|
1209
|
+
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00440">440</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
|
|
1210
|
+
<div class="fragment"><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>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#aeb3f594076c60fc313c29d282f347f08">getStructInfoIter</a>(baseType)->second->getFlatternedFieldType(field_idx);</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span> }</div><div class="ttc" id="classSVF_1_1SymbolTableInfo_html_aeb3f594076c60fc313c29d282f347f08"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#aeb3f594076c60fc313c29d282f347f08">SVF::SymbolTableInfo::getStructInfoIter</a></div><div class="ttdeci">TypeToFieldInfoMap::iterator getStructInfoIter(const Type *T)</div><div class="ttdoc">Get struct info. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00086">SymbolTableInfo.cpp:86</a></div></div>
|
|
1207
1211
|
</div><!-- fragment -->
|
|
1208
1212
|
</div>
|
|
1209
1213
|
</div>
|
|
@@ -1331,12 +1335,12 @@ Friends</h2></td></tr>
|
|
|
1331
1335
|
<p>Get modulus offset given the type information </p>
|
|
1332
1336
|
<p>if the offset is negative, it's possible that we're looking for an obj node out of range of current struct. Make the offset positive so we can still get a node within current struct to represent this obj. </p>
|
|
1333
1337
|
|
|
1334
|
-
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#
|
|
1335
|
-
<div class="fragment"><div class="line"><a name="
|
|
1338
|
+
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00265">265</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
|
|
1339
|
+
<div class="fragment"><div class="line"><a name="l00266"></a><span class="lineno"> 266</span> {</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span> </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="namespaceSVF.html#abe09d99af006554a5c00803e9a89f9a6">s64_t</a> offset = ls.<a class="code" href="classSVF_1_1LocationSet.html#ab987c41ffdae931d941f89d03ed09146">accumulateConstantFieldIdx</a>();</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <span class="keywordflow">if</span>(offset < 0)</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  {</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">writeWrnMsg</a>(<span class="stringliteral">"try to create a gep node with negative offset."</span>);</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  offset = abs(offset);</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  }</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> maxOffset = obj-><a class="code" href="classSVF_1_1MemObj.html#a51be7ad70bc2c6a4230bd2f6b86bdc88">getMaxFieldOffsetLimit</a>();</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="keywordflow">if</span> (maxOffset != 0)</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  offset = offset % maxOffset;</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  offset = 0;</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span> </div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>(offset);</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span> }</div><div class="ttc" id="classSVF_1_1LocationSet_html_ab987c41ffdae931d941f89d03ed09146"><div class="ttname"><a href="classSVF_1_1LocationSet.html#ab987c41ffdae931d941f89d03ed09146">SVF::LocationSet::accumulateConstantFieldIdx</a></div><div class="ttdeci">s64_t accumulateConstantFieldIdx() const</div><div class="ttdoc">Get methods. </div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00114">LocationSet.h:114</a></div></div>
|
|
1336
1340
|
<div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00075">SVFBasicTypes.h:75</a></div></div>
|
|
1337
1341
|
<div class="ttc" id="namespaceSVF_html_abe09d99af006554a5c00803e9a89f9a6"><div class="ttname"><a href="namespaceSVF.html#abe09d99af006554a5c00803e9a89f9a6">SVF::s64_t</a></div><div class="ttdeci">signed s64_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00078">SVFBasicTypes.h:78</a></div></div>
|
|
1338
1342
|
<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#l00069">SVFUtil.cpp:69</a></div></div>
|
|
1339
|
-
<div class="ttc" id="classSVF_1_1MemObj_html_a51be7ad70bc2c6a4230bd2f6b86bdc88"><div class="ttname"><a href="classSVF_1_1MemObj.html#a51be7ad70bc2c6a4230bd2f6b86bdc88">SVF::MemObj::getMaxFieldOffsetLimit</a></div><div class="ttdeci">u32_t getMaxFieldOffsetLimit() const</div><div class="ttdoc">Get max field offset limit. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#
|
|
1343
|
+
<div class="ttc" id="classSVF_1_1MemObj_html_a51be7ad70bc2c6a4230bd2f6b86bdc88"><div class="ttname"><a href="classSVF_1_1MemObj.html#a51be7ad70bc2c6a4230bd2f6b86bdc88">SVF::MemObj::getMaxFieldOffsetLimit</a></div><div class="ttdeci">u32_t getMaxFieldOffsetLimit() const</div><div class="ttdoc">Get max field offset limit. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00702">SymbolTableInfo.cpp:702</a></div></div>
|
|
1340
1344
|
<div class="ttc" id="classSVF_1_1LocationSet_html"><div class="ttname"><a href="classSVF_1_1LocationSet.html">SVF::LocationSet</a></div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00072">LocationSet.h:72</a></div></div>
|
|
1341
1345
|
</div><!-- fragment -->
|
|
1342
1346
|
</div>
|
|
@@ -1360,8 +1364,8 @@ Friends</h2></td></tr>
|
|
|
1360
1364
|
<p>Number of flattenned elements of an array or struct. </p>
|
|
1361
1365
|
<p>Get a reference to the components of struct_info. Number of flattenned elements of an array or struct </p>
|
|
1362
1366
|
|
|
1363
|
-
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#
|
|
1364
|
-
<div class="fragment"><div class="line"><a name="
|
|
1367
|
+
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00400">400</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
|
|
1368
|
+
<div class="fragment"><div class="line"><a name="l00401"></a><span class="lineno"> 401</span> {</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1Options.html#a170426acc0f9d99470fd1bde40d273e2">Options::ModelArrays</a>)</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#aeb3f594076c60fc313c29d282f347f08">getStructInfoIter</a>(T)->second->getNumOfFlattenElements();</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#aeb3f594076c60fc313c29d282f347f08">getStructInfoIter</a>(T)->second->getNumOfFlattenFields();</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span> }</div><div class="ttc" id="classSVF_1_1SymbolTableInfo_html_aeb3f594076c60fc313c29d282f347f08"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#aeb3f594076c60fc313c29d282f347f08">SVF::SymbolTableInfo::getStructInfoIter</a></div><div class="ttdeci">TypeToFieldInfoMap::iterator getStructInfoIter(const Type *T)</div><div class="ttdoc">Get struct info. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00086">SymbolTableInfo.cpp:86</a></div></div>
|
|
1365
1369
|
<div class="ttc" id="classSVF_1_1Options_html_a170426acc0f9d99470fd1bde40d273e2"><div class="ttname"><a href="classSVF_1_1Options.html#a170426acc0f9d99470fd1bde40d273e2">SVF::Options::ModelArrays</a></div><div class="ttdeci">static const llvm::cl::opt< bool > ModelArrays</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00214">Options.h:214</a></div></div>
|
|
1366
1370
|
</div><!-- fragment -->
|
|
1367
1371
|
</div>
|
|
@@ -1454,8 +1458,8 @@ Friends</h2></td></tr>
|
|
|
1454
1458
|
</div><div class="memdoc">
|
|
1455
1459
|
<p>struct A { int id; int salary; }; struct B { char name[20]; struct A a;} B b; OriginalFieldType of b with field_idx 1 : Struct A FlatternedFieldType of b with field_idx 1 : int </p>
|
|
1456
1460
|
|
|
1457
|
-
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#
|
|
1458
|
-
<div class="fragment"><div class="line"><a name="
|
|
1461
|
+
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00435">435</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
|
|
1462
|
+
<div class="fragment"><div class="line"><a name="l00436"></a><span class="lineno"> 436</span> {</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#aeb3f594076c60fc313c29d282f347f08">getStructInfoIter</a>(baseType)->second->getOriginalFieldType(field_idx);</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span> }</div><div class="ttc" id="classSVF_1_1SymbolTableInfo_html_aeb3f594076c60fc313c29d282f347f08"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#aeb3f594076c60fc313c29d282f347f08">SVF::SymbolTableInfo::getStructInfoIter</a></div><div class="ttdeci">TypeToFieldInfoMap::iterator getStructInfoIter(const Type *T)</div><div class="ttdoc">Get struct info. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00086">SymbolTableInfo.cpp:86</a></div></div>
|
|
1459
1463
|
</div><!-- fragment -->
|
|
1460
1464
|
</div>
|
|
1461
1465
|
</div>
|
|
@@ -1516,7 +1520,7 @@ Friends</h2></td></tr>
|
|
|
1516
1520
|
<p>Get a reference to StructInfo. </p>
|
|
1517
1521
|
|
|
1518
1522
|
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8h_source.html#l00350">350</a> of file <a class="el" href="SymbolTableInfo_8h_source.html">SymbolTableInfo.h</a>.</p>
|
|
1519
|
-
<div class="fragment"><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  {</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#aeb3f594076c60fc313c29d282f347f08">getStructInfoIter</a>(T)->second;</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  }</div><div class="ttc" id="classSVF_1_1SymbolTableInfo_html_aeb3f594076c60fc313c29d282f347f08"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#aeb3f594076c60fc313c29d282f347f08">SVF::SymbolTableInfo::getStructInfoIter</a></div><div class="ttdeci">TypeToFieldInfoMap::iterator getStructInfoIter(const Type *T)</div><div class="ttdoc">Get struct info. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#
|
|
1523
|
+
<div class="fragment"><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  {</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#aeb3f594076c60fc313c29d282f347f08">getStructInfoIter</a>(T)->second;</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  }</div><div class="ttc" id="classSVF_1_1SymbolTableInfo_html_aeb3f594076c60fc313c29d282f347f08"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#aeb3f594076c60fc313c29d282f347f08">SVF::SymbolTableInfo::getStructInfoIter</a></div><div class="ttdeci">TypeToFieldInfoMap::iterator getStructInfoIter(const Type *T)</div><div class="ttdoc">Get struct info. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00086">SymbolTableInfo.cpp:86</a></div></div>
|
|
1520
1524
|
</div><!-- fragment -->
|
|
1521
1525
|
</div>
|
|
1522
1526
|
</div>
|
|
@@ -1539,10 +1543,10 @@ Friends</h2></td></tr>
|
|
|
1539
1543
|
<p>Get struct info. </p>
|
|
1540
1544
|
<p>Get an iterator for StructInfo, designed as internal methods </p>
|
|
1541
1545
|
|
|
1542
|
-
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#
|
|
1543
|
-
<div class="fragment"><div class="line"><a name="
|
|
1546
|
+
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00086">86</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
|
|
1547
|
+
<div class="fragment"><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> {</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(T);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  TypeToFieldInfoMap::iterator it = <a class="code" href="classSVF_1_1SymbolTableInfo.html#ad8b9fa0a4e4b91efb80586e692bd0dcd">typeToFieldInfo</a>.find(T);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keywordflow">if</span> (it != <a class="code" href="classSVF_1_1SymbolTableInfo.html#ad8b9fa0a4e4b91efb80586e692bd0dcd">typeToFieldInfo</a>.end())</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keywordflow">return</span> it;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  {</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <a class="code" href="classSVF_1_1SymbolTableInfo.html#aa99cab5480116905dd41ab0ad24b9462">collectTypeInfo</a>(T);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#ad8b9fa0a4e4b91efb80586e692bd0dcd">typeToFieldInfo</a>.find(T);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  }</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> }</div><div class="ttc" id="classSVF_1_1SymbolTableInfo_html_ad8b9fa0a4e4b91efb80586e692bd0dcd"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#ad8b9fa0a4e4b91efb80586e692bd0dcd">SVF::SymbolTableInfo::typeToFieldInfo</a></div><div class="ttdeci">TypeToFieldInfoMap typeToFieldInfo</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00398">SymbolTableInfo.h:398</a></div></div>
|
|
1544
1548
|
<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>
|
|
1545
|
-
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_aa99cab5480116905dd41ab0ad24b9462"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#aa99cab5480116905dd41ab0ad24b9462">SVF::SymbolTableInfo::collectTypeInfo</a></div><div class="ttdeci">void collectTypeInfo(const Type *T)</div><div class="ttdoc">Collect type info. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#
|
|
1549
|
+
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_aa99cab5480116905dd41ab0ad24b9462"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#aa99cab5480116905dd41ab0ad24b9462">SVF::SymbolTableInfo::collectTypeInfo</a></div><div class="ttdeci">void collectTypeInfo(const Type *T)</div><div class="ttdoc">Collect type info. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00128">SymbolTableInfo.cpp:128</a></div></div>
|
|
1546
1550
|
</div><!-- fragment -->
|
|
1547
1551
|
</div>
|
|
1548
1552
|
</div>
|
|
@@ -1594,8 +1598,8 @@ Friends</h2></td></tr>
|
|
|
1594
1598
|
|
|
1595
1599
|
<p>Helper method to get the size of the type from target data layout. </p>
|
|
1596
1600
|
|
|
1597
|
-
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#
|
|
1598
|
-
<div class="fragment"><div class="line"><a name="
|
|
1601
|
+
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00590">590</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
|
|
1602
|
+
<div class="fragment"><div class="line"><a name="l00591"></a><span class="lineno"> 591</span> {</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span> </div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>  <span class="comment">// if the type has size then simply return it, otherwise just return 0</span></div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>  <span class="keywordflow">if</span>(type->isSized())</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a5fad3e11fbba831ed0940fb715e7dc2d">getDataLayout</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#a9fe3fa15a6a0ec25864cb8439a45596e">getMainLLVMModule</a>())->getTypeStoreSize(const_cast<Type*>(type));</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>  <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span> }</div><div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a5fad3e11fbba831ed0940fb715e7dc2d"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a5fad3e11fbba831ed0940fb715e7dc2d">SVF::SymbolTableInfo::getDataLayout</a></div><div class="ttdeci">static DataLayout * getDataLayout(Module *mod)</div><div class="ttdoc">Get target machine data layout. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00169">SymbolTableInfo.h:169</a></div></div>
|
|
1599
1603
|
<div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a9fe3fa15a6a0ec25864cb8439a45596e"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a9fe3fa15a6a0ec25864cb8439a45596e">SVF::LLVMModuleSet::getMainLLVMModule</a></div><div class="ttdeci">Module * getMainLLVMModule() const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00193">LLVMModule.h:193</a></div></div>
|
|
1600
1604
|
<div class="ttc" id="classSVF_1_1LLVMModuleSet_html_acf40310917909e4234282c0695a43160"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">SVF::LLVMModuleSet::getLLVMModuleSet</a></div><div class="ttdeci">static LLVMModuleSet * getLLVMModuleSet()</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00069">LLVMModule.h:69</a></div></div>
|
|
1601
1605
|
</div><!-- fragment -->
|
|
@@ -1628,8 +1632,8 @@ Friends</h2></td></tr>
|
|
|
1628
1632
|
</div><div class="memdoc">
|
|
1629
1633
|
<p>if this struct type does not have any element, i.e., opaque </p>
|
|
1630
1634
|
|
|
1631
|
-
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#
|
|
1632
|
-
<div class="fragment"><div class="line"><a name="
|
|
1635
|
+
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00600">600</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
|
|
1636
|
+
<div class="fragment"><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> </div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a52c8654c221bb53a59f70ea3cb1e5c45">StructLayout</a> *stTySL = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a5fad3e11fbba831ed0940fb715e7dc2d">getDataLayout</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()->getMainLLVMModule())->getStructLayout( const_cast<StructType *>(sty) );</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>  <span class="keywordflow">if</span>(sty->isOpaque())</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>  <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>  <span class="keywordflow">return</span> stTySL->getElementOffset(field_idx);</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span> }</div><div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a5fad3e11fbba831ed0940fb715e7dc2d"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a5fad3e11fbba831ed0940fb715e7dc2d">SVF::SymbolTableInfo::getDataLayout</a></div><div class="ttdeci">static DataLayout * getDataLayout(Module *mod)</div><div class="ttdoc">Get target machine data layout. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00169">SymbolTableInfo.h:169</a></div></div>
|
|
1633
1637
|
<div class="ttc" id="namespaceSVF_html_a52c8654c221bb53a59f70ea3cb1e5c45"><div class="ttname"><a href="namespaceSVF.html#a52c8654c221bb53a59f70ea3cb1e5c45">SVF::StructLayout</a></div><div class="ttdeci">llvm::StructLayout StructLayout</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00116">BasicTypes.h:116</a></div></div>
|
|
1634
1638
|
<div class="ttc" id="classSVF_1_1LLVMModuleSet_html_acf40310917909e4234282c0695a43160"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">SVF::LLVMModuleSet::getLLVMModuleSet</a></div><div class="ttdeci">static LLVMModuleSet * getLLVMModuleSet()</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00069">LLVMModule.h:69</a></div></div>
|
|
1635
1639
|
</div><!-- fragment -->
|
|
@@ -1664,9 +1668,9 @@ Friends</h2></td></tr>
|
|
|
1664
1668
|
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8h_source.html#l00250">250</a> of file <a class="el" href="SymbolTableInfo_8h_source.html">SymbolTableInfo.h</a>.</p>
|
|
1665
1669
|
<div class="fragment"><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  {</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span> </div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SymbolTableInfo.html#a65a7e9d6d238a04291cb7d0aa15ece90">isNullPtrSym</a>(val))</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#adaed6e68c2f53260ed4c4fc38b5c4721">nullPtrSymID</a>();</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SymbolTableInfo.html#ab15112d3900f28525848cbe5fad37deb">isBlackholeSym</a>(val))</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a1689fa03795200b501ae3887906e7e72">blkPtrSymID</a>();</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  {</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  ValueToIDMapTy::const_iterator iter = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a5054f95a7b77257ffb283044aab17b08">valSymMap</a>.find(val);</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(iter!=<a class="code" href="classSVF_1_1SymbolTableInfo.html#a5054f95a7b77257ffb283044aab17b08">valSymMap</a>.end() &&<span class="stringliteral">"value sym not found"</span>);</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <span class="keywordflow">return</span> iter->second;</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  }</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</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>
|
|
1666
1670
|
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_adaed6e68c2f53260ed4c4fc38b5c4721"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#adaed6e68c2f53260ed4c4fc38b5c4721">SVF::SymbolTableInfo::nullPtrSymID</a></div><div class="ttdeci">SymID nullPtrSymID() const</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00229">SymbolTableInfo.h:229</a></div></div>
|
|
1667
|
-
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_ab15112d3900f28525848cbe5fad37deb"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#ab15112d3900f28525848cbe5fad37deb">SVF::SymbolTableInfo::isBlackholeSym</a></div><div class="ttdeci">static bool isBlackholeSym(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#
|
|
1671
|
+
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_ab15112d3900f28525848cbe5fad37deb"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#ab15112d3900f28525848cbe5fad37deb">SVF::SymbolTableInfo::isBlackholeSym</a></div><div class="ttdeci">static bool isBlackholeSym(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00333">SymbolTableInfo.cpp:333</a></div></div>
|
|
1668
1672
|
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a1689fa03795200b501ae3887906e7e72"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a1689fa03795200b501ae3887906e7e72">SVF::SymbolTableInfo::blkPtrSymID</a></div><div class="ttdeci">SymID blkPtrSymID() const</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00224">SymbolTableInfo.h:224</a></div></div>
|
|
1669
|
-
<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#
|
|
1673
|
+
<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#l00321">SymbolTableInfo.cpp:321</a></div></div>
|
|
1670
1674
|
<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#l00087">SymbolTableInfo.h:87</a></div></div>
|
|
1671
1675
|
</div><!-- fragment -->
|
|
1672
1676
|
</div>
|
|
@@ -1726,8 +1730,8 @@ Friends</h2></td></tr>
|
|
|
1726
1730
|
</div><div class="memdoc">
|
|
1727
1731
|
|
|
1728
1732
|
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8h_source.html#l00265">265</a> of file <a class="el" href="SymbolTableInfo_8h_source.html">SymbolTableInfo.h</a>.</p>
|
|
1729
|
-
<div class="fragment"><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  {</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SymbolTableInfo.html#a65a7e9d6d238a04291cb7d0aa15ece90">isNullPtrSym</a>(val) || <a class="code" href="classSVF_1_1SymbolTableInfo.html#ab15112d3900f28525848cbe5fad37deb">isBlackholeSym</a>(val))</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  <span class="keywordflow">return</span> (<a class="code" href="classSVF_1_1SymbolTableInfo.html#a5054f95a7b77257ffb283044aab17b08">valSymMap</a>.find(val) != <a class="code" href="classSVF_1_1SymbolTableInfo.html#a5054f95a7b77257ffb283044aab17b08">valSymMap</a>.end());</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  }</div><div class="ttc" id="classSVF_1_1SymbolTableInfo_html_ab15112d3900f28525848cbe5fad37deb"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#ab15112d3900f28525848cbe5fad37deb">SVF::SymbolTableInfo::isBlackholeSym</a></div><div class="ttdeci">static bool isBlackholeSym(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#
|
|
1730
|
-
<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#
|
|
1733
|
+
<div class="fragment"><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  {</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SymbolTableInfo.html#a65a7e9d6d238a04291cb7d0aa15ece90">isNullPtrSym</a>(val) || <a class="code" href="classSVF_1_1SymbolTableInfo.html#ab15112d3900f28525848cbe5fad37deb">isBlackholeSym</a>(val))</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  <span class="keywordflow">return</span> (<a class="code" href="classSVF_1_1SymbolTableInfo.html#a5054f95a7b77257ffb283044aab17b08">valSymMap</a>.find(val) != <a class="code" href="classSVF_1_1SymbolTableInfo.html#a5054f95a7b77257ffb283044aab17b08">valSymMap</a>.end());</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  }</div><div class="ttc" id="classSVF_1_1SymbolTableInfo_html_ab15112d3900f28525848cbe5fad37deb"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#ab15112d3900f28525848cbe5fad37deb">SVF::SymbolTableInfo::isBlackholeSym</a></div><div class="ttdeci">static bool isBlackholeSym(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00333">SymbolTableInfo.cpp:333</a></div></div>
|
|
1734
|
+
<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#l00321">SymbolTableInfo.cpp:321</a></div></div>
|
|
1731
1735
|
<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#l00087">SymbolTableInfo.h:87</a></div></div>
|
|
1732
1736
|
</div><!-- fragment -->
|
|
1733
1737
|
</div>
|
|
@@ -1785,8 +1789,8 @@ Friends</h2></td></tr>
|
|
|
1785
1789
|
</div><div class="memdoc">
|
|
1786
1790
|
<p>Check whether this value is a black hole </p>
|
|
1787
1791
|
|
|
1788
|
-
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#
|
|
1789
|
-
<div class="fragment"><div class="line"><a name="
|
|
1792
|
+
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00333">333</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
|
|
1793
|
+
<div class="fragment"><div class="line"><a name="l00334"></a><span class="lineno"> 334</span> {</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  <span class="keywordflow">return</span> (SVFUtil::isa<UndefValue>(val));</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span> }</div></div><!-- fragment -->
|
|
1790
1794
|
</div>
|
|
1791
1795
|
</div>
|
|
1792
1796
|
<a id="ad9cdb21e20182f3bc95f04bbb97712f3"></a>
|
|
@@ -1923,8 +1927,8 @@ Friends</h2></td></tr>
|
|
|
1923
1927
|
</div><div class="memdoc">
|
|
1924
1928
|
<p>Check whether this value points-to a constant object </p>
|
|
1925
1929
|
|
|
1926
|
-
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#
|
|
1927
|
-
<div class="fragment"><div class="line"><a name="
|
|
1930
|
+
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00341">341</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
|
|
1931
|
+
<div class="fragment"><div class="line"><a name="l00342"></a><span class="lineno"> 342</span> {</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* v = SVFUtil::dyn_cast<GlobalVariable>(val))</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  {</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1cppUtil.html#aeef0f5c6486379043a7d47b0635f2667">cppUtil::isValVtbl</a>(v))</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!v->hasInitializer()){</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  <span class="keywordflow">if</span>(v->isExternalLinkage(v->getLinkage()))</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</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>  <span class="keywordflow">else</span></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>  <a class="code" href="classSVF_1_1StInfo.html">StInfo</a> *stInfo = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a90bca8ff906ea48fb5e3a69da463ccab">getStructInfo</a>(v->getInitializer()->getType());</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  <span class="keyword">const</span> std::vector<FlattenedFieldInfo> &fields = stInfo-><a class="code" href="classSVF_1_1StInfo.html#ab5908115f11eccee61bd0759a51d5af0">getFlattenedFieldInfoVec</a>();</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  <span class="keywordflow">for</span> (std::vector<FlattenedFieldInfo>::const_iterator it = fields.begin(), eit = fields.end(); it != eit; ++it)</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  {</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1FlattenedFieldInfo.html">FlattenedFieldInfo</a> &field = *it;</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *elemTy = field.<a class="code" href="classSVF_1_1FlattenedFieldInfo.html#a92c1b65c36feeabf09541c9af4650f14">getFlattenElemTy</a>();</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(!SVFUtil::isa<FunctionType>(elemTy) && <span class="stringliteral">"Initializer of a global is a function?"</span>);</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  <span class="keywordflow">if</span> (SVFUtil::isa<PointerType>(elemTy))</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  }</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span> </div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  <span class="keywordflow">return</span> v->isConstant();</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  }</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  }</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a9e85d445e8b7b205134acd3874bba388">SVFUtil::isConstantData</a>(val);</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span> }</div><div class="ttc" id="namespaceSVF_html_a1d008c0666c145622b81d427be64c52d"><div class="ttname"><a href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">SVF::Type</a></div><div class="ttdeci">llvm::Type Type</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00075">BasicTypes.h:75</a></div></div>
|
|
1928
1932
|
<div class="ttc" id="namespaceSVF_html_a09f5fa3bc44bf53612a085e3a611cc4e"><div class="ttname"><a href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">SVF::GlobalVariable</a></div><div class="ttdeci">llvm::GlobalVariable GlobalVariable</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00083">BasicTypes.h:83</a></div></div>
|
|
1929
1933
|
<div class="ttc" id="classSVF_1_1FlattenedFieldInfo_html_a92c1b65c36feeabf09541c9af4650f14"><div class="ttname"><a href="classSVF_1_1FlattenedFieldInfo.html#a92c1b65c36feeabf09541c9af4650f14">SVF::FlattenedFieldInfo::getFlattenElemTy</a></div><div class="ttdeci">const Type * getFlattenElemTy() const</div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00059">LocationSet.h:59</a></div></div>
|
|
1930
1934
|
<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>
|
|
@@ -1993,8 +1997,8 @@ Friends</h2></td></tr>
|
|
|
1993
1997
|
<p>special value </p>
|
|
1994
1998
|
<p>Check whether this value is null pointer </p>
|
|
1995
1999
|
|
|
1996
|
-
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#
|
|
1997
|
-
<div class="fragment"><div class="line"><a name="
|
|
2000
|
+
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00321">321</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
|
|
2001
|
+
<div class="fragment"><div class="line"><a name="l00322"></a><span class="lineno"> 322</span> {</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">Constant</a>* v = SVFUtil::dyn_cast<Constant>(val))</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  {</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  <span class="keywordflow">return</span> v->isNullValue() && v->getType()->isPointerTy();</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  }</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span> }</div><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="BasicTypes_8h_source.html#l00123">BasicTypes.h:123</a></div></div>
|
|
1998
2002
|
</div><!-- fragment -->
|
|
1999
2003
|
</div>
|
|
2000
2004
|
</div>
|
|
@@ -2073,8 +2077,8 @@ Friends</h2></td></tr>
|
|
|
2073
2077
|
<p>Debug method. </p>
|
|
2074
2078
|
<p>All rest types are scalar type? </p>
|
|
2075
2079
|
|
|
2076
|
-
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#
|
|
2077
|
-
<div class="fragment"><div class="line"><a name="l00434"></a><span class="lineno"> 434</span> {</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>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a146d286041987860388da3d8bc85cee3">ArrayType</a> *at = SVFUtil::dyn_cast<ArrayType> (type))</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>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() <<<span class="stringliteral">" {Type: "</span>;</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  at->print(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>());</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">"}\n"</span>;</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">"\tarray type "</span>;</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">"\t [element size = "</span> << <a class="code" href="classSVF_1_1SymbolTableInfo.html#af4239ff717303dee25f1f4ba60070f9e">getTypeSizeInBytes</a>(at->getElementType()) << <span class="stringliteral">"]\n"</span>;</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  }</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span> </div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  <span class="keywordflow">else</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> (type))</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  {</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() <<<span class="stringliteral">" {Type: "</span>;</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  st->print(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>());</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">"}\n"</span>;</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  std::vector<FlattenedFieldInfo>& finfo = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a90bca8ff906ea48fb5e3a69da463ccab">getStructInfo</a>(st)-><a class="code" href="classSVF_1_1StInfo.html#ab5908115f11eccee61bd0759a51d5af0">getFlattenedFieldInfoVec</a>();</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  <span class="keywordtype">int</span> field_idx = 0;</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  <span class="keywordflow">for</span>(std::vector<FlattenedFieldInfo>::iterator it = finfo.begin(), eit = finfo.end();</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  it!=eit; ++it, field_idx++)</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  {</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">" \tField_idx = "</span> << (*it).getFlattenFldIdx();</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">", field type: "</span>;</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  (*it).getFlattenElemTy()->print(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>());</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">", field size: "</span> << <a class="code" href="classSVF_1_1SymbolTableInfo.html#af4239ff717303dee25f1f4ba60070f9e">getTypeSizeInBytes</a>((*it).getFlattenElemTy());</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">"\n"</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>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">"\n"</span>;</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> </div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>* pt= SVFUtil::dyn_cast<PointerType> (type))</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  {</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> sizeInBits = <a class="code" href="classSVF_1_1SymbolTableInfo.html#af4239ff717303dee25f1f4ba60070f9e">getTypeSizeInBytes</a>(type);</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> eSize = <a class="code" href="classSVF_1_1SymbolTableInfo.html#af4239ff717303dee25f1f4ba60070f9e">getTypeSizeInBytes</a>(pt->getElementType());</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">" {Type: "</span>;</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  pt->print(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>());</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">"}\n"</span>;</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() <<<span class="stringliteral">"\t [pointer size = "</span> << sizeInBits << <span class="stringliteral">"]"</span>;</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() <<<span class="stringliteral">"\t [target size = "</span> << eSize << <span class="stringliteral">"]\n"</span>;</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">"\n"</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> </div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a6ec0236303089a01fd9da36a8bb84e0a">FunctionType</a>* fu= SVFUtil::dyn_cast<FunctionType> (type))</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  {</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">" {Type: "</span>;</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  fu->getReturnType()->print(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>());</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">"(Function)}\n\n"</span>;</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  }</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span> </div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  {</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(type->isSingleValueType() && <span class="stringliteral">"not a single value type, then what else!!"</span>);</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> eSize = <a class="code" href="classSVF_1_1SymbolTableInfo.html#af4239ff717303dee25f1f4ba60070f9e">getTypeSizeInBytes</a>(type);</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() <<<span class="stringliteral">" {Type: "</span>;</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  type->print(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>());</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">"}\n"</span>;</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() <<<span class="stringliteral">"\t [object size = "</span> << eSize << <span class="stringliteral">"]\n"</span>;</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  }</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span> }</div><div class="ttc" id="namespaceSVF_html_a6ec0236303089a01fd9da36a8bb84e0a"><div class="ttname"><a href="namespaceSVF.html#a6ec0236303089a01fd9da36a8bb84e0a">SVF::FunctionType</a></div><div class="ttdeci">llvm::FunctionType FunctionType</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00109">BasicTypes.h:109</a></div></div>
|
|
2080
|
+
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00447">447</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
|
|
2081
|
+
<div class="fragment"><div class="line"><a name="l00448"></a><span class="lineno"> 448</span> {</div><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>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a146d286041987860388da3d8bc85cee3">ArrayType</a> *at = SVFUtil::dyn_cast<ArrayType> (type))</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  {</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() <<<span class="stringliteral">" {Type: "</span>;</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  at->print(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>());</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">"}\n"</span>;</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">"\tarray type "</span>;</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">"\t [element size = "</span> << <a class="code" href="classSVF_1_1SymbolTableInfo.html#af4239ff717303dee25f1f4ba60070f9e">getTypeSizeInBytes</a>(at->getElementType()) << <span class="stringliteral">"]\n"</span>;</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">"\n"</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> </div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  <span class="keywordflow">else</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> (type))</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>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() <<<span class="stringliteral">" {Type: "</span>;</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  st->print(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>());</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">"}\n"</span>;</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  std::vector<FlattenedFieldInfo>& finfo = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a90bca8ff906ea48fb5e3a69da463ccab">getStructInfo</a>(st)-><a class="code" href="classSVF_1_1StInfo.html#ab5908115f11eccee61bd0759a51d5af0">getFlattenedFieldInfoVec</a>();</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  <span class="keywordtype">int</span> field_idx = 0;</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  <span class="keywordflow">for</span>(std::vector<FlattenedFieldInfo>::iterator it = finfo.begin(), eit = finfo.end();</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  it!=eit; ++it, field_idx++)</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  {</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">" \tField_idx = "</span> << (*it).getFlattenFldIdx();</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">", field type: "</span>;</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  (*it).getFlattenElemTy()->print(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>());</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">", field size: "</span> << <a class="code" href="classSVF_1_1SymbolTableInfo.html#af4239ff717303dee25f1f4ba60070f9e">getTypeSizeInBytes</a>((*it).getFlattenElemTy());</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">"\n"</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>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">"\n"</span>;</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> </div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>* pt= SVFUtil::dyn_cast<PointerType> (type))</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  {</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> sizeInBits = <a class="code" href="classSVF_1_1SymbolTableInfo.html#af4239ff717303dee25f1f4ba60070f9e">getTypeSizeInBytes</a>(type);</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> eSize = <a class="code" href="classSVF_1_1SymbolTableInfo.html#af4239ff717303dee25f1f4ba60070f9e">getTypeSizeInBytes</a>(pt->getElementType());</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">" {Type: "</span>;</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  pt->print(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>());</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">"}\n"</span>;</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() <<<span class="stringliteral">"\t [pointer size = "</span> << sizeInBits << <span class="stringliteral">"]"</span>;</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() <<<span class="stringliteral">"\t [target size = "</span> << eSize << <span class="stringliteral">"]\n"</span>;</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">"\n"</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> </div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a6ec0236303089a01fd9da36a8bb84e0a">FunctionType</a>* fu= SVFUtil::dyn_cast<FunctionType> (type))</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>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">" {Type: "</span>;</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  fu->getReturnType()->print(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>());</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">"(Function)}\n\n"</span>;</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  }</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span> </div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  {</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(type->isSingleValueType() && <span class="stringliteral">"not a single value type, then what else!!"</span>);</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> eSize = <a class="code" href="classSVF_1_1SymbolTableInfo.html#af4239ff717303dee25f1f4ba60070f9e">getTypeSizeInBytes</a>(type);</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() <<<span class="stringliteral">" {Type: "</span>;</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  type->print(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>());</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">"}\n"</span>;</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() <<<span class="stringliteral">"\t [object size = "</span> << eSize << <span class="stringliteral">"]\n"</span>;</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  }</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span> }</div><div class="ttc" id="namespaceSVF_html_a6ec0236303089a01fd9da36a8bb84e0a"><div class="ttname"><a href="namespaceSVF.html#a6ec0236303089a01fd9da36a8bb84e0a">SVF::FunctionType</a></div><div class="ttdeci">llvm::FunctionType FunctionType</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00109">BasicTypes.h:109</a></div></div>
|
|
2078
2082
|
<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>
|
|
2079
2083
|
<div class="ttc" id="namespaceSVF_html_aa962cc1d782cc46553251e96b64a754b"><div class="ttname"><a href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">SVF::PointerType</a></div><div class="ttdeci">llvm::PointerType PointerType</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00108">BasicTypes.h:108</a></div></div>
|
|
2080
2084
|
<div class="ttc" id="namespaceSVF_html_a146d286041987860388da3d8bc85cee3"><div class="ttname"><a href="namespaceSVF.html#a146d286041987860388da3d8bc85cee3">SVF::ArrayType</a></div><div class="ttdeci">llvm::ArrayType ArrayType</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00107">BasicTypes.h:107</a></div></div>
|
|
@@ -2082,7 +2086,7 @@ Friends</h2></td></tr>
|
|
|
2082
2086
|
<div class="ttc" id="namespaceSVF_html_a2bf58575ac7d068e0f1a4cf953b9e6cb"><div class="ttname"><a href="namespaceSVF.html#a2bf58575ac7d068e0f1a4cf953b9e6cb">SVF::StructType</a></div><div class="ttdeci">llvm::StructType StructType</div><div class="ttdoc">LLVM types. </div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00106">BasicTypes.h:106</a></div></div>
|
|
2083
2087
|
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a90bca8ff906ea48fb5e3a69da463ccab"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a90bca8ff906ea48fb5e3a69da463ccab">SVF::SymbolTableInfo::getStructInfo</a></div><div class="ttdeci">StInfo * getStructInfo(const Type *T)</div><div class="ttdoc">Get a reference to StructInfo. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00350">SymbolTableInfo.h:350</a></div></div>
|
|
2084
2088
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a85ab6b592fefc45a0674d3295e01638f"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVF::SVFUtil::outs</a></div><div class="ttdeci">raw_ostream & outs()</div><div class="ttdoc">Overwrite llvm::outs() </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00049">SVFUtil.h:49</a></div></div>
|
|
2085
|
-
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_af4239ff717303dee25f1f4ba60070f9e"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#af4239ff717303dee25f1f4ba60070f9e">SVF::SymbolTableInfo::getTypeSizeInBytes</a></div><div class="ttdeci">u32_t getTypeSizeInBytes(const Type *type)</div><div class="ttdoc">Helper method to get the size of the type from target data layout. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#
|
|
2089
|
+
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_af4239ff717303dee25f1f4ba60070f9e"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#af4239ff717303dee25f1f4ba60070f9e">SVF::SymbolTableInfo::getTypeSizeInBytes</a></div><div class="ttdeci">u32_t getTypeSizeInBytes(const Type *type)</div><div class="ttdoc">Helper method to get the size of the type from target data layout. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00590">SymbolTableInfo.cpp:590</a></div></div>
|
|
2086
2090
|
<div class="ttc" id="classSVF_1_1StInfo_html_ab5908115f11eccee61bd0759a51d5af0"><div class="ttname"><a href="classSVF_1_1StInfo.html#ab5908115f11eccee61bd0759a51d5af0">SVF::StInfo::getFlattenedFieldInfoVec</a></div><div class="ttdeci">std::vector< FlattenedFieldInfo > & getFlattenedFieldInfoVec()</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00559">SymbolTableInfo.h:559</a></div></div>
|
|
2087
2091
|
</div><!-- fragment -->
|
|
2088
2092
|
</div>
|
|
@@ -2231,8 +2235,8 @@ Friends</h2></td></tr>
|
|
|
2231
2235
|
<p>Singleton design here to make sure we only have one instance during any analysis. </p>
|
|
2232
2236
|
<p>Get the symbol table instance </p>
|
|
2233
2237
|
|
|
2234
|
-
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#
|
|
2235
|
-
<div class="fragment"><div class="line"><a name="
|
|
2238
|
+
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00115">115</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
|
|
2239
|
+
<div class="fragment"><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> {</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SymbolTableInfo.html#a4fbb8ea4b4796d10d13c027b7455505c">symInfo</a> == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  {</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <a class="code" href="classSVF_1_1SymbolTableInfo.html#a4fbb8ea4b4796d10d13c027b7455505c">symInfo</a> = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#aff272bc1d00f2e57b7677d1826a31237">SymbolTableInfo</a>();</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <a class="code" href="classSVF_1_1SymbolTableInfo.html#a4fbb8ea4b4796d10d13c027b7455505c">symInfo</a>-><a class="code" href="classSVF_1_1SymbolTableInfo.html#a4decfc9e7f5dc096d7bfa42d6965763d">setModelConstants</a>(<a class="code" href="classSVF_1_1Options.html#a5c051cf6a93a87a07aa1d31e302a2877">Options::ModelConsts</a>);</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  }</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a4fbb8ea4b4796d10d13c027b7455505c">symInfo</a>;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> }</div><div class="ttc" id="classSVF_1_1SymbolTableInfo_html_aff272bc1d00f2e57b7677d1826a31237"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#aff272bc1d00f2e57b7677d1826a31237">SVF::SymbolTableInfo::SymbolTableInfo</a></div><div class="ttdeci">SymbolTableInfo(void)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00115">SymbolTableInfo.h:115</a></div></div>
|
|
2236
2240
|
<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#l00213">Options.h:213</a></div></div>
|
|
2237
2241
|
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a4decfc9e7f5dc096d7bfa42d6965763d"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a4decfc9e7f5dc096d7bfa42d6965763d">SVF::SymbolTableInfo::setModelConstants</a></div><div class="ttdeci">void setModelConstants(bool _modelConstants)</div><div class="ttdoc">Set / Get modelConstants. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00139">SymbolTableInfo.h:139</a></div></div>
|
|
2238
2242
|
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a4fbb8ea4b4796d10d13c027b7455505c"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a4fbb8ea4b4796d10d13c027b7455505c">SVF::SymbolTableInfo::symInfo</a></div><div class="ttdeci">static SymbolTableInfo * symInfo</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00096">SymbolTableInfo.h:96</a></div></div>
|
|
@@ -2263,8 +2267,8 @@ Friends</h2></td></tr>
|
|
|
2263
2267
|
</table>
|
|
2264
2268
|
</div><div class="memdoc">
|
|
2265
2269
|
|
|
2266
|
-
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#
|
|
2267
|
-
<div class="fragment"><div class="line"><a name="
|
|
2270
|
+
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00511">511</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
|
|
2271
|
+
<div class="fragment"><div class="line"><a name="l00512"></a><span class="lineno"> 512</span> {</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  <span class="keywordflow">switch</span> (symtype) {</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  <span class="keywordflow">case</span> SYMTYPE::BlackHole: {</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  <span class="keywordflow">return</span> <span class="stringliteral">"BlackHole"</span>;</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">case</span> SYMTYPE::ConstantObj: {</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  <span class="keywordflow">return</span> <span class="stringliteral">"ConstantObj"</span>;</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  }</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>  <span class="keywordflow">case</span> SYMTYPE::BlkPtr: {</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  <span class="keywordflow">return</span> <span class="stringliteral">"BlkPtr"</span>;</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>  }</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  <span class="keywordflow">case</span> SYMTYPE::NullPtr: {</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>  <span class="keywordflow">return</span> <span class="stringliteral">"NullPtr"</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>  <span class="keywordflow">case</span> SYMTYPE::ValSymbol: {</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  <span class="keywordflow">return</span> <span class="stringliteral">"ValSym"</span>;</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  }</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>  <span class="keywordflow">case</span> SYMTYPE::ObjSymbol: {</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  <span class="keywordflow">return</span> <span class="stringliteral">"ObjSym"</span>;</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>  }</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>  <span class="keywordflow">case</span> SYMTYPE::RetSymbol: {</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  <span class="keywordflow">return</span> <span class="stringliteral">"RetSym"</span>;</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">case</span> SYMTYPE::VarargSymbol: {</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>  <span class="keywordflow">return</span> <span class="stringliteral">"VarargSym"</span>;</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>  }</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  <span class="keywordflow">default</span>: {</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>  <span class="keywordflow">return</span> <span class="stringliteral">"Invalid SYMTYPE"</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="line"><a name="l00542"></a><span class="lineno"> 542</span> }</div></div><!-- fragment -->
|
|
2268
2272
|
</div>
|
|
2269
2273
|
</div>
|
|
2270
2274
|
<a id="a8f3cb8a1db34dd692ee04561f4edeebf"></a>
|