svf-tools 1.0.330 → 1.0.331
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 +4 -4
- package/SVF-doxygen/html/html/Andersen_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/CSC_8cpp_source.html +2 -3
- package/SVF-doxygen/html/html/ConsGEdge_8h_source.html +3 -3
- package/SVF-doxygen/html/html/ConsGNode_8h_source.html +5 -5
- package/SVF-doxygen/html/html/ConsG_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/ConsG_8h_source.html +4 -4
- package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +6 -6
- package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +6 -7
- package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/IRGraph_8h_source.html +1 -1
- package/SVF-doxygen/html/html/LocationSet_8cpp.html +1 -0
- package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +12 -15
- package/SVF-doxygen/html/html/LocationSet_8h.html +1 -1
- package/SVF-doxygen/html/html/LocationSet_8h_source.html +26 -40
- package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/OfflineConsG_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/PAGBuilderFromFile_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +14 -14
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +6 -6
- package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +6 -7
- package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +32 -32
- package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +12 -12
- package/SVF-doxygen/html/html/SVFIR_8h_source.html +12 -12
- package/SVF-doxygen/html/html/SVFStatements_8h_source.html +3 -3
- package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/SVFVariables_8h.html +1 -1
- package/SVF-doxygen/html/html/SVFVariables_8h_source.html +69 -69
- package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +21 -21
- package/SVF-doxygen/html/html/SymbolTableBuilder_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +52 -53
- package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +72 -75
- package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +13 -13
- package/SVF-doxygen/html/html/TypeBasedHeapCloning_8h_source.html +2 -2
- package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/annotated.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1CSC.html +2 -3
- package/SVF-doxygen/html/html/classSVF_1_1CloneDummyObjVar.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1CloneFIObjVar.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar-members.html +56 -55
- package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar.html +44 -41
- package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode-members.html +26 -26
- package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode.html +43 -43
- package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1DummyValVar.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.html +13 -13
- package/SVF-doxygen/html/html/classSVF_1_1FlattenedFieldInfo-members.html +85 -0
- package/SVF-doxygen/html/html/classSVF_1_1FlattenedFieldInfo.html +254 -0
- package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1GenericNode.html +22 -23
- package/SVF-doxygen/html/html/classSVF_1_1GenericNode.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1GepObjVar-members.html +173 -0
- package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +813 -0
- package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1GepValVar.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1IRAnnotator-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IRAnnotator.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1LocationSet-members.html +17 -21
- package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +150 -326
- package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +84 -84
- package/SVF-doxygen/html/html/classSVF_1_1NormalGepCGEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1NormalGepStmt.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo.html +96 -96
- package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1ObjVar.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +14 -14
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1RetPN.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +26 -26
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +114 -115
- package/SVF-doxygen/html/html/classSVF_1_1SVFVar.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1SVFVar.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1StInfo-members.html +11 -14
- package/SVF-doxygen/html/html/classSVF_1_1StInfo.html +70 -168
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +30 -30
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo-members.html +59 -60
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +118 -146
- package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +18 -18
- package/SVF-doxygen/html/html/classSVF_1_1VarArgPN.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +3 -3
- package/SVF-doxygen/html/html/classes.html +6 -6
- package/SVF-doxygen/html/html/functions_a.html +13 -10
- package/SVF-doxygen/html/html/functions_b.html +1 -5
- package/SVF-doxygen/html/html/functions_c.html +6 -8
- package/SVF-doxygen/html/html/functions_d.html +1 -1
- package/SVF-doxygen/html/html/functions_e.html +0 -16
- package/SVF-doxygen/html/html/functions_f.html +21 -19
- package/SVF-doxygen/html/html/functions_func.html +15 -12
- package/SVF-doxygen/html/html/functions_func_c.html +2 -2
- package/SVF-doxygen/html/html/functions_func_d.html +1 -1
- package/SVF-doxygen/html/html/functions_func_e.html +2 -8
- package/SVF-doxygen/html/html/functions_func_f.html +4 -4
- package/SVF-doxygen/html/html/functions_func_g.html +39 -60
- package/SVF-doxygen/html/html/functions_func_i.html +11 -14
- package/SVF-doxygen/html/html/functions_func_s.html +6 -9
- package/SVF-doxygen/html/html/functions_func_t.html +1 -1
- package/SVF-doxygen/html/html/functions_func_w.html +1 -1
- package/SVF-doxygen/html/html/functions_g.html +38 -59
- package/SVF-doxygen/html/html/functions_i.html +6 -9
- package/SVF-doxygen/html/html/functions_l.html +1 -1
- package/SVF-doxygen/html/html/functions_n.html +4 -7
- package/SVF-doxygen/html/html/functions_o.html +21 -16
- package/SVF-doxygen/html/html/functions_p.html +16 -14
- package/SVF-doxygen/html/html/functions_s.html +15 -18
- package/SVF-doxygen/html/html/functions_t.html +4 -4
- package/SVF-doxygen/html/html/functions_type_e.html +0 -4
- package/SVF-doxygen/html/html/functions_type_o.html +3 -0
- package/SVF-doxygen/html/html/functions_v.html +3 -3
- package/SVF-doxygen/html/html/functions_vars_b.html +1 -5
- package/SVF-doxygen/html/html/functions_vars_e.html +0 -6
- package/SVF-doxygen/html/html/functions_vars_f.html +9 -7
- package/SVF-doxygen/html/html/functions_vars_l.html +1 -1
- package/SVF-doxygen/html/html/functions_vars_n.html +0 -3
- package/SVF-doxygen/html/html/functions_vars_o.html +2 -2
- package/SVF-doxygen/html/html/functions_w.html +1 -1
- package/SVF-doxygen/html/html/hierarchy.html +64 -64
- package/SVF-doxygen/html/html/namespaceSVF.html +3 -3
- package/SVF-doxygen/html/html/search/all_1.js +3 -2
- package/SVF-doxygen/html/html/search/all_10.js +8 -8
- package/SVF-doxygen/html/html/search/all_12.js +1 -1
- package/SVF-doxygen/html/html/search/all_13.js +9 -10
- package/SVF-doxygen/html/html/search/all_14.js +7 -7
- package/SVF-doxygen/html/html/search/all_15.js +1 -1
- package/SVF-doxygen/html/html/search/all_16.js +2 -2
- package/SVF-doxygen/html/html/search/all_17.js +1 -1
- package/SVF-doxygen/html/html/search/all_2.js +2 -3
- package/SVF-doxygen/html/html/search/all_3.js +3 -3
- package/SVF-doxygen/html/html/search/all_4.js +1 -1
- package/SVF-doxygen/html/html/search/all_5.js +0 -5
- package/SVF-doxygen/html/html/search/all_6.js +6 -5
- package/SVF-doxygen/html/html/search/all_7.js +13 -21
- package/SVF-doxygen/html/html/search/all_9.js +1 -2
- package/SVF-doxygen/html/html/search/all_c.js +2 -2
- package/SVF-doxygen/html/html/search/all_d.js +1 -1
- package/SVF-doxygen/html/html/search/all_e.js +1 -2
- package/SVF-doxygen/html/html/search/all_f.js +4 -3
- package/SVF-doxygen/html/html/search/classes_5.js +1 -1
- package/SVF-doxygen/html/html/search/classes_6.js +1 -1
- package/SVF-doxygen/html/html/search/functions_0.js +3 -2
- package/SVF-doxygen/html/html/search/functions_10.js +2 -3
- package/SVF-doxygen/html/html/search/functions_11.js +1 -1
- package/SVF-doxygen/html/html/search/functions_14.js +1 -1
- package/SVF-doxygen/html/html/search/functions_2.js +2 -2
- package/SVF-doxygen/html/html/search/functions_3.js +1 -1
- package/SVF-doxygen/html/html/search/functions_4.js +0 -2
- package/SVF-doxygen/html/html/search/functions_5.js +1 -1
- package/SVF-doxygen/html/html/search/functions_6.js +13 -21
- package/SVF-doxygen/html/html/search/functions_8.js +1 -2
- package/SVF-doxygen/html/html/search/functions_a.js +1 -1
- package/SVF-doxygen/html/html/search/functions_e.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_4.js +0 -1
- package/SVF-doxygen/html/html/search/typedefs_e.js +1 -0
- package/SVF-doxygen/html/html/search/variables_14.js +3 -3
- package/SVF-doxygen/html/html/search/variables_15.js +1 -1
- package/SVF-doxygen/html/html/search/variables_2.js +2 -3
- package/SVF-doxygen/html/html/search/variables_5.js +0 -2
- package/SVF-doxygen/html/html/search/variables_6.js +5 -4
- package/SVF-doxygen/html/html/search/variables_c.js +1 -1
- package/SVF-doxygen/html/html/search/variables_e.js +0 -1
- package/SVF-doxygen/html/html/search/variables_f.js +1 -1
- 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 +1 -1
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01OfflineConsG_01_5_01_4.html +1 -1
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1LocationSet_01_4.html +5 -5
- package/include/Graphs/ConsG.h +1 -1
- package/include/Graphs/ConsGEdge.h +1 -1
- package/include/MemoryModel/LocationSet.h +39 -126
- package/include/MemoryModel/SVFIR.h +1 -1
- package/include/MemoryModel/SVFStatements.h +1 -1
- package/include/MemoryModel/SVFVariables.h +17 -11
- package/include/MemoryModel/SymbolTableInfo.h +27 -25
- package/include/Util/IRAnnotator.h +3 -3
- package/lib/DDA/ContextDDA.cpp +1 -1
- package/lib/Graphs/ConsG.cpp +1 -1
- package/lib/Graphs/IRGraph.cpp +1 -1
- package/lib/Graphs/OfflineConsG.cpp +1 -1
- package/lib/MemoryModel/LocationSet.cpp +53 -95
- package/lib/MemoryModel/PointerAnalysisImpl.cpp +4 -4
- package/lib/MemoryModel/SVFIR.cpp +4 -4
- package/lib/MemoryModel/SVFVariables.cpp +2 -2
- package/lib/MemoryModel/SymbolTableInfo.cpp +36 -63
- package/lib/SABER/SaberSVFGBuilder.cpp +1 -1
- package/lib/SVF-FE/SVFIRBuilder.cpp +9 -10
- package/lib/SVF-FE/SymbolTableBuilder.cpp +4 -4
- package/lib/Util/TypeBasedHeapCloning.cpp +10 -10
- package/lib/WPA/Andersen.cpp +1 -1
- package/lib/WPA/AndersenSFR.cpp +2 -2
- package/lib/WPA/CSC.cpp +1 -1
- package/lib/WPA/FlowSensitiveTBHC.cpp +6 -6
- package/package.json +1 -1
|
@@ -190,17 +190,15 @@ Public Member Functions</h2></td></tr>
|
|
|
190
190
|
<tr class="memitem:a90bca8ff906ea48fb5e3a69da463ccab"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1StInfo.html">StInfo</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SymbolTableInfo.html#a90bca8ff906ea48fb5e3a69da463ccab">getStructInfo</a> (const <a class="el" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *T)</td></tr>
|
|
191
191
|
<tr class="memdesc:a90bca8ff906ea48fb5e3a69da463ccab"><td class="mdescLeft"> </td><td class="mdescRight">Get a reference to StructInfo. <a href="#a90bca8ff906ea48fb5e3a69da463ccab">More...</a><br /></td></tr>
|
|
192
192
|
<tr class="separator:a90bca8ff906ea48fb5e3a69da463ccab"><td class="memSeparator" colspan="2"> </td></tr>
|
|
193
|
-
<tr class="memitem:
|
|
194
|
-
<tr class="memdesc:
|
|
195
|
-
<tr class="separator:
|
|
196
|
-
<tr class="memitem:
|
|
197
|
-
<tr class="separator:
|
|
198
|
-
<tr class="memitem:
|
|
199
|
-
<tr class="separator:
|
|
200
|
-
<tr class="memitem:
|
|
201
|
-
<tr class="separator:
|
|
202
|
-
<tr class="memitem:a573bd5208467b2f905f5b2b1684feac8"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SymbolTableInfo.html#a573bd5208467b2f905f5b2b1684feac8">getOrigSubTypeWithByteOffset</a> (const <a class="el" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *baseType, <a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> byteOffset)</td></tr>
|
|
203
|
-
<tr class="separator:a573bd5208467b2f905f5b2b1684feac8"><td class="memSeparator" colspan="2"> </td></tr>
|
|
193
|
+
<tr class="memitem:ac50e1d8f8b8e514d098a55bfbac86010"><td class="memItemLeft" align="right" valign="top">const std::vector< <a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SymbolTableInfo.html#ac50e1d8f8b8e514d098a55bfbac86010">getFlattenedFieldIdxVec</a> (const <a class="el" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *T)</td></tr>
|
|
194
|
+
<tr class="memdesc:ac50e1d8f8b8e514d098a55bfbac86010"><td class="mdescLeft"> </td><td class="mdescRight">Get a reference to the components of struct_info. <a href="#ac50e1d8f8b8e514d098a55bfbac86010">More...</a><br /></td></tr>
|
|
195
|
+
<tr class="separator:ac50e1d8f8b8e514d098a55bfbac86010"><td class="memSeparator" colspan="2"> </td></tr>
|
|
196
|
+
<tr class="memitem:a9ca564bdc1f40a2ccd30d98e0e4075b0"><td class="memItemLeft" align="right" valign="top">const std::vector< <a class="el" href="classSVF_1_1FlattenedFieldInfo.html">FlattenedFieldInfo</a> > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SymbolTableInfo.html#a9ca564bdc1f40a2ccd30d98e0e4075b0">getFlattenedFieldInfoVec</a> (const <a class="el" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *T)</td></tr>
|
|
197
|
+
<tr class="separator:a9ca564bdc1f40a2ccd30d98e0e4075b0"><td class="memSeparator" colspan="2"> </td></tr>
|
|
198
|
+
<tr class="memitem:a866085ff37b7841606c523817c621f49"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SymbolTableInfo.html#a866085ff37b7841606c523817c621f49">getOriginalFieldType</a> (const <a class="el" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *baseType, <a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> field_idx)</td></tr>
|
|
199
|
+
<tr class="separator:a866085ff37b7841606c523817c621f49"><td class="memSeparator" colspan="2"> </td></tr>
|
|
200
|
+
<tr class="memitem:a666d1dff7a629bd34abbd2031c1037a4"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SymbolTableInfo.html#a666d1dff7a629bd34abbd2031c1037a4">getFlatternedFieldType</a> (const <a class="el" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *baseType, <a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> field_idx)</td></tr>
|
|
201
|
+
<tr class="separator:a666d1dff7a629bd34abbd2031c1037a4"><td class="memSeparator" colspan="2"> </td></tr>
|
|
204
202
|
</table><table class="memberdecls">
|
|
205
203
|
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
|
|
206
204
|
Static Public Member Functions</h2></td></tr>
|
|
@@ -524,10 +522,10 @@ Friends</h2></td></tr>
|
|
|
524
522
|
<p>Constructor. </p>
|
|
525
523
|
|
|
526
524
|
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8h_source.html#l00115">115</a> of file <a class="el" href="SymbolTableInfo_8h_source.html">SymbolTableInfo.h</a>.</p>
|
|
527
|
-
<div class="fragment"><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  :</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <a class="code" href="classSVF_1_1SymbolTableInfo.html#af8fdaaa03cd2ae9b7d50f57bc678b8ba">mod</a>(<span class="keyword">nullptr</span>), <a class="code" href="classSVF_1_1SymbolTableInfo.html#ad20ccb90e8f9dee488a8aec0600399dc">modelConstants</a>(<span class="keyword">false</span>), <a class="code" href="classSVF_1_1SymbolTableInfo.html#a125faa0295b38d027b35bc3d76b3afdd">totalSymNum</a>(0), <a class="code" href="classSVF_1_1SymbolTableInfo.html#a4e33a01e203f07a8154af6ee65f5ba46">maxStruct</a>(<span class="keyword">nullptr</span>), <a class="code" href="classSVF_1_1SymbolTableInfo.html#abb8550c9ef856e45cb7675c3796f9a35">maxStSize</a>(0)</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  {</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  }</div><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#
|
|
525
|
+
<div class="fragment"><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  :</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <a class="code" href="classSVF_1_1SymbolTableInfo.html#af8fdaaa03cd2ae9b7d50f57bc678b8ba">mod</a>(<span class="keyword">nullptr</span>), <a class="code" href="classSVF_1_1SymbolTableInfo.html#ad20ccb90e8f9dee488a8aec0600399dc">modelConstants</a>(<span class="keyword">false</span>), <a class="code" href="classSVF_1_1SymbolTableInfo.html#a125faa0295b38d027b35bc3d76b3afdd">totalSymNum</a>(0), <a class="code" href="classSVF_1_1SymbolTableInfo.html#a4e33a01e203f07a8154af6ee65f5ba46">maxStruct</a>(<span class="keyword">nullptr</span>), <a class="code" href="classSVF_1_1SymbolTableInfo.html#abb8550c9ef856e45cb7675c3796f9a35">maxStSize</a>(0)</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  {</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  }</div><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#l00408">SymbolTableInfo.h:408</a></div></div>
|
|
528
526
|
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a125faa0295b38d027b35bc3d76b3afdd"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a125faa0295b38d027b35bc3d76b3afdd">SVF::SymbolTableInfo::totalSymNum</a></div><div class="ttdeci">SymID totalSymNum</div><div class="ttdoc">total number of symbols </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00111">SymbolTableInfo.h:111</a></div></div>
|
|
529
527
|
<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>
|
|
530
|
-
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_abb8550c9ef856e45cb7675c3796f9a35"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#abb8550c9ef856e45cb7675c3796f9a35">SVF::SymbolTableInfo::maxStSize</a></div><div class="ttdeci">u32_t maxStSize</div><div class="ttdoc">The number of fields in max_struct. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#
|
|
528
|
+
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_abb8550c9ef856e45cb7675c3796f9a35"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#abb8550c9ef856e45cb7675c3796f9a35">SVF::SymbolTableInfo::maxStSize</a></div><div class="ttdeci">u32_t maxStSize</div><div class="ttdoc">The number of fields in max_struct. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00411">SymbolTableInfo.h:411</a></div></div>
|
|
531
529
|
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_ad20ccb90e8f9dee488a8aec0600399dc"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#ad20ccb90e8f9dee488a8aec0600399dc">SVF::SymbolTableInfo::modelConstants</a></div><div class="ttdeci">bool modelConstants</div><div class="ttdoc">Whether to model constants. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00108">SymbolTableInfo.h:108</a></div></div>
|
|
532
530
|
</div><!-- fragment -->
|
|
533
531
|
</div>
|
|
@@ -556,7 +554,7 @@ Friends</h2></td></tr>
|
|
|
556
554
|
</div><div class="memdoc">
|
|
557
555
|
|
|
558
556
|
<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>
|
|
559
|
-
<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#
|
|
557
|
+
<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#l00218">SymbolTableInfo.cpp:218</a></div></div>
|
|
560
558
|
</div><!-- fragment -->
|
|
561
559
|
</div>
|
|
562
560
|
</div>
|
|
@@ -644,21 +642,19 @@ Friends</h2></td></tr>
|
|
|
644
642
|
<p>Collect the array info. </p>
|
|
645
643
|
<p>Fill in <a class="el" href="classSVF_1_1StInfo.html">StInfo</a> for an array type. </p>
|
|
646
644
|
<p>Array itself only has one field which is the inner most element</p>
|
|
647
|
-
<p>Array's flatten field infor is the same as its element's flatten infor
|
|
648
|
-
<p>append the additional number </p>
|
|
645
|
+
<p>Array's flatten field infor is the same as its element's flatten infor. </p>
|
|
649
646
|
|
|
650
647
|
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00088">88</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
|
|
651
|
-
<div class="fragment"><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> {</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</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>();</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <a class="code" href="classSVF_1_1SymbolTableInfo.html#ad8b9fa0a4e4b91efb80586e692bd0dcd">typeToFieldInfo</a>[ty] = stinfo;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> </div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <a class="code" href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">u64_t</a> out_num = ty->getNumElements();</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">llvm::Type</a>* elemTy = ty->getElementType();</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> out_stride = <a class="code" href="classSVF_1_1SymbolTableInfo.html#af4239ff717303dee25f1f4ba60070f9e">getTypeSizeInBytes</a>(elemTy);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</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="l00097"></a><span class="lineno"> 97</span>  {</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  out_num *= aty->getNumElements();</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  elemTy = aty->getElementType();</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  out_stride = <a class="code" href="classSVF_1_1SymbolTableInfo.html#af4239ff717303dee25f1f4ba60070f9e">getTypeSizeInBytes</a>(elemTy);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  }</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> </div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  stinfo-><a class="code" href="classSVF_1_1StInfo.html#
|
|
652
|
-
<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#
|
|
653
|
-
<div class="ttc" id="classSVF_1_1FieldInfo_html"><div class="ttname"><a href="classSVF_1_1FieldInfo.html">SVF::FieldInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00045">LocationSet.h:45</a></div></div>
|
|
648
|
+
<div class="fragment"><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> {</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</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>();</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <a class="code" href="classSVF_1_1SymbolTableInfo.html#ad8b9fa0a4e4b91efb80586e692bd0dcd">typeToFieldInfo</a>[ty] = stinfo;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> </div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <a class="code" href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">u64_t</a> out_num = ty->getNumElements();</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">llvm::Type</a>* elemTy = ty->getElementType();</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> out_stride = <a class="code" href="classSVF_1_1SymbolTableInfo.html#af4239ff717303dee25f1f4ba60070f9e">getTypeSizeInBytes</a>(elemTy);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</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="l00097"></a><span class="lineno"> 97</span>  {</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  out_num *= aty->getNumElements();</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  elemTy = aty->getElementType();</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  out_stride = <a class="code" href="classSVF_1_1SymbolTableInfo.html#af4239ff717303dee25f1f4ba60070f9e">getTypeSizeInBytes</a>(elemTy);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  }</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> </div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  stinfo-><a class="code" href="classSVF_1_1StInfo.html#a7011600965de6fe5401b87f5c71e684f">addFldWithType</a>(0,elemTy);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> </div><div class="line"><a name="l00108"></a><span class="lineno"> 108</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="l00109"></a><span class="lineno"> 109</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> nfE = elemStInfo-><a class="code" href="classSVF_1_1StInfo.html#ab5908115f11eccee61bd0759a51d5af0">getFlattenedFieldInfoVec</a>().size();</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</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="l00111"></a><span class="lineno"> 111</span>  {</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</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="l00113"></a><span class="lineno"> 113</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="l00114"></a><span class="lineno"> 114</span>  <a class="code" href="classSVF_1_1FlattenedFieldInfo.html">FlattenedFieldInfo</a> field(idx, fieldTy);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  stinfo-><a class="code" href="classSVF_1_1StInfo.html#ab5908115f11eccee61bd0759a51d5af0">getFlattenedFieldInfoVec</a>().push_back(field);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  }</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> }</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>
|
|
649
|
+
<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#l00405">SymbolTableInfo.h:405</a></div></div>
|
|
654
650
|
<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>
|
|
655
651
|
<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>
|
|
656
|
-
<div class="ttc" id="
|
|
657
|
-
<div class="ttc" id="classSVF_1_1StInfo_html_a9bb25646a735d612cf777394fa3ba5d6"><div class="ttname"><a href="classSVF_1_1StInfo.html#a9bb25646a735d612cf777394fa3ba5d6">SVF::StInfo::getFlattenFieldInfoVec</a></div><div class="ttdeci">std::vector< FieldInfo > & getFlattenFieldInfoVec()</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00558">SymbolTableInfo.h:558</a></div></div>
|
|
652
|
+
<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>
|
|
658
653
|
<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#l00361">SymbolTableInfo.h:361</a></div></div>
|
|
659
|
-
<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#
|
|
660
|
-
<div class="ttc" id="
|
|
661
|
-
<div class="ttc" id="
|
|
654
|
+
<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#l00490">SymbolTableInfo.cpp:490</a></div></div>
|
|
655
|
+
<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#l00562">SymbolTableInfo.h:562</a></div></div>
|
|
656
|
+
<div class="ttc" id="classSVF_1_1StInfo_html_a7011600965de6fe5401b87f5c71e684f"><div class="ttname"><a href="classSVF_1_1StInfo.html#a7011600965de6fe5401b87f5c71e684f">SVF::StInfo::addFldWithType</a></div><div class="ttdeci">void addFldWithType(u32_t fldIdx, const Type *type)</div><div class="ttdoc">Add field (index and offset) with its corresponding type. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00569">SymbolTableInfo.h:569</a></div></div>
|
|
657
|
+
<div class="ttc" id="classSVF_1_1StInfo_html"><div class="ttname"><a href="classSVF_1_1StInfo.html">SVF::StInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00505">SymbolTableInfo.h:505</a></div></div>
|
|
662
658
|
<div class="ttc" id="namespaceSVF_html_a366625858f450a1ea5f985a3c83e0f14"><div class="ttname"><a href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">SVF::u64_t</a></div><div class="ttdeci">unsigned long long u64_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00076">SVFBasicTypes.h:76</a></div></div>
|
|
663
659
|
</div><!-- fragment -->
|
|
664
660
|
</div>
|
|
@@ -691,13 +687,12 @@ Friends</h2></td></tr>
|
|
|
691
687
|
<p>Collect simple type (non-aggregate) info </p>
|
|
692
688
|
<p>Only one field </p>
|
|
693
689
|
|
|
694
|
-
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#
|
|
695
|
-
<div class="fragment"><div class="line"><a name="
|
|
696
|
-
<div class="ttc" id="
|
|
697
|
-
<div class="ttc" id="
|
|
698
|
-
<div class="ttc" id="
|
|
699
|
-
<div class="ttc" id="
|
|
700
|
-
<div class="ttc" id="classSVF_1_1StInfo_html"><div class="ttname"><a href="classSVF_1_1StInfo.html">SVF::StInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00502">SymbolTableInfo.h:502</a></div></div>
|
|
690
|
+
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00175">175</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
|
|
691
|
+
<div class="fragment"><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>  <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>();</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <a class="code" href="classSVF_1_1SymbolTableInfo.html#ad8b9fa0a4e4b91efb80586e692bd0dcd">typeToFieldInfo</a>[ty] = stinfo;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span> </div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  stinfo-><a class="code" href="classSVF_1_1StInfo.html#a7011600965de6fe5401b87f5c71e684f">addFldWithType</a>(0, ty);</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span> </div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <a class="code" href="classSVF_1_1FlattenedFieldInfo.html">FlattenedFieldInfo</a> field(0, ty);</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  stinfo-><a class="code" href="classSVF_1_1StInfo.html#ab5908115f11eccee61bd0759a51d5af0">getFlattenedFieldInfoVec</a>().push_back(field);</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</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#l00405">SymbolTableInfo.h:405</a></div></div>
|
|
692
|
+
<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>
|
|
693
|
+
<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#l00562">SymbolTableInfo.h:562</a></div></div>
|
|
694
|
+
<div class="ttc" id="classSVF_1_1StInfo_html_a7011600965de6fe5401b87f5c71e684f"><div class="ttname"><a href="classSVF_1_1StInfo.html#a7011600965de6fe5401b87f5c71e684f">SVF::StInfo::addFldWithType</a></div><div class="ttdeci">void addFldWithType(u32_t fldIdx, const Type *type)</div><div class="ttdoc">Add field (index and offset) with its corresponding type. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00569">SymbolTableInfo.h:569</a></div></div>
|
|
695
|
+
<div class="ttc" id="classSVF_1_1StInfo_html"><div class="ttname"><a href="classSVF_1_1StInfo.html">SVF::StInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00505">SymbolTableInfo.h:505</a></div></div>
|
|
701
696
|
</div><!-- fragment -->
|
|
702
697
|
</div>
|
|
703
698
|
</div>
|
|
@@ -728,22 +723,19 @@ Friends</h2></td></tr>
|
|
|
728
723
|
<p>Collect the struct info. </p>
|
|
729
724
|
<p>Fill in struct_info for T. Given a Struct type, we recursively extend and record its fields and types. </p>
|
|
730
725
|
<p>The struct info should not be processed before</p>
|
|
731
|
-
<p>
|
|
726
|
+
<p>offset with uint_32 (Size_t) is large enough and will not cause overflow </p>
|
|
732
727
|
|
|
733
|
-
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#
|
|
734
|
-
<div class="fragment"><div class="line"><a name="
|
|
728
|
+
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00124">124</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
|
|
729
|
+
<div class="fragment"><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> {</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</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>();</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <a class="code" href="classSVF_1_1SymbolTableInfo.html#ad8b9fa0a4e4b91efb80586e692bd0dcd">typeToFieldInfo</a>[sty] = stinfo;</div><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>  <span class="comment">// Number of fields after flattening the struct</span></div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> nf = 0;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="comment">// field of the current struct</span></div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> field_idx = 0;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="keywordflow">for</span> (StructType::element_iterator it = sty->element_begin(), ie =</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  sty->element_end(); it != ie; ++it, ++field_idx)</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  {</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *et = *it;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  stinfo-><a class="code" href="classSVF_1_1StInfo.html#a7011600965de6fe5401b87f5c71e684f">addFldWithType</a>(nf, et);</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> </div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="keywordflow">if</span> (SVFUtil::isa<StructType>(et) || SVFUtil::isa<ArrayType>(et))</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  {</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</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="l00144"></a><span class="lineno"> 144</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> nfE = subStinfo-><a class="code" href="classSVF_1_1StInfo.html#ab5908115f11eccee61bd0759a51d5af0">getFlattenedFieldInfoVec</a>().size();</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="comment">//Copy ST's info, whose element 0 is the size of ST itself.</span></div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> j = 0; j < nfE; j++)</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  {</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</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="l00149"></a><span class="lineno"> 149</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="l00150"></a><span class="lineno"> 150</span>  <a class="code" href="classSVF_1_1FlattenedFieldInfo.html">FlattenedFieldInfo</a> field(fldIdx, elemTy);</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  stinfo-><a class="code" href="classSVF_1_1StInfo.html#ab5908115f11eccee61bd0759a51d5af0">getFlattenedFieldInfoVec</a>().push_back(field);</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>  nf += nfE;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  }</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="keywordflow">else</span> <span class="comment">//simple type</span></div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  {</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <a class="code" href="classSVF_1_1FlattenedFieldInfo.html">FlattenedFieldInfo</a> field(nf, et);</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  stinfo-><a class="code" href="classSVF_1_1StInfo.html#ab5908115f11eccee61bd0759a51d5af0">getFlattenedFieldInfoVec</a>().push_back(field);</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  ++nf;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  }</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  }</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> </div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="comment">//Record the size of the complete struct and update max_struct.</span></div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keywordflow">if</span> (nf > <a class="code" href="classSVF_1_1SymbolTableInfo.html#abb8550c9ef856e45cb7675c3796f9a35">maxStSize</a>)</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  {</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <a class="code" href="classSVF_1_1SymbolTableInfo.html#a4e33a01e203f07a8154af6ee65f5ba46">maxStruct</a> = sty;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <a class="code" href="classSVF_1_1SymbolTableInfo.html#abb8550c9ef856e45cb7675c3796f9a35">maxStSize</a> = nf;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  }</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> }</div><div class="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#l00408">SymbolTableInfo.h:408</a></div></div>
|
|
735
730
|
<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>
|
|
736
|
-
<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#
|
|
737
|
-
<div class="ttc" id="classSVF_1_1FieldInfo_html"><div class="ttname"><a href="classSVF_1_1FieldInfo.html">SVF::FieldInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00045">LocationSet.h:45</a></div></div>
|
|
731
|
+
<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#l00405">SymbolTableInfo.h:405</a></div></div>
|
|
738
732
|
<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>
|
|
739
|
-
<div class="ttc" id="
|
|
740
|
-
<div class="ttc" id="
|
|
741
|
-
<div class="ttc" id="classSVF_1_1StInfo_html_a9bb25646a735d612cf777394fa3ba5d6"><div class="ttname"><a href="classSVF_1_1StInfo.html#a9bb25646a735d612cf777394fa3ba5d6">SVF::StInfo::getFlattenFieldInfoVec</a></div><div class="ttdeci">std::vector< FieldInfo > & getFlattenFieldInfoVec()</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00558">SymbolTableInfo.h:558</a></div></div>
|
|
733
|
+
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_abb8550c9ef856e45cb7675c3796f9a35"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#abb8550c9ef856e45cb7675c3796f9a35">SVF::SymbolTableInfo::maxStSize</a></div><div class="ttdeci">u32_t maxStSize</div><div class="ttdoc">The number of fields in max_struct. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00411">SymbolTableInfo.h:411</a></div></div>
|
|
734
|
+
<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>
|
|
742
735
|
<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#l00361">SymbolTableInfo.h:361</a></div></div>
|
|
743
|
-
<div class="ttc" id="
|
|
744
|
-
<div class="ttc" id="
|
|
745
|
-
<div class="ttc" id="classSVF_1_1StInfo_html"><div class="ttname"><a href="classSVF_1_1StInfo.html">SVF::StInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#
|
|
746
|
-
<div class="ttc" id="namespaceSVF_html_a366625858f450a1ea5f985a3c83e0f14"><div class="ttname"><a href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">SVF::u64_t</a></div><div class="ttdeci">unsigned long long u64_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00076">SVFBasicTypes.h:76</a></div></div>
|
|
736
|
+
<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#l00562">SymbolTableInfo.h:562</a></div></div>
|
|
737
|
+
<div class="ttc" id="classSVF_1_1StInfo_html_a7011600965de6fe5401b87f5c71e684f"><div class="ttname"><a href="classSVF_1_1StInfo.html#a7011600965de6fe5401b87f5c71e684f">SVF::StInfo::addFldWithType</a></div><div class="ttdeci">void addFldWithType(u32_t fldIdx, const Type *type)</div><div class="ttdoc">Add field (index and offset) with its corresponding type. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00569">SymbolTableInfo.h:569</a></div></div>
|
|
738
|
+
<div class="ttc" id="classSVF_1_1StInfo_html"><div class="ttname"><a href="classSVF_1_1StInfo.html">SVF::StInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00505">SymbolTableInfo.h:505</a></div></div>
|
|
747
739
|
</div><!-- fragment -->
|
|
748
740
|
</div>
|
|
749
741
|
</div>
|
|
@@ -767,13 +759,13 @@ Friends</h2></td></tr>
|
|
|
767
759
|
<p>Collect a LLVM type info </p>
|
|
768
760
|
|
|
769
761
|
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00072">72</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
|
|
770
|
-
<div class="fragment"><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> {</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</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="l00075"></a><span class="lineno"> 75</span> </div><div class="line"><a name="l00076"></a><span class="lineno"> 76</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="l00077"></a><span class="lineno"> 77</span>  <a class="code" href="classSVF_1_1SymbolTableInfo.html#aea1c4ec32c307feb5da455a41cc51b5e">collectArrayInfo</a>(aty);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</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="l00079"></a><span class="lineno"> 79</span>  <a class="code" href="classSVF_1_1SymbolTableInfo.html#ab5297b79a02d8afce647a8b61bdab804">collectStructInfo</a>(sty);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <a class="code" href="classSVF_1_1SymbolTableInfo.html#abf7567c655499d6744de8df689c11fad">collectSimpleTypeInfo</a>(ty);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</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#
|
|
762
|
+
<div class="fragment"><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> {</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</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="l00075"></a><span class="lineno"> 75</span> </div><div class="line"><a name="l00076"></a><span class="lineno"> 76</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="l00077"></a><span class="lineno"> 77</span>  <a class="code" href="classSVF_1_1SymbolTableInfo.html#aea1c4ec32c307feb5da455a41cc51b5e">collectArrayInfo</a>(aty);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</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="l00079"></a><span class="lineno"> 79</span>  <a class="code" href="classSVF_1_1SymbolTableInfo.html#ab5297b79a02d8afce647a8b61bdab804">collectStructInfo</a>(sty);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <a class="code" href="classSVF_1_1SymbolTableInfo.html#abf7567c655499d6744de8df689c11fad">collectSimpleTypeInfo</a>(ty);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</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#l00405">SymbolTableInfo.h:405</a></div></div>
|
|
771
763
|
<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>
|
|
772
764
|
<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>
|
|
773
765
|
<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>
|
|
774
|
-
<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#
|
|
766
|
+
<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#l00124">SymbolTableInfo.cpp:124</a></div></div>
|
|
775
767
|
<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#l00088">SymbolTableInfo.cpp:88</a></div></div>
|
|
776
|
-
<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#
|
|
768
|
+
<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#l00175">SymbolTableInfo.cpp:175</a></div></div>
|
|
777
769
|
</div><!-- fragment -->
|
|
778
770
|
</div>
|
|
779
771
|
</div>
|
|
@@ -821,9 +813,9 @@ Friends</h2></td></tr>
|
|
|
821
813
|
</table>
|
|
822
814
|
</div><div class="memdoc">
|
|
823
815
|
|
|
824
|
-
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#
|
|
825
|
-
<div class="fragment"><div class="line"><a name="
|
|
826
|
-
<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#
|
|
816
|
+
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00299">299</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
|
|
817
|
+
<div class="fragment"><div class="line"><a name="l00300"></a><span class="lineno"> 300</span> {</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1SymbolTableInfo.html#ad9cdb21e20182f3bc95f04bbb97712f3">isBlkObj</a>(symId));</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</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="l00303"></a><span class="lineno"> 303</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#a76971ba9b579907ef937cd7adda89562">createObjTypeInfo</a>());</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <a class="code" href="classSVF_1_1SymbolTableInfo.html#aeab14702eabde827923a692cba8f7f8a">objMap</a>[symId] = obj;</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  <span class="keywordflow">return</span> obj;</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</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>
|
|
818
|
+
<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#l00418">SymbolTableInfo.h:418</a></div></div>
|
|
827
819
|
<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>
|
|
828
820
|
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a76971ba9b579907ef937cd7adda89562"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a76971ba9b579907ef937cd7adda89562">SVF::SymbolTableInfo::createObjTypeInfo</a></div><div class="ttdeci">ObjTypeInfo * createObjTypeInfo(const Type *type=nullptr)</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#l00049">SymbolTableInfo.cpp:49</a></div></div>
|
|
829
821
|
<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>
|
|
@@ -846,8 +838,8 @@ Friends</h2></td></tr>
|
|
|
846
838
|
</table>
|
|
847
839
|
</div><div class="memdoc">
|
|
848
840
|
|
|
849
|
-
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#
|
|
850
|
-
<div class="fragment"><div class="line"><a name="
|
|
841
|
+
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00308">308</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
|
|
842
|
+
<div class="fragment"><div class="line"><a name="l00309"></a><span class="lineno"> 309</span> {</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</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="l00311"></a><span class="lineno"> 311</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="l00312"></a><span class="lineno"> 312</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#a76971ba9b579907ef937cd7adda89562">createObjTypeInfo</a>());</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <a class="code" href="classSVF_1_1SymbolTableInfo.html#aeab14702eabde827923a692cba8f7f8a">objMap</a>[symId] = obj;</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  <span class="keywordflow">return</span> obj;</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</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#l00418">SymbolTableInfo.h:418</a></div></div>
|
|
851
843
|
<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>
|
|
852
844
|
<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>
|
|
853
845
|
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a76971ba9b579907ef937cd7adda89562"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a76971ba9b579907ef937cd7adda89562">SVF::SymbolTableInfo::createObjTypeInfo</a></div><div class="ttdeci">ObjTypeInfo * createObjTypeInfo(const Type *type=nullptr)</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#l00049">SymbolTableInfo.cpp:49</a></div></div>
|
|
@@ -883,8 +875,8 @@ Friends</h2></td></tr>
|
|
|
883
875
|
|
|
884
876
|
<p>Can only be invoked by SVFIR::addDummyNode() when creaing <a class="el" href="classSVF_1_1SVFIR.html">SVFIR</a> from file. </p>
|
|
885
877
|
|
|
886
|
-
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#
|
|
887
|
-
<div class="fragment"><div class="line"><a name="
|
|
878
|
+
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00317">317</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
|
|
879
|
+
<div class="fragment"><div class="line"><a name="l00318"></a><span class="lineno"> 318</span> {</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  <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="l00320"></a><span class="lineno"> 320</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#a76971ba9b579907ef937cd7adda89562">createObjTypeInfo</a>(type));</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  <a class="code" href="classSVF_1_1SymbolTableInfo.html#aeab14702eabde827923a692cba8f7f8a">objMap</a>[symId] = memObj;</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  <span class="keywordflow">return</span> memObj;</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</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#l00418">SymbolTableInfo.h:418</a></div></div>
|
|
888
880
|
<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>
|
|
889
881
|
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a76971ba9b579907ef937cd7adda89562"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a76971ba9b579907ef937cd7adda89562">SVF::SymbolTableInfo::createObjTypeInfo</a></div><div class="ttdeci">ObjTypeInfo * createObjTypeInfo(const Type *type=nullptr)</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#l00049">SymbolTableInfo.cpp:49</a></div></div>
|
|
890
882
|
<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>
|
|
@@ -918,9 +910,9 @@ Friends</h2></td></tr>
|
|
|
918
910
|
<p>Create an objectInfo based on LLVM type (value is null, and type could be null, representing a dummy object) </p>
|
|
919
911
|
|
|
920
912
|
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00049">49</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
|
|
921
|
-
<div class="fragment"><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <a class="code" href="classSVF_1_1ObjTypeInfo.html">ObjTypeInfo</a>* typeInfo = <span class="keyword">new</span> <a class="code" href="classSVF_1_1ObjTypeInfo.html">ObjTypeInfo</a>(<a class="code" href="classSVF_1_1StInfo.html#ad6e599717952f8ccc2771cd72254b6b2">StInfo::getMaxFieldLimit</a>(),type);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  typeInfo-><a class="code" href="classSVF_1_1ObjTypeInfo.html#a66692043a56c327ac7ac00cc3126cd78">analyzeHeapObjType</a>(type);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordflow">return</span> typeInfo;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> }</div><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#
|
|
922
|
-
<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#
|
|
923
|
-
<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#
|
|
913
|
+
<div class="fragment"><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <a class="code" href="classSVF_1_1ObjTypeInfo.html">ObjTypeInfo</a>* typeInfo = <span class="keyword">new</span> <a class="code" href="classSVF_1_1ObjTypeInfo.html">ObjTypeInfo</a>(<a class="code" href="classSVF_1_1StInfo.html#ad6e599717952f8ccc2771cd72254b6b2">StInfo::getMaxFieldLimit</a>(),type);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  typeInfo-><a class="code" href="classSVF_1_1ObjTypeInfo.html#a66692043a56c327ac7ac00cc3126cd78">analyzeHeapObjType</a>(type);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordflow">return</span> typeInfo;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> }</div><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#l00534">SymbolTableInfo.h:534</a></div></div>
|
|
914
|
+
<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#l00579">SymbolTableInfo.h:579</a></div></div>
|
|
915
|
+
<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#l00516">SymbolTableInfo.cpp:516</a></div></div>
|
|
924
916
|
</div><!-- fragment -->
|
|
925
917
|
</div>
|
|
926
918
|
</div>
|
|
@@ -950,8 +942,8 @@ Friends</h2></td></tr>
|
|
|
950
942
|
<p>Clean up memory. </p>
|
|
951
943
|
<p>Destroy the memory for this symbol table after use </p>
|
|
952
944
|
|
|
953
|
-
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#
|
|
954
|
-
<div class="fragment"><div class="line"><a name="
|
|
945
|
+
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00218">218</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
|
|
946
|
+
<div class="fragment"><div class="line"><a name="l00219"></a><span class="lineno"> 219</span> {</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span> </div><div class="line"><a name="l00221"></a><span class="lineno"> 221</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="l00222"></a><span class="lineno"> 222</span>  ++iter)</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">if</span> (iter->second)</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="keyword">delete</span> iter->second;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  }</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <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="l00228"></a><span class="lineno"> 228</span>  iter != <a class="code" href="classSVF_1_1SymbolTableInfo.html#ad8b9fa0a4e4b91efb80586e692bd0dcd">typeToFieldInfo</a>.end(); ++iter)</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  {</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <span class="keywordflow">if</span> (iter->second)</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  <span class="keyword">delete</span> iter->second;</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> </div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SymbolTableInfo.html#ae577a32079a8e95d0185bfc45d919635">dl</a>){</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <span class="keyword">delete</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#ae577a32079a8e95d0185bfc45d919635">dl</a>;</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <a class="code" href="classSVF_1_1SymbolTableInfo.html#ae577a32079a8e95d0185bfc45d919635">dl</a> = <span class="keyword">nullptr</span>;</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>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SymbolTableInfo.html#af8fdaaa03cd2ae9b7d50f57bc678b8ba">mod</a>){</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <span class="keyword">delete</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#af8fdaaa03cd2ae9b7d50f57bc678b8ba">mod</a>;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <a class="code" href="classSVF_1_1SymbolTableInfo.html#af8fdaaa03cd2ae9b7d50f57bc678b8ba">mod</a> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  }</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span> }</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#l00405">SymbolTableInfo.h:405</a></div></div>
|
|
955
947
|
<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>
|
|
956
948
|
<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>
|
|
957
949
|
<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>
|
|
@@ -983,8 +975,8 @@ Friends</h2></td></tr>
|
|
|
983
975
|
|
|
984
976
|
<p>Another debug method. </p>
|
|
985
977
|
|
|
986
|
-
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#
|
|
987
|
-
<div class="fragment"><div class="line"><a name="
|
|
978
|
+
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00444">444</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
|
|
979
|
+
<div class="fragment"><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>  <a class="code" href="namespaceSVF.html#aedf0d6718ca176e0b9e17ab4b30729c6">OrderedMap<SymID, Value*></a> idmap;</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  <a class="code" href="namespaceSVF.html#ad11fe2412b2182365a662ff0e4639b48">SymID</a> maxid = 0;</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</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="l00449"></a><span class="lineno"> 449</span>  ++iter)</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  {</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ad11fe2412b2182365a662ff0e4639b48">SymID</a> i = iter->second;</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  maxid = max(i, maxid);</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</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="l00454"></a><span class="lineno"> 454</span>  idmap[i] = val;</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>  <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="l00457"></a><span class="lineno"> 457</span>  ++iter)</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>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ad11fe2412b2182365a662ff0e4639b48">SymID</a> i = iter->second;</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  maxid = max(i, maxid);</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</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="l00462"></a><span class="lineno"> 462</span>  idmap[i] = val;</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  }</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  <span class="keywordflow">for</span> (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="l00465"></a><span class="lineno"> 465</span>  ++iter)</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  {</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ad11fe2412b2182365a662ff0e4639b48">SymID</a> i = iter->second;</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  maxid = max(i, maxid);</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</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="l00470"></a><span class="lineno"> 470</span>  idmap[i] = val;</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  }</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  <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="l00473"></a><span class="lineno"> 473</span>  ++iter)</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  {</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ad11fe2412b2182365a662ff0e4639b48">SymID</a> i = iter->second;</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  maxid = max(i, maxid);</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</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="l00478"></a><span class="lineno"> 478</span>  idmap[i] = val;</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  }</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">"{SymbolTableInfo \n"</span>;</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> iter : idmap) {</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</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="l00483"></a><span class="lineno"> 483</span>  }</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">"}\n"</span>;</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</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>
|
|
988
980
|
<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>
|
|
989
981
|
<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#l00388">SVFUtil.cpp:388</a></div></div>
|
|
990
982
|
<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>
|
|
@@ -1117,14 +1109,14 @@ Friends</h2></td></tr>
|
|
|
1117
1109
|
</div><!-- fragment -->
|
|
1118
1110
|
</div>
|
|
1119
1111
|
</div>
|
|
1120
|
-
<a id="
|
|
1121
|
-
<h2 class="memtitle"><span class="permalink"><a href="#
|
|
1112
|
+
<a id="ac50e1d8f8b8e514d098a55bfbac86010"></a>
|
|
1113
|
+
<h2 class="memtitle"><span class="permalink"><a href="#ac50e1d8f8b8e514d098a55bfbac86010">◆ </a></span>getFlattenedFieldIdxVec()</h2>
|
|
1122
1114
|
|
|
1123
1115
|
<div class="memitem">
|
|
1124
1116
|
<div class="memproto">
|
|
1125
1117
|
<table class="memname">
|
|
1126
1118
|
<tr>
|
|
1127
|
-
<td class="memname">const std::vector< <a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> > & SymbolTableInfo::
|
|
1119
|
+
<td class="memname">const std::vector< <a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> > & SymbolTableInfo::getFlattenedFieldIdxVec </td>
|
|
1128
1120
|
<td>(</td>
|
|
1129
1121
|
<td class="paramtype">const <a class="el" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> * </td>
|
|
1130
1122
|
<td class="paramname"><em>T</em></td><td>)</td>
|
|
@@ -1135,19 +1127,19 @@ Friends</h2></td></tr>
|
|
|
1135
1127
|
|
|
1136
1128
|
<p>Get a reference to the components of struct_info. </p>
|
|
1137
1129
|
|
|
1138
|
-
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#
|
|
1139
|
-
<div class="fragment"><div class="line"><a name="
|
|
1130
|
+
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00325">325</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
|
|
1131
|
+
<div class="fragment"><div class="line"><a name="l00326"></a><span class="lineno"> 326</span> {</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a075a16b154514e282fcdd6f116a99e43">getStructInfoIter</a>(T)->second->getFlattenedFieldIdxVec();</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span> }</div><div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a075a16b154514e282fcdd6f116a99e43"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a075a16b154514e282fcdd6f116a99e43">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_8h_source.html#l00347">SymbolTableInfo.h:347</a></div></div>
|
|
1140
1132
|
</div><!-- fragment -->
|
|
1141
1133
|
</div>
|
|
1142
1134
|
</div>
|
|
1143
|
-
<a id="
|
|
1144
|
-
<h2 class="memtitle"><span class="permalink"><a href="#
|
|
1135
|
+
<a id="a9ca564bdc1f40a2ccd30d98e0e4075b0"></a>
|
|
1136
|
+
<h2 class="memtitle"><span class="permalink"><a href="#a9ca564bdc1f40a2ccd30d98e0e4075b0">◆ </a></span>getFlattenedFieldInfoVec()</h2>
|
|
1145
1137
|
|
|
1146
1138
|
<div class="memitem">
|
|
1147
1139
|
<div class="memproto">
|
|
1148
1140
|
<table class="memname">
|
|
1149
1141
|
<tr>
|
|
1150
|
-
<td class="memname">const std::vector< <a class="el" href="
|
|
1142
|
+
<td class="memname">const std::vector< <a class="el" href="classSVF_1_1FlattenedFieldInfo.html">FlattenedFieldInfo</a> > & SymbolTableInfo::getFlattenedFieldInfoVec </td>
|
|
1151
1143
|
<td>(</td>
|
|
1152
1144
|
<td class="paramtype">const <a class="el" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> * </td>
|
|
1153
1145
|
<td class="paramname"><em>T</em></td><td>)</td>
|
|
@@ -1156,29 +1148,39 @@ Friends</h2></td></tr>
|
|
|
1156
1148
|
</table>
|
|
1157
1149
|
</div><div class="memdoc">
|
|
1158
1150
|
|
|
1159
|
-
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#
|
|
1160
|
-
<div class="fragment"><div class="line"><a name="
|
|
1151
|
+
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00330">330</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
|
|
1152
|
+
<div class="fragment"><div class="line"><a name="l00331"></a><span class="lineno"> 331</span> {</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a075a16b154514e282fcdd6f116a99e43">getStructInfoIter</a>(T)->second->getFlattenedFieldInfoVec();</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span> }</div><div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a075a16b154514e282fcdd6f116a99e43"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a075a16b154514e282fcdd6f116a99e43">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_8h_source.html#l00347">SymbolTableInfo.h:347</a></div></div>
|
|
1161
1153
|
</div><!-- fragment -->
|
|
1162
1154
|
</div>
|
|
1163
1155
|
</div>
|
|
1164
|
-
<a id="
|
|
1165
|
-
<h2 class="memtitle"><span class="permalink"><a href="#
|
|
1156
|
+
<a id="a666d1dff7a629bd34abbd2031c1037a4"></a>
|
|
1157
|
+
<h2 class="memtitle"><span class="permalink"><a href="#a666d1dff7a629bd34abbd2031c1037a4">◆ </a></span>getFlatternedFieldType()</h2>
|
|
1166
1158
|
|
|
1167
1159
|
<div class="memitem">
|
|
1168
1160
|
<div class="memproto">
|
|
1169
1161
|
<table class="memname">
|
|
1170
1162
|
<tr>
|
|
1171
|
-
<td class="memname">const
|
|
1163
|
+
<td class="memname">const <a class="el" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> * SymbolTableInfo::getFlatternedFieldType </td>
|
|
1172
1164
|
<td>(</td>
|
|
1173
1165
|
<td class="paramtype">const <a class="el" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> * </td>
|
|
1174
|
-
<td class="paramname"><em>
|
|
1166
|
+
<td class="paramname"><em>baseType</em>, </td>
|
|
1167
|
+
</tr>
|
|
1168
|
+
<tr>
|
|
1169
|
+
<td class="paramkey"></td>
|
|
1175
1170
|
<td></td>
|
|
1171
|
+
<td class="paramtype"><a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> </td>
|
|
1172
|
+
<td class="paramname"><em>field_idx</em> </td>
|
|
1173
|
+
</tr>
|
|
1174
|
+
<tr>
|
|
1175
|
+
<td></td>
|
|
1176
|
+
<td>)</td>
|
|
1177
|
+
<td></td><td></td>
|
|
1176
1178
|
</tr>
|
|
1177
1179
|
</table>
|
|
1178
1180
|
</div><div class="memdoc">
|
|
1179
1181
|
|
|
1180
|
-
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#
|
|
1181
|
-
<div class="fragment"><div class="line"><a name="
|
|
1182
|
+
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00340">340</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
|
|
1183
|
+
<div class="fragment"><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  {</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a075a16b154514e282fcdd6f116a99e43">getStructInfoIter</a>(baseType)->second->getFlatternedFieldType(field_idx);</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span> }</div><div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a075a16b154514e282fcdd6f116a99e43"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a075a16b154514e282fcdd6f116a99e43">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_8h_source.html#l00347">SymbolTableInfo.h:347</a></div></div>
|
|
1182
1184
|
</div><!-- fragment -->
|
|
1183
1185
|
</div>
|
|
1184
1186
|
</div>
|
|
@@ -1206,7 +1208,7 @@ Friends</h2></td></tr>
|
|
|
1206
1208
|
</div><div class="memdoc">
|
|
1207
1209
|
|
|
1208
1210
|
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8h_source.html#l00309">309</a> of file <a class="el" href="SymbolTableInfo_8h_source.html">SymbolTableInfo.h</a>.</p>
|
|
1209
|
-
<div class="fragment"><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  {</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#abb8550c9ef856e45cb7675c3796f9a35">maxStSize</a>;</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  }</div><div class="ttc" id="classSVF_1_1SymbolTableInfo_html_abb8550c9ef856e45cb7675c3796f9a35"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#abb8550c9ef856e45cb7675c3796f9a35">SVF::SymbolTableInfo::maxStSize</a></div><div class="ttdeci">u32_t maxStSize</div><div class="ttdoc">The number of fields in max_struct. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#
|
|
1211
|
+
<div class="fragment"><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  {</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#abb8550c9ef856e45cb7675c3796f9a35">maxStSize</a>;</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  }</div><div class="ttc" id="classSVF_1_1SymbolTableInfo_html_abb8550c9ef856e45cb7675c3796f9a35"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#abb8550c9ef856e45cb7675c3796f9a35">SVF::SymbolTableInfo::maxStSize</a></div><div class="ttdeci">u32_t maxStSize</div><div class="ttdoc">The number of fields in max_struct. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00411">SymbolTableInfo.h:411</a></div></div>
|
|
1210
1212
|
</div><!-- fragment -->
|
|
1211
1213
|
</div>
|
|
1212
1214
|
</div>
|
|
@@ -1306,13 +1308,13 @@ Friends</h2></td></tr>
|
|
|
1306
1308
|
<p>Get modulus offset given the type information </p>
|
|
1307
1309
|
<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>
|
|
1308
1310
|
|
|
1309
|
-
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#
|
|
1310
|
-
<div class="fragment"><div class="line"><a name="
|
|
1311
|
+
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00191">191</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
|
|
1312
|
+
<div class="fragment"><div class="line"><a name="l00192"></a><span class="lineno"> 192</span> {</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span> </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>  <a class="code" href="namespaceSVF.html#a2db29836a72e8d86e9baa6d8d55d2978">Size_t</a> offset = ls.<a class="code" href="classSVF_1_1LocationSet.html#ac098bc95299002b9016684fa7f2799ca">accumulateConstantOffset</a>();</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="keywordflow">if</span>(offset < 0)</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  {</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</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="l00202"></a><span class="lineno"> 202</span>  offset = abs(offset);</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  }</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> maxOffset = obj-><a class="code" href="classSVF_1_1MemObj.html#afccbd809fe7c2acf4741383987036807">getMaxFieldOffsetLimit</a>();</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="keywordflow">if</span> (maxOffset != 0)</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  offset = offset % maxOffset;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  offset = 0;</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span> </div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>(offset);</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span> }</div><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>
|
|
1311
1313
|
<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>
|
|
1312
1314
|
<div class="ttc" id="namespaceSVF_html_a2db29836a72e8d86e9baa6d8d55d2978"><div class="ttname"><a href="namespaceSVF.html#a2db29836a72e8d86e9baa6d8d55d2978">SVF::Size_t</a></div><div class="ttdeci">signed long Size_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00078">SVFBasicTypes.h:78</a></div></div>
|
|
1313
|
-
<div class="ttc" id="classSVF_1_1MemObj_html_afccbd809fe7c2acf4741383987036807"><div class="ttname"><a href="classSVF_1_1MemObj.html#afccbd809fe7c2acf4741383987036807">SVF::MemObj::getMaxFieldOffsetLimit</a></div><div class="ttdeci">Size_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#
|
|
1314
|
-
<div class="ttc" id="
|
|
1315
|
-
<div class="ttc" id="
|
|
1315
|
+
<div class="ttc" id="classSVF_1_1MemObj_html_afccbd809fe7c2acf4741383987036807"><div class="ttname"><a href="classSVF_1_1MemObj.html#afccbd809fe7c2acf4741383987036807">SVF::MemObj::getMaxFieldOffsetLimit</a></div><div class="ttdeci">Size_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#l00643">SymbolTableInfo.cpp:643</a></div></div>
|
|
1316
|
+
<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>
|
|
1317
|
+
<div class="ttc" id="classSVF_1_1LocationSet_html_ac098bc95299002b9016684fa7f2799ca"><div class="ttname"><a href="classSVF_1_1LocationSet.html#ac098bc95299002b9016684fa7f2799ca">SVF::LocationSet::accumulateConstantOffset</a></div><div class="ttdeci">Size_t accumulateConstantOffset() const</div><div class="ttdoc">Get methods. </div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00154">LocationSet.h:154</a></div></div>
|
|
1316
1318
|
</div><!-- fragment -->
|
|
1317
1319
|
</div>
|
|
1318
1320
|
</div>
|
|
@@ -1377,45 +1379,14 @@ Friends</h2></td></tr>
|
|
|
1377
1379
|
</div><!-- fragment -->
|
|
1378
1380
|
</div>
|
|
1379
1381
|
</div>
|
|
1380
|
-
<a id="
|
|
1381
|
-
<h2 class="memtitle"><span class="permalink"><a href="#
|
|
1382
|
+
<a id="a866085ff37b7841606c523817c621f49"></a>
|
|
1383
|
+
<h2 class="memtitle"><span class="permalink"><a href="#a866085ff37b7841606c523817c621f49">◆ </a></span>getOriginalFieldType()</h2>
|
|
1382
1384
|
|
|
1383
1385
|
<div class="memitem">
|
|
1384
1386
|
<div class="memproto">
|
|
1385
1387
|
<table class="memname">
|
|
1386
1388
|
<tr>
|
|
1387
|
-
<td class="memname">const <a class="el" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> * SymbolTableInfo::
|
|
1388
|
-
<td>(</td>
|
|
1389
|
-
<td class="paramtype">const <a class="el" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> * </td>
|
|
1390
|
-
<td class="paramname"><em>baseType</em>, </td>
|
|
1391
|
-
</tr>
|
|
1392
|
-
<tr>
|
|
1393
|
-
<td class="paramkey"></td>
|
|
1394
|
-
<td></td>
|
|
1395
|
-
<td class="paramtype"><a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> </td>
|
|
1396
|
-
<td class="paramname"><em>byteOffset</em> </td>
|
|
1397
|
-
</tr>
|
|
1398
|
-
<tr>
|
|
1399
|
-
<td></td>
|
|
1400
|
-
<td>)</td>
|
|
1401
|
-
<td></td><td></td>
|
|
1402
|
-
</tr>
|
|
1403
|
-
</table>
|
|
1404
|
-
</div><div class="memdoc">
|
|
1405
|
-
|
|
1406
|
-
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00360">360</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
|
|
1407
|
-
<div class="fragment"><div class="line"><a name="l00361"></a><span class="lineno"> 361</span> {</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a075a16b154514e282fcdd6f116a99e43">getStructInfoIter</a>(baseType)->second->getFieldTypeWithByteOffset(byteOffset);</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span> }</div><div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a075a16b154514e282fcdd6f116a99e43"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a075a16b154514e282fcdd6f116a99e43">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_8h_source.html#l00347">SymbolTableInfo.h:347</a></div></div>
|
|
1408
|
-
</div><!-- fragment -->
|
|
1409
|
-
</div>
|
|
1410
|
-
</div>
|
|
1411
|
-
<a id="ad7dec8a89931ef96a26c7f1d23062702"></a>
|
|
1412
|
-
<h2 class="memtitle"><span class="permalink"><a href="#ad7dec8a89931ef96a26c7f1d23062702">◆ </a></span>getOrigSubTypeWithFldInx()</h2>
|
|
1413
|
-
|
|
1414
|
-
<div class="memitem">
|
|
1415
|
-
<div class="memproto">
|
|
1416
|
-
<table class="memname">
|
|
1417
|
-
<tr>
|
|
1418
|
-
<td class="memname">const <a class="el" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> * SymbolTableInfo::getOrigSubTypeWithFldInx </td>
|
|
1389
|
+
<td class="memname">const <a class="el" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> * SymbolTableInfo::getOriginalFieldType </td>
|
|
1419
1390
|
<td>(</td>
|
|
1420
1391
|
<td class="paramtype">const <a class="el" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> * </td>
|
|
1421
1392
|
<td class="paramname"><em>baseType</em>, </td>
|
|
@@ -1433,9 +1404,10 @@ Friends</h2></td></tr>
|
|
|
1433
1404
|
</tr>
|
|
1434
1405
|
</table>
|
|
1435
1406
|
</div><div class="memdoc">
|
|
1407
|
+
<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>
|
|
1436
1408
|
|
|
1437
|
-
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#
|
|
1438
|
-
<div class="fragment"><div class="line"><a name="
|
|
1409
|
+
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00335">335</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
|
|
1410
|
+
<div class="fragment"><div class="line"><a name="l00336"></a><span class="lineno"> 336</span> {</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a075a16b154514e282fcdd6f116a99e43">getStructInfoIter</a>(baseType)->second->getOriginalFieldType(field_idx);</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span> }</div><div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a075a16b154514e282fcdd6f116a99e43"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a075a16b154514e282fcdd6f116a99e43">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_8h_source.html#l00347">SymbolTableInfo.h:347</a></div></div>
|
|
1439
1411
|
</div><!-- fragment -->
|
|
1440
1412
|
</div>
|
|
1441
1413
|
</div>
|
|
@@ -1528,7 +1500,7 @@ Friends</h2></td></tr>
|
|
|
1528
1500
|
<p>Get an iterator for StructInfo, designed as internal methods </p>
|
|
1529
1501
|
|
|
1530
1502
|
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8h_source.html#l00347">347</a> of file <a class="el" href="SymbolTableInfo_8h_source.html">SymbolTableInfo.h</a>.</p>
|
|
1531
|
-
<div class="fragment"><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  {</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(T);</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  TypeToFieldInfoMap::iterator it = <a class="code" href="classSVF_1_1SymbolTableInfo.html#ad8b9fa0a4e4b91efb80586e692bd0dcd">typeToFieldInfo</a>.find(T);</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</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="l00352"></a><span class="lineno"> 352</span>  <span class="keywordflow">return</span> it;</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_1SymbolTableInfo.html#aa99cab5480116905dd41ab0ad24b9462">collectTypeInfo</a>(T);</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</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="l00357"></a><span class="lineno"> 357</span>  }</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</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#
|
|
1503
|
+
<div class="fragment"><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  {</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(T);</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  TypeToFieldInfoMap::iterator it = <a class="code" href="classSVF_1_1SymbolTableInfo.html#ad8b9fa0a4e4b91efb80586e692bd0dcd">typeToFieldInfo</a>.find(T);</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</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="l00352"></a><span class="lineno"> 352</span>  <span class="keywordflow">return</span> it;</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_1SymbolTableInfo.html#aa99cab5480116905dd41ab0ad24b9462">collectTypeInfo</a>(T);</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</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="l00357"></a><span class="lineno"> 357</span>  }</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</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#l00405">SymbolTableInfo.h:405</a></div></div>
|
|
1532
1504
|
<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>
|
|
1533
1505
|
<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#l00072">SymbolTableInfo.cpp:72</a></div></div>
|
|
1534
1506
|
</div><!-- fragment -->
|
|
@@ -1582,8 +1554,8 @@ Friends</h2></td></tr>
|
|
|
1582
1554
|
|
|
1583
1555
|
<p>Helper method to get the size of the type from target data layout. </p>
|
|
1584
1556
|
|
|
1585
|
-
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#
|
|
1586
|
-
<div class="fragment"><div class="line"><a name="
|
|
1557
|
+
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00490">490</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
|
|
1558
|
+
<div class="fragment"><div class="line"><a name="l00491"></a><span class="lineno"> 491</span> {</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span> </div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>  <span class="comment">// if the type has size then simply return it, otherwise just return 0</span></div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  <span class="keywordflow">if</span>(type->isSized())</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</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="l00496"></a><span class="lineno"> 496</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>  <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</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>
|
|
1587
1559
|
<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>
|
|
1588
1560
|
<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>
|
|
1589
1561
|
</div><!-- fragment -->
|
|
@@ -1616,8 +1588,8 @@ Friends</h2></td></tr>
|
|
|
1616
1588
|
</div><div class="memdoc">
|
|
1617
1589
|
<p>if this struct type does not have any element, i.e., opaque </p>
|
|
1618
1590
|
|
|
1619
|
-
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#
|
|
1620
|
-
<div class="fragment"><div class="line"><a name="
|
|
1591
|
+
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00500">500</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
|
|
1592
|
+
<div class="fragment"><div class="line"><a name="l00501"></a><span class="lineno"> 501</span> {</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span> </div><div class="line"><a name="l00503"></a><span class="lineno"> 503</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="l00505"></a><span class="lineno"> 505</span>  <span class="keywordflow">if</span>(sty->isOpaque())</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  <span class="keywordflow">return</span> stTySL->getElementOffset(field_idx);</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</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>
|
|
1621
1593
|
<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>
|
|
1622
1594
|
<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>
|
|
1623
1595
|
</div><!-- fragment -->
|
|
@@ -1652,9 +1624,9 @@ Friends</h2></td></tr>
|
|
|
1652
1624
|
<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>
|
|
1653
1625
|
<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>
|
|
1654
1626
|
<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>
|
|
1655
|
-
<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#
|
|
1627
|
+
<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#l00259">SymbolTableInfo.cpp:259</a></div></div>
|
|
1656
1628
|
<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>
|
|
1657
|
-
<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#
|
|
1629
|
+
<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#l00247">SymbolTableInfo.cpp:247</a></div></div>
|
|
1658
1630
|
<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>
|
|
1659
1631
|
</div><!-- fragment -->
|
|
1660
1632
|
</div>
|
|
@@ -1714,8 +1686,8 @@ Friends</h2></td></tr>
|
|
|
1714
1686
|
</div><div class="memdoc">
|
|
1715
1687
|
|
|
1716
1688
|
<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>
|
|
1717
|
-
<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#
|
|
1718
|
-
<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#
|
|
1689
|
+
<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#l00259">SymbolTableInfo.cpp:259</a></div></div>
|
|
1690
|
+
<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#l00247">SymbolTableInfo.cpp:247</a></div></div>
|
|
1719
1691
|
<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>
|
|
1720
1692
|
</div><!-- fragment -->
|
|
1721
1693
|
</div>
|
|
@@ -1773,8 +1745,8 @@ Friends</h2></td></tr>
|
|
|
1773
1745
|
</div><div class="memdoc">
|
|
1774
1746
|
<p>Check whether this value is a black hole </p>
|
|
1775
1747
|
|
|
1776
|
-
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#
|
|
1777
|
-
<div class="fragment"><div class="line"><a name="
|
|
1748
|
+
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00259">259</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
|
|
1749
|
+
<div class="fragment"><div class="line"><a name="l00260"></a><span class="lineno"> 260</span> {</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <span class="keywordflow">return</span> (SVFUtil::isa<UndefValue>(val));</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span> }</div></div><!-- fragment -->
|
|
1778
1750
|
</div>
|
|
1779
1751
|
</div>
|
|
1780
1752
|
<a id="ad9cdb21e20182f3bc95f04bbb97712f3"></a>
|
|
@@ -1911,17 +1883,17 @@ Friends</h2></td></tr>
|
|
|
1911
1883
|
</div><div class="memdoc">
|
|
1912
1884
|
<p>Check whether this value points-to a constant object </p>
|
|
1913
1885
|
|
|
1914
|
-
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#
|
|
1915
|
-
<div class="fragment"><div class="line"><a name="
|
|
1916
|
-
<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>
|
|
1886
|
+
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00267">267</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
|
|
1887
|
+
<div class="fragment"><div class="line"><a name="l00268"></a><span class="lineno"> 268</span> {</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</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="l00270"></a><span class="lineno"> 270</span>  {</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1cppUtil.html#aeef0f5c6486379043a7d47b0635f2667">cppUtil::isValVtbl</a>(const_cast<GlobalVariable*>(v)))</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!v->hasInitializer()){</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <span class="keywordflow">if</span>(v->isExternalLinkage(v->getLinkage()))</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  }</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  {</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</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="l00282"></a><span class="lineno"> 282</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="l00283"></a><span class="lineno"> 283</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="l00284"></a><span class="lineno"> 284</span>  {</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1FlattenedFieldInfo.html">FlattenedFieldInfo</a> &field = *it;</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</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="l00287"></a><span class="lineno"> 287</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="l00288"></a><span class="lineno"> 288</span>  <span class="keywordflow">if</span> (SVFUtil::isa<PointerType>(elemTy))</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  }</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span> </div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  <span class="keywordflow">return</span> v->isConstant();</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  }</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  }</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a9e85d445e8b7b205134acd3874bba388">SVFUtil::isConstantData</a>(val);</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</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>
|
|
1917
1888
|
<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>
|
|
1889
|
+
<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>
|
|
1918
1890
|
<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>
|
|
1919
|
-
<div class="ttc" id="
|
|
1920
|
-
<div class="ttc" id="classSVF_1_1StInfo_html_a9bb25646a735d612cf777394fa3ba5d6"><div class="ttname"><a href="classSVF_1_1StInfo.html#a9bb25646a735d612cf777394fa3ba5d6">SVF::StInfo::getFlattenFieldInfoVec</a></div><div class="ttdeci">std::vector< FieldInfo > & getFlattenFieldInfoVec()</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00558">SymbolTableInfo.h:558</a></div></div>
|
|
1891
|
+
<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>
|
|
1921
1892
|
<div class="ttc" id="namespaceSVF_1_1cppUtil_html_aeef0f5c6486379043a7d47b0635f2667"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#aeef0f5c6486379043a7d47b0635f2667">SVF::cppUtil::isValVtbl</a></div><div class="ttdeci">bool isValVtbl(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#l00123">CPPUtil.cpp:123</a></div></div>
|
|
1922
1893
|
<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#l00361">SymbolTableInfo.h:361</a></div></div>
|
|
1923
1894
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a9e85d445e8b7b205134acd3874bba388"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a9e85d445e8b7b205134acd3874bba388">SVF::SVFUtil::isConstantData</a></div><div class="ttdeci">bool isConstantData(const Value *val)</div><div class="ttdoc">Return true if the value refers to constant data, e.g., i32 0. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00392">LLVMUtil.h:392</a></div></div>
|
|
1924
|
-
<div class="ttc" id="
|
|
1895
|
+
<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#l00562">SymbolTableInfo.h:562</a></div></div>
|
|
1896
|
+
<div class="ttc" id="classSVF_1_1StInfo_html"><div class="ttname"><a href="classSVF_1_1StInfo.html">SVF::StInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00505">SymbolTableInfo.h:505</a></div></div>
|
|
1925
1897
|
</div><!-- fragment -->
|
|
1926
1898
|
</div>
|
|
1927
1899
|
</div>
|
|
@@ -1981,8 +1953,8 @@ Friends</h2></td></tr>
|
|
|
1981
1953
|
<p>special value </p>
|
|
1982
1954
|
<p>Check whether this value is null pointer </p>
|
|
1983
1955
|
|
|
1984
|
-
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#
|
|
1985
|
-
<div class="fragment"><div class="line"><a name="
|
|
1956
|
+
<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>
|
|
1957
|
+
<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>  <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="l00250"></a><span class="lineno"> 250</span>  {</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <span class="keywordflow">return</span> v->isNullValue() && v->getType()->isPointerTy();</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">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</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>
|
|
1986
1958
|
</div><!-- fragment -->
|
|
1987
1959
|
</div>
|
|
1988
1960
|
</div>
|
|
@@ -2061,17 +2033,17 @@ Friends</h2></td></tr>
|
|
|
2061
2033
|
<p>Debug method. </p>
|
|
2062
2034
|
<p>All rest types are scalar type? </p>
|
|
2063
2035
|
|
|
2064
|
-
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#
|
|
2065
|
-
<div class="fragment"><div class="line"><a name="l00369"></a><span class="lineno"> 369</span> {</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span> </div><div class="line"><a name="l00371"></a><span class="lineno"> 371</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="l00372"></a><span class="lineno"> 372</span>  {</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() <<<span class="stringliteral">" {Type: "</span>;</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  at->print(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>());</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">"}\n"</span>;</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">"\tarray type "</span>;</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</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="l00378"></a><span class="lineno"> 378</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  }</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span> </div><div class="line"><a name="l00381"></a><span class="lineno"> 381</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="l00382"></a><span class="lineno"> 382</span>  {</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() <<<span class="stringliteral">" {Type: "</span>;</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  st->print(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>());</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">"}\n"</span>;</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  std::vector<FieldInfo>& finfo = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a90bca8ff906ea48fb5e3a69da463ccab">getStructInfo</a>(st)-><a class="code" href="classSVF_1_1StInfo.html#a9bb25646a735d612cf777394fa3ba5d6">getFlattenFieldInfoVec</a>();</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  <span class="keywordtype">int</span> field_idx = 0;</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  <span class="keywordflow">for</span>(std::vector<FieldInfo>::iterator it = finfo.begin(), eit = finfo.end();</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  it!=eit; ++it, field_idx++)</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  {</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">" \tField_idx = "</span> << (*it).getFlattenFldIdx() << <span class="stringliteral">" [offset: "</span> << (*it).getFlattenByteOffset();</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">", field type: "</span>;</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  (*it).getFlattenElemTy()->print(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>());</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</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="l00395"></a><span class="lineno"> 395</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">", field stride pair: "</span>;</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  <span class="keywordflow">for</span>(FieldInfo::ElemNumStridePairVec::const_iterator pit = (*it).elemStridePairBegin(),</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  peit = (*it).elemStridePairEnd(); pit!=peit; ++pit)</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  {</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">"[ "</span> << pit->first << <span class="stringliteral">", "</span> << pit->second << <span class="stringliteral">" ] "</span>;</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  }</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  }</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  }</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span> </div><div class="line"><a name="l00406"></a><span class="lineno"> 406</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="l00407"></a><span class="lineno"> 407</span>  {</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</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="l00409"></a><span class="lineno"> 409</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="l00410"></a><span class="lineno"> 410</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">" {Type: "</span>;</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  pt->print(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>());</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">"}\n"</span>;</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</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="l00414"></a><span class="lineno"> 414</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="l00415"></a><span class="lineno"> 415</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  }</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span> </div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  <span class="keywordflow">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="l00419"></a><span class="lineno"> 419</span>  {</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">" {Type: "</span>;</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  fu->getReturnType()->print(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>());</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</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="l00423"></a><span class="lineno"> 423</span>  }</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span> </div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  {</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  <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="l00429"></a><span class="lineno"> 429</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="l00430"></a><span class="lineno"> 430</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() <<<span class="stringliteral">" {Type: "</span>;</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  type->print(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>());</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">"}\n"</span>;</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</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="l00434"></a><span class="lineno"> 434</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">"\n"</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> }</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>
|
|
2036
|
+
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00347">347</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
|
|
2037
|
+
<div class="fragment"><div class="line"><a name="l00348"></a><span class="lineno"> 348</span> {</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span> </div><div class="line"><a name="l00350"></a><span class="lineno"> 350</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="l00351"></a><span class="lineno"> 351</span>  {</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() <<<span class="stringliteral">" {Type: "</span>;</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  at->print(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>());</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">"}\n"</span>;</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">"\tarray type "</span>;</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</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="l00357"></a><span class="lineno"> 357</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">"\n"</span>;</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> </div><div class="line"><a name="l00360"></a><span class="lineno"> 360</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="l00361"></a><span class="lineno"> 361</span>  {</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() <<<span class="stringliteral">" {Type: "</span>;</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  st->print(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>());</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">"}\n"</span>;</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</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="l00366"></a><span class="lineno"> 366</span>  <span class="keywordtype">int</span> field_idx = 0;</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  <span class="keywordflow">for</span>(std::vector<FlattenedFieldInfo>::iterator it = finfo.begin(), eit = finfo.end();</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  it!=eit; ++it, field_idx++)</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  {</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">" \tField_idx = "</span> << (*it).getFlattenFldIdx();</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">", field type: "</span>;</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  (*it).getFlattenElemTy()->print(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>());</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</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="l00374"></a><span class="lineno"> 374</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  }</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  }</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span> </div><div class="line"><a name="l00379"></a><span class="lineno"> 379</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="l00380"></a><span class="lineno"> 380</span>  {</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</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="l00382"></a><span class="lineno"> 382</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="l00383"></a><span class="lineno"> 383</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">" {Type: "</span>;</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  pt->print(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>());</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">"}\n"</span>;</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</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="l00387"></a><span class="lineno"> 387</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="l00388"></a><span class="lineno"> 388</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  }</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span> </div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  <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="l00392"></a><span class="lineno"> 392</span>  {</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">" {Type: "</span>;</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  fu->getReturnType()->print(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>());</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</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="l00396"></a><span class="lineno"> 396</span>  }</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span> </div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  {</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  <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="l00402"></a><span class="lineno"> 402</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="l00403"></a><span class="lineno"> 403</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() <<<span class="stringliteral">" {Type: "</span>;</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  type->print(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>());</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">"}\n"</span>;</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</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="l00407"></a><span class="lineno"> 407</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  }</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</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>
|
|
2066
2038
|
<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>
|
|
2067
2039
|
<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>
|
|
2068
2040
|
<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>
|
|
2069
2041
|
<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>
|
|
2070
|
-
<div class="ttc" id="classSVF_1_1StInfo_html_a9bb25646a735d612cf777394fa3ba5d6"><div class="ttname"><a href="classSVF_1_1StInfo.html#a9bb25646a735d612cf777394fa3ba5d6">SVF::StInfo::getFlattenFieldInfoVec</a></div><div class="ttdeci">std::vector< FieldInfo > & getFlattenFieldInfoVec()</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00558">SymbolTableInfo.h:558</a></div></div>
|
|
2071
2042
|
<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>
|
|
2072
2043
|
<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#l00361">SymbolTableInfo.h:361</a></div></div>
|
|
2073
2044
|
<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>
|
|
2074
|
-
<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#
|
|
2045
|
+
<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#l00490">SymbolTableInfo.cpp:490</a></div></div>
|
|
2046
|
+
<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#l00562">SymbolTableInfo.h:562</a></div></div>
|
|
2075
2047
|
</div><!-- fragment -->
|
|
2076
2048
|
</div>
|
|
2077
2049
|
</div>
|
|
@@ -2251,8 +2223,8 @@ Friends</h2></td></tr>
|
|
|
2251
2223
|
</table>
|
|
2252
2224
|
</div><div class="memdoc">
|
|
2253
2225
|
|
|
2254
|
-
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#
|
|
2255
|
-
<div class="fragment"><div class="line"><a name="
|
|
2226
|
+
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00411">411</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
|
|
2227
|
+
<div class="fragment"><div class="line"><a name="l00412"></a><span class="lineno"> 412</span> {</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  <span class="keywordflow">switch</span> (symtype) {</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  <span class="keywordflow">case</span> SYMTYPE::BlackHole: {</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  <span class="keywordflow">return</span> <span class="stringliteral">"BlackHole"</span>;</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  }</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  <span class="keywordflow">case</span> SYMTYPE::ConstantObj: {</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  <span class="keywordflow">return</span> <span class="stringliteral">"ConstantObj"</span>;</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  }</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  <span class="keywordflow">case</span> SYMTYPE::BlkPtr: {</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  <span class="keywordflow">return</span> <span class="stringliteral">"BlkPtr"</span>;</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  }</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  <span class="keywordflow">case</span> SYMTYPE::NullPtr: {</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  <span class="keywordflow">return</span> <span class="stringliteral">"NullPtr"</span>;</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  }</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  <span class="keywordflow">case</span> SYMTYPE::ValSymbol: {</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  <span class="keywordflow">return</span> <span class="stringliteral">"ValSym"</span>;</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  }</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  <span class="keywordflow">case</span> SYMTYPE::ObjSymbol: {</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  <span class="keywordflow">return</span> <span class="stringliteral">"ObjSym"</span>;</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  }</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  <span class="keywordflow">case</span> SYMTYPE::RetSymbol: {</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  <span class="keywordflow">return</span> <span class="stringliteral">"RetSym"</span>;</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  }</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  <span class="keywordflow">case</span> SYMTYPE::VarargSymbol: {</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  <span class="keywordflow">return</span> <span class="stringliteral">"VarargSym"</span>;</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  }</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  <span class="keywordflow">default</span>: {</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  <span class="keywordflow">return</span> <span class="stringliteral">"Invalid SYMTYPE"</span>;</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  }</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  }</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span> }</div></div><!-- fragment -->
|
|
2256
2228
|
</div>
|
|
2257
2229
|
</div>
|
|
2258
2230
|
<a id="a8f3cb8a1db34dd692ee04561f4edeebf"></a>
|
|
@@ -2437,7 +2409,7 @@ Friends</h2></td></tr>
|
|
|
2437
2409
|
|
|
2438
2410
|
<p>The struct type with the most fields. </p>
|
|
2439
2411
|
|
|
2440
|
-
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8h_source.html#
|
|
2412
|
+
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8h_source.html#l00408">408</a> of file <a class="el" href="SymbolTableInfo_8h_source.html">SymbolTableInfo.h</a>.</p>
|
|
2441
2413
|
|
|
2442
2414
|
</div>
|
|
2443
2415
|
</div>
|
|
@@ -2463,7 +2435,7 @@ Friends</h2></td></tr>
|
|
|
2463
2435
|
|
|
2464
2436
|
<p>The number of fields in max_struct. </p>
|
|
2465
2437
|
|
|
2466
|
-
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8h_source.html#
|
|
2438
|
+
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8h_source.html#l00411">411</a> of file <a class="el" href="SymbolTableInfo_8h_source.html">SymbolTableInfo.h</a>.</p>
|
|
2467
2439
|
|
|
2468
2440
|
</div>
|
|
2469
2441
|
</div>
|
|
@@ -2668,7 +2640,7 @@ Friends</h2></td></tr>
|
|
|
2668
2640
|
</div><div class="memdoc">
|
|
2669
2641
|
<p>Every type T is mapped to <a class="el" href="classSVF_1_1StInfo.html">StInfo</a> which contains size (fsize) , offset(foffset) fsize[i] is the number of fields in the largest such struct, else fsize[i] = 1. fsize[0] is always the size of the expanded struct. </p>
|
|
2670
2642
|
|
|
2671
|
-
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8h_source.html#
|
|
2643
|
+
<p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8h_source.html#l00405">405</a> of file <a class="el" href="SymbolTableInfo_8h_source.html">SymbolTableInfo.h</a>.</p>
|
|
2672
2644
|
|
|
2673
2645
|
</div>
|
|
2674
2646
|
</div>
|