svf-tools 1.0.565 → 1.0.567
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/CallGraphBuilder_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/DCHG_8cpp_source.html +10 -10
- package/SVF-doxygen/html/html/DCHG_8h_source.html +5 -5
- package/SVF-doxygen/html/html/DataFlowUtil_8h_source.html +2 -2
- package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/MHP_8cpp.html +1 -1
- package/SVF-doxygen/html/html/MHP_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/MHP_8h_source.html +1 -1
- package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/MTA_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/MTA_8h_source.html +2 -2
- package/SVF-doxygen/html/html/PCG_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVF-FE_2BasicTypes_8h.html +0 -80
- package/SVF-doxygen/html/html/SVF-FE_2BasicTypes_8h_source.html +22 -62
- package/SVF-doxygen/html/html/SVFG_8cpp_source.html +5 -4
- package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +1 -3
- package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/TCT_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/TCT_8h_source.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CallGraphBuilder.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +43 -43
- package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MHP.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MTA.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PCG.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraphBuilder.html +1 -1
- package/SVF-doxygen/html/html/namespaceSVF.html +21 -741
- package/SVF-doxygen/html/html/namespaceSVF_1_1LLVMUtil.html +3 -3
- package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +1 -3
- package/SVF-doxygen/html/html/namespacemembers.html +0 -33
- package/SVF-doxygen/html/html/namespacemembers_b.html +2 -5
- package/SVF-doxygen/html/html/namespacemembers_c.html +0 -6
- package/SVF-doxygen/html/html/namespacemembers_d.html +1 -19
- package/SVF-doxygen/html/html/namespacemembers_g.html +3 -15
- package/SVF-doxygen/html/html/namespacemembers_i.html +4 -16
- package/SVF-doxygen/html/html/namespacemembers_m.html +0 -21
- package/SVF-doxygen/html/html/namespacemembers_n.html +0 -3
- package/SVF-doxygen/html/html/namespacemembers_p.html +0 -3
- package/SVF-doxygen/html/html/namespacemembers_s.html +0 -3
- package/SVF-doxygen/html/html/namespacemembers_type.html +0 -33
- package/SVF-doxygen/html/html/namespacemembers_type_b.html +0 -3
- package/SVF-doxygen/html/html/namespacemembers_type_c.html +0 -6
- package/SVF-doxygen/html/html/namespacemembers_type_d.html +0 -18
- package/SVF-doxygen/html/html/namespacemembers_type_g.html +0 -12
- package/SVF-doxygen/html/html/namespacemembers_type_i.html +0 -12
- package/SVF-doxygen/html/html/namespacemembers_type_m.html +0 -21
- package/SVF-doxygen/html/html/namespacemembers_type_n.html +0 -3
- package/SVF-doxygen/html/html/namespacemembers_type_p.html +0 -3
- package/SVF-doxygen/html/html/namespacemembers_type_s.html +0 -3
- package/SVF-doxygen/html/html/namespacemembers_type_v.html +0 -3
- package/SVF-doxygen/html/html/namespacemembers_type_w.html +0 -3
- package/SVF-doxygen/html/html/namespacemembers_v.html +0 -3
- package/SVF-doxygen/html/html/namespacemembers_w.html +0 -3
- package/SVF-doxygen/html/html/search/all_1.js +0 -11
- package/SVF-doxygen/html/html/search/all_10.js +0 -1
- package/SVF-doxygen/html/html/search/all_12.js +0 -1
- package/SVF-doxygen/html/html/search/all_15.js +0 -1
- package/SVF-doxygen/html/html/search/all_16.js +0 -1
- package/SVF-doxygen/html/html/search/all_2.js +0 -1
- package/SVF-doxygen/html/html/search/all_3.js +0 -2
- package/SVF-doxygen/html/html/search/all_4.js +0 -6
- package/SVF-doxygen/html/html/search/all_7.js +0 -4
- package/SVF-doxygen/html/html/search/all_9.js +0 -4
- package/SVF-doxygen/html/html/search/all_d.js +0 -7
- package/SVF-doxygen/html/html/search/all_e.js +0 -1
- package/SVF-doxygen/html/html/search/typedefs_0.js +0 -11
- package/SVF-doxygen/html/html/search/typedefs_1.js +0 -1
- package/SVF-doxygen/html/html/search/typedefs_10.js +0 -1
- package/SVF-doxygen/html/html/search/typedefs_13.js +0 -1
- package/SVF-doxygen/html/html/search/typedefs_14.js +0 -1
- package/SVF-doxygen/html/html/search/typedefs_2.js +0 -2
- package/SVF-doxygen/html/html/search/typedefs_3.js +0 -6
- package/SVF-doxygen/html/html/search/typedefs_6.js +0 -4
- package/SVF-doxygen/html/html/search/typedefs_7.js +0 -4
- package/SVF-doxygen/html/html/search/typedefs_b.js +0 -7
- package/SVF-doxygen/html/html/search/typedefs_c.js +0 -1
- package/SVF-doxygen/html/html/search/typedefs_e.js +0 -1
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01SVFG_01_5_01_4.html +8 -7
- package/include/SVF-FE/BasicTypes.h +4 -0
- package/lib/Graphs/SVFG.cpp +8 -0
- package/package.json +1 -1
|
@@ -471,26 +471,26 @@ Additional Inherited Members</h2></td></tr>
|
|
|
471
471
|
<div class="ttc" id="classSVF_1_1DCHGraph_html_a9ed6b91fad334605f514049a2072b538"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#a9ed6b91fad334605f514049a2072b538">SVF::DCHGraph::getOrCreateNode</a></div><div class="ttdeci">DCHNode * getOrCreateNode(const DIType *type)</div><div class="ttdoc">Creates a node from type, or returns it if it exists. </div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8cpp_source.html#l00403">DCHG.cpp:403</a></div></div>
|
|
472
472
|
<div class="ttc" id="classSVF_1_1DCHEdge_html_a48f01c4a02c4e278a1ab70b16efdef4ba8b07351616a1798fa34ec3828f485ebb"><div class="ttname"><a href="classSVF_1_1DCHEdge.html#a48f01c4a02c4e278a1ab70b16efdef4ba8b07351616a1798fa34ec3828f485ebb">SVF::DCHEdge::STD_DEF</a></div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8h_source.html#l00038">DCHG.h:38</a></div></div>
|
|
473
473
|
<div class="ttc" id="classSVF_1_1DCHGraph_html_a1215db390515a30fbc416fb14d2e863f"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#a1215db390515a30fbc416fb14d2e863f">SVF::DCHGraph::buildVTables</a></div><div class="ttdeci">void buildVTables(const SVFModule &module)</div><div class="ttdoc">Finds all defined virtual functions and attaches them to nodes. </div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8cpp_source.html#l00166">DCHG.cpp:166</a></div></div>
|
|
474
|
-
<div class="ttc" id="namespaceSVF_html_aded9b991c77acc5284ccead0739e84f1"><div class="ttname"><a href="namespaceSVF.html#aded9b991c77acc5284ccead0739e84f1">SVF::DICompositeType</a></div><div class="ttdeci">llvm::DICompositeType DICompositeType</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#
|
|
474
|
+
<div class="ttc" id="namespaceSVF_html_aded9b991c77acc5284ccead0739e84f1"><div class="ttname"><a href="namespaceSVF.html#aded9b991c77acc5284ccead0739e84f1">SVF::DICompositeType</a></div><div class="ttdeci">llvm::DICompositeType DICompositeType</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00150">BasicTypes.h:150</a></div></div>
|
|
475
475
|
<div class="ttc" id="classSVF_1_1DCHGraph_html_a671f379ae54eef247b5e013478eb3f0c"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#a671f379ae54eef247b5e013478eb3f0c">SVF::DCHGraph::handleDISubroutineType</a></div><div class="ttdeci">void handleDISubroutineType(const DISubroutineType *subroutineType)</div><div class="ttdoc">Construction helper to process DISubroutineTypes. </div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8cpp_source.html#l00133">DCHG.cpp:133</a></div></div>
|
|
476
476
|
<div class="ttc" id="classSVF_1_1LLVMModuleSet_html_ae265a7f3cc7367d62013e0f15cf3d233"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ae265a7f3cc7367d62013e0f15cf3d233">SVF::LLVMModuleSet::getModuleNum</a></div><div class="ttdeci">u32_t getModuleNum() const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00095">LLVMModule.h:95</a></div></div>
|
|
477
477
|
<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#l00085">SVFBasicTypes.h:85</a></div></div>
|
|
478
478
|
<div class="ttc" id="classSVF_1_1Options_html_adf6c289ef9f2d0196984dd4024ea4316"><div class="ttname"><a href="classSVF_1_1Options.html#adf6c289ef9f2d0196984dd4024ea4316">SVF::Options::PrintDCHG</a></div><div class="ttdeci">static const llvm::cl::opt< bool > PrintDCHG</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00208">Options.h:208</a></div></div>
|
|
479
479
|
<div class="ttc" id="classSVF_1_1GenericGraph_html_a4bef15157423cef48dc7333a803cd27d"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">SVF::GenericGraph< DCHNode, DCHEdge >::end</a></div><div class="ttdeci">iterator end()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00369">GenericGraph.h:369</a></div></div>
|
|
480
480
|
<div class="ttc" id="classSVF_1_1DCHGraph_html_a294a2075c97e1db8003393fb472c1def"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#a294a2075c97e1db8003393fb472c1def">SVF::DCHGraph::addEdge</a></div><div class="ttdeci">DCHEdge * addEdge(const DIType *t1, const DIType *t2, DCHEdge::GEdgeKind et)</div><div class="ttdoc">Creates an edge between from t1 to t2. </div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8cpp_source.html#l00421">DCHG.cpp:421</a></div></div>
|
|
481
|
-
<div class="ttc" id="namespaceSVF_html_a090e0791e8c200104ed3ab6bab157129"><div class="ttname"><a href="namespaceSVF.html#a090e0791e8c200104ed3ab6bab157129">SVF::DISubroutineType</a></div><div class="ttdeci">llvm::DISubroutineType DISubroutineType</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#
|
|
481
|
+
<div class="ttc" id="namespaceSVF_html_a090e0791e8c200104ed3ab6bab157129"><div class="ttname"><a href="namespaceSVF.html#a090e0791e8c200104ed3ab6bab157129">SVF::DISubroutineType</a></div><div class="ttdeci">llvm::DISubroutineType DISubroutineType</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00153">BasicTypes.h:153</a></div></div>
|
|
482
482
|
<div class="ttc" id="classSVF_1_1GenericGraph_html_ac213302cf5c7cdf3b66f7b18649d0fbc"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#ac213302cf5c7cdf3b66f7b18649d0fbc">SVF::GenericGraph< DCHNode, DCHEdge >::iterator</a></div><div class="ttdeci">IDToNodeMapTy::iterator iterator</div><div class="ttdoc">Node Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00342">GenericGraph.h:342</a></div></div>
|
|
483
483
|
<div class="ttc" id="classSVF_1_1DCHGraph_html_a1a4162e68b22d53e9dca73c6780ed3e5"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#a1a4162e68b22d53e9dca73c6780ed3e5">SVF::DCHGraph::handleDIDerivedType</a></div><div class="ttdeci">void handleDIDerivedType(const DIDerivedType *derivedType)</div><div class="ttdoc">Construction helper to process DIDerivedTypes. </div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8cpp_source.html#l00097">DCHG.cpp:97</a></div></div>
|
|
484
484
|
<div class="ttc" id="cJSON_8cpp_html_a3f9a0d3265a6254722587175dac3e4dc"><div class="ttname"><a href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a></div><div class="ttdeci">newitem type</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l02739">cJSON.cpp:2739</a></div></div>
|
|
485
|
-
<div class="ttc" id="namespaceSVF_html_a852e75c562139237fcc754c7461533e6"><div class="ttname"><a href="namespaceSVF.html#a852e75c562139237fcc754c7461533e6">SVF::DIDerivedType</a></div><div class="ttdeci">llvm::DIDerivedType DIDerivedType</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#
|
|
485
|
+
<div class="ttc" id="namespaceSVF_html_a852e75c562139237fcc754c7461533e6"><div class="ttname"><a href="namespaceSVF.html#a852e75c562139237fcc754c7461533e6">SVF::DIDerivedType</a></div><div class="ttdeci">llvm::DIDerivedType DIDerivedType</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00151">BasicTypes.h:151</a></div></div>
|
|
486
486
|
<div class="ttc" id="classSVF_1_1DCHGraph_html_a5f08ed4cbba3e4b7a348d5ad77664726"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#a5f08ed4cbba3e4b7a348d5ad77664726">SVF::DCHGraph::print</a></div><div class="ttdeci">void print(void)</div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8cpp_source.html#l01128">DCHG.cpp:1128</a></div></div>
|
|
487
|
-
<div class="ttc" id="namespaceSVF_html_a5ae98f122c64b0114df2e5861b341321"><div class="ttname"><a href="namespaceSVF.html#a5ae98f122c64b0114df2e5861b341321">SVF::DebugInfoFinder</a></div><div class="ttdeci">llvm::DebugInfoFinder DebugInfoFinder</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#
|
|
487
|
+
<div class="ttc" id="namespaceSVF_html_a5ae98f122c64b0114df2e5861b341321"><div class="ttname"><a href="namespaceSVF.html#a5ae98f122c64b0114df2e5861b341321">SVF::DebugInfoFinder</a></div><div class="ttdeci">llvm::DebugInfoFinder DebugInfoFinder</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00152">BasicTypes.h:152</a></div></div>
|
|
488
488
|
<div class="ttc" id="classSVF_1_1DCHGraph_html_a86bf48776ccf53092f4cb742cf95f8eb"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#a86bf48776ccf53092f4cb742cf95f8eb">SVF::DCHGraph::handleDIBasicType</a></div><div class="ttdeci">void handleDIBasicType(const DIBasicType *basicType)</div><div class="ttdoc">Construction helper to process DIBasicTypes. </div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8cpp_source.html#l00022">DCHG.cpp:22</a></div></div>
|
|
489
489
|
<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#l00070">LLVMModule.h:70</a></div></div>
|
|
490
|
-
<div class="ttc" id="namespaceSVF_html_ada0513be7e25325325ccc9183aeca278"><div class="ttname"><a href="namespaceSVF.html#ada0513be7e25325325ccc9183aeca278">SVF::DIBasicType</a></div><div class="ttdeci">llvm::DIBasicType DIBasicType</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#
|
|
490
|
+
<div class="ttc" id="namespaceSVF_html_ada0513be7e25325325ccc9183aeca278"><div class="ttname"><a href="namespaceSVF.html#ada0513be7e25325325ccc9183aeca278">SVF::DIBasicType</a></div><div class="ttdeci">llvm::DIBasicType DIBasicType</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00154">BasicTypes.h:154</a></div></div>
|
|
491
491
|
<div class="ttc" id="classSVF_1_1DCHGraph_html_a3ce75cbe92a1fa7d34c6fca2d2ca1b0f"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#a3ce75cbe92a1fa7d34c6fca2d2ca1b0f">SVF::DCHGraph::handleDICompositeType</a></div><div class="ttdeci">void handleDICompositeType(const DICompositeType *compositeType)</div><div class="ttdoc">Construction helper to process DICompositeTypes. </div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8cpp_source.html#l00027">DCHG.cpp:27</a></div></div>
|
|
492
492
|
<div class="ttc" id="classSVF_1_1DCHGraph_html_aa6f49dfc9e3580d3f2d8c257395eb11e"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#aa6f49dfc9e3580d3f2d8c257395eb11e">SVF::DCHGraph::extended</a></div><div class="ttdeci">bool extended</div><div class="ttdoc">Whether this CHG is an extended CHG (first-field). Set by buildCHG. </div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8h_source.html#l00356">DCHG.h:356</a></div></div>
|
|
493
|
-
<div class="ttc" id="namespaceSVF_html_ad127b0ad478640ede3d426e3a58d2632"><div class="ttname"><a href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">SVF::DIType</a></div><div class="ttdeci">llvm::DIType DIType</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#
|
|
493
|
+
<div class="ttc" id="namespaceSVF_html_ad127b0ad478640ede3d426e3a58d2632"><div class="ttname"><a href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">SVF::DIType</a></div><div class="ttdeci">llvm::DIType DIType</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00149">BasicTypes.h:149</a></div></div>
|
|
494
494
|
</div><!-- fragment -->
|
|
495
495
|
</div>
|
|
496
496
|
</div>
|
|
@@ -539,7 +539,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
539
539
|
<div class="ttc" id="namespaceSVF_html_a911dbaab38cb42deb9c195c7f687853d"><div class="ttname"><a href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">SVF::ConstantExpr</a></div><div class="ttdeci">llvm::ConstantExpr ConstantExpr</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00061">BasicTypes.h:61</a></div></div>
|
|
540
540
|
<div class="ttc" id="classSVF_1_1SVFModule_html_a8a34164634d6ad9a7b76175907c8c44b"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a8a34164634d6ad9a7b76175907c8c44b">SVF::SVFModule::global_end</a></div><div class="ttdeci">global_iterator global_end()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00181">SVFModule.h:181</a></div></div>
|
|
541
541
|
<div class="ttc" id="classSVF_1_1DCHNode_html_a11ad6b4fc518f6307727f6b76f7f6f53"><div class="ttname"><a href="classSVF_1_1DCHNode.html#a11ad6b4fc518f6307727f6b76f7f6f53">SVF::DCHNode::getVfnVector</a></div><div class="ttdeci">std::vector< const Function * > & getVfnVector(unsigned n)</div><div class="ttdoc">Return the nth virtual function vector in the vtable. </div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8h_source.html#l00181">DCHG.h:181</a></div></div>
|
|
542
|
-
<div class="ttc" id="namespaceSVF_html_ad127b0ad478640ede3d426e3a58d2632"><div class="ttname"><a href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">SVF::DIType</a></div><div class="ttdeci">llvm::DIType DIType</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#
|
|
542
|
+
<div class="ttc" id="namespaceSVF_html_ad127b0ad478640ede3d426e3a58d2632"><div class="ttname"><a href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">SVF::DIType</a></div><div class="ttdeci">llvm::DIType DIType</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00149">BasicTypes.h:149</a></div></div>
|
|
543
543
|
</div><!-- fragment -->
|
|
544
544
|
</div>
|
|
545
545
|
</div>
|
|
@@ -693,7 +693,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
693
693
|
<div class="ttc" id="classSVF_1_1DCHGraph_html_a96c68bbb5ee5e939158ce0b67da2c61d"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#a96c68bbb5ee5e939158ce0b67da2c61d">SVF::DCHGraph::getNode</a></div><div class="ttdeci">DCHNode * getNode(const DIType *type)</div><div class="ttdoc">Returns the node for type (nullptr if it doesn&#39;t exist). </div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8h_source.html#l00424">DCHG.h:424</a></div></div>
|
|
694
694
|
<div class="ttc" id="classSVF_1_1DCHGraph_html_a58341e23c1dc2b3e7fce190ed16a8a25"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#a58341e23c1dc2b3e7fce190ed16a8a25">SVF::DCHGraph::hasNode</a></div><div class="ttdeci">bool hasNode(const DIType *type)</div><div class="ttdoc">Checks if a node exists for type. </div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8h_source.html#l00417">DCHG.h:417</a></div></div>
|
|
695
695
|
<div class="ttc" id="classSVF_1_1DCHGraph_html_a079feacdcc3783f4a9108a3b2d2aed2c"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#a079feacdcc3783f4a9108a3b2d2aed2c">SVF::DCHGraph::getCanonicalType</a></div><div class="ttdeci">const DIType * getCanonicalType(const DIType *t)</div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8cpp_source.html#l00710">DCHG.cpp:710</a></div></div>
|
|
696
|
-
<div class="ttc" id="namespaceSVF_html_ad127b0ad478640ede3d426e3a58d2632"><div class="ttname"><a href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">SVF::DIType</a></div><div class="ttdeci">llvm::DIType DIType</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#
|
|
696
|
+
<div class="ttc" id="namespaceSVF_html_ad127b0ad478640ede3d426e3a58d2632"><div class="ttname"><a href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">SVF::DIType</a></div><div class="ttdeci">llvm::DIType DIType</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00149">BasicTypes.h:149</a></div></div>
|
|
697
697
|
</div><!-- fragment -->
|
|
698
698
|
</div>
|
|
699
699
|
</div>
|
|
@@ -725,16 +725,16 @@ Additional Inherited Members</h2></td></tr>
|
|
|
725
725
|
|
|
726
726
|
<p class="definition">Definition at line <a class="el" href="DCHG_8cpp_source.html#l00955">955</a> of file <a class="el" href="DCHG_8cpp_source.html">DCHG.cpp</a>.</p>
|
|
727
727
|
<div class="fragment"><div class="line"><a name="l00956"></a><span class="lineno"> 956</span> {</div><div class="line"><a name="l00957"></a><span class="lineno"> 957</span>  std::stringstream ss;</div><div class="line"><a name="l00958"></a><span class="lineno"> 958</span> </div><div class="line"><a name="l00959"></a><span class="lineno"> 959</span>  <span class="keywordflow">if</span> (t == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00960"></a><span class="lineno"> 960</span>  {</div><div class="line"><a name="l00961"></a><span class="lineno"> 961</span>  <span class="keywordflow">return</span> <span class="stringliteral">"void"</span>;</div><div class="line"><a name="l00962"></a><span class="lineno"> 962</span>  }</div><div class="line"><a name="l00963"></a><span class="lineno"> 963</span> </div><div class="line"><a name="l00964"></a><span class="lineno"> 964</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ada0513be7e25325325ccc9183aeca278">DIBasicType</a> *bt = SVFUtil::dyn_cast<DIBasicType>(t))</div><div class="line"><a name="l00965"></a><span class="lineno"> 965</span>  {</div><div class="line"><a name="l00966"></a><span class="lineno"> 966</span>  ss << bt->getName().str();</div><div class="line"><a name="l00967"></a><span class="lineno"> 967</span>  }</div><div class="line"><a name="l00968"></a><span class="lineno"> 968</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a852e75c562139237fcc754c7461533e6">DIDerivedType</a> *dt = SVFUtil::dyn_cast<DIDerivedType>(t))</div><div class="line"><a name="l00969"></a><span class="lineno"> 969</span>  {</div><div class="line"><a name="l00970"></a><span class="lineno"> 970</span>  <span class="keywordflow">if</span> (dt->getName() == <span class="stringliteral">"__vtbl_ptr_type"</span>)</div><div class="line"><a name="l00971"></a><span class="lineno"> 971</span>  {</div><div class="line"><a name="l00972"></a><span class="lineno"> 972</span>  ss << <span class="stringliteral">"(vtbl * =) __vtbl_ptr_type"</span>;</div><div class="line"><a name="l00973"></a><span class="lineno"> 973</span>  }</div><div class="line"><a name="l00974"></a><span class="lineno"> 974</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (dt->getTag() == dwarf::DW_TAG_const_type)</div><div class="line"><a name="l00975"></a><span class="lineno"> 975</span>  {</div><div class="line"><a name="l00976"></a><span class="lineno"> 976</span>  ss << <span class="stringliteral">"const "</span> << <a class="code" href="classSVF_1_1DCHGraph.html#a2dc488345cc3a5f37079952f638d8c2b">diTypeToStr</a>(dt->getBaseType());</div><div class="line"><a name="l00977"></a><span class="lineno"> 977</span>  }</div><div class="line"><a name="l00978"></a><span class="lineno"> 978</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (dt->getTag() == dwarf::DW_TAG_volatile_type)</div><div class="line"><a name="l00979"></a><span class="lineno"> 979</span>  {</div><div class="line"><a name="l00980"></a><span class="lineno"> 980</span>  ss << <span class="stringliteral">"volatile "</span> << <a class="code" href="classSVF_1_1DCHGraph.html#a2dc488345cc3a5f37079952f638d8c2b">diTypeToStr</a>(dt->getBaseType());</div><div class="line"><a name="l00981"></a><span class="lineno"> 981</span>  }</div><div class="line"><a name="l00982"></a><span class="lineno"> 982</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (dt->getTag() == dwarf::DW_TAG_restrict_type)</div><div class="line"><a name="l00983"></a><span class="lineno"> 983</span>  {</div><div class="line"><a name="l00984"></a><span class="lineno"> 984</span>  ss << <span class="stringliteral">"restrict "</span> << <a class="code" href="classSVF_1_1DCHGraph.html#a2dc488345cc3a5f37079952f638d8c2b">diTypeToStr</a>(dt->getBaseType());</div><div class="line"><a name="l00985"></a><span class="lineno"> 985</span>  }</div><div class="line"><a name="l00986"></a><span class="lineno"> 986</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (dt->getTag() == dwarf::DW_TAG_atomic_type)</div><div class="line"><a name="l00987"></a><span class="lineno"> 987</span>  {</div><div class="line"><a name="l00988"></a><span class="lineno"> 988</span>  ss << <span class="stringliteral">"atomic "</span> << <a class="code" href="classSVF_1_1DCHGraph.html#a2dc488345cc3a5f37079952f638d8c2b">diTypeToStr</a>(dt->getBaseType());</div><div class="line"><a name="l00989"></a><span class="lineno"> 989</span>  }</div><div class="line"><a name="l00990"></a><span class="lineno"> 990</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (dt->getTag() == dwarf::DW_TAG_pointer_type)</div><div class="line"><a name="l00991"></a><span class="lineno"> 991</span>  {</div><div class="line"><a name="l00992"></a><span class="lineno"> 992</span>  ss << <a class="code" href="classSVF_1_1DCHGraph.html#a2dc488345cc3a5f37079952f638d8c2b">diTypeToStr</a>(dt->getBaseType()) << <span class="stringliteral">" *"</span>;</div><div class="line"><a name="l00993"></a><span class="lineno"> 993</span>  }</div><div class="line"><a name="l00994"></a><span class="lineno"> 994</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (dt->getTag() == dwarf::DW_TAG_ptr_to_member_type)</div><div class="line"><a name="l00995"></a><span class="lineno"> 995</span>  {</div><div class="line"><a name="l00996"></a><span class="lineno"> 996</span>  ss << <a class="code" href="classSVF_1_1DCHGraph.html#a2dc488345cc3a5f37079952f638d8c2b">diTypeToStr</a>(dt->getBaseType())</div><div class="line"><a name="l00997"></a><span class="lineno"> 997</span>  << <span class="stringliteral">" "</span> << <a class="code" href="classSVF_1_1DCHGraph.html#a2dc488345cc3a5f37079952f638d8c2b">diTypeToStr</a>(SVFUtil::dyn_cast<DIType>(dt->getExtraData())) << <span class="stringliteral">"::*"</span>;</div><div class="line"><a name="l00998"></a><span class="lineno"> 998</span>  }</div><div class="line"><a name="l00999"></a><span class="lineno"> 999</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (dt->getTag() == dwarf::DW_TAG_reference_type)</div><div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>  {</div><div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>  ss << <a class="code" href="classSVF_1_1DCHGraph.html#a2dc488345cc3a5f37079952f638d8c2b">diTypeToStr</a>(dt->getBaseType()) << <span class="stringliteral">" &"</span>;</div><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>  }</div><div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (dt->getTag() == dwarf::DW_TAG_rvalue_reference_type)</div><div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>  {</div><div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>  ss << <a class="code" href="classSVF_1_1DCHGraph.html#a2dc488345cc3a5f37079952f638d8c2b">diTypeToStr</a>(dt->getBaseType()) << <span class="stringliteral">" &&"</span>;</div><div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>  }</div><div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (dt->getTag() == dwarf::DW_TAG_typedef)</div><div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>  {</div><div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>  ss << dt->getName().str() << <span class="stringliteral">"->"</span> << <a class="code" href="classSVF_1_1DCHGraph.html#a2dc488345cc3a5f37079952f638d8c2b">diTypeToStr</a>(dt->getBaseType());</div><div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>  }</div><div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>  }</div><div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aded9b991c77acc5284ccead0739e84f1">DICompositeType</a> *ct = SVFUtil::dyn_cast<DICompositeType>(t))</div><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>  {</div><div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>  <span class="keywordflow">if</span> (ct->getTag() == dwarf::DW_TAG_class_type</div><div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>  || ct->getTag() == dwarf::DW_TAG_structure_type</div><div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>  || ct->getTag() == dwarf::DW_TAG_union_type)</div><div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>  {</div><div class="line"><a name="l01018"></a><span class="lineno"> 1018</span> </div><div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>  <span class="keywordflow">if</span> (ct->getTag() == dwarf::DW_TAG_class_type)</div><div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>  {</div><div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>  ss << <span class="stringliteral">"class"</span>;</div><div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>  }</div><div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (ct->getTag() == dwarf::DW_TAG_structure_type)</div><div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>  {</div><div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>  ss << <span class="stringliteral">"struct"</span>;</div><div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>  }</div><div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (ct->getTag() == dwarf::DW_TAG_union_type)</div><div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>  {</div><div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>  ss << <span class="stringliteral">"union"</span>;</div><div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>  }</div><div class="line"><a name="l01031"></a><span class="lineno"> 1031</span> </div><div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>  ss << <span class="stringliteral">"."</span>;</div><div class="line"><a name="l01033"></a><span class="lineno"> 1033</span> </div><div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>  <span class="keywordflow">if</span> (ct->getName() != <span class="stringliteral">""</span>)</div><div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>  {</div><div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>  ss << ct->getName().str();</div><div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>  }</div><div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>  {</div><div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>  <span class="comment">// Iterate over the element types.</span></div><div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>  ss << <span class="stringliteral">"{ "</span>;</div><div class="line"><a name="l01042"></a><span class="lineno"> 1042</span> </div><div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>  <a class="code" href="namespaceSVF.html#a0f825e73d115173b05ca54fb8ec65003">DINodeArray</a> fields = ct->getElements();</div><div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>  <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i < fields.size(); ++i)</div><div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>  {</div><div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>  <span class="comment">// fields[i] gives a type which is DW_TAG_member, we want the member's type (getBaseType).</span></div><div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>  <span class="comment">// It can also give a Subprogram type if the class just had non-virtual functions.</span></div><div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a89c7208bfc0b57873dfa574f52050295">DISubprogram</a> *sp = SVFUtil::dyn_cast<DISubprogram>(fields[i]))</div><div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>  {</div><div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>  ss << sp->getName().str();</div><div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>  }</div><div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a852e75c562139237fcc754c7461533e6">DIDerivedType</a> *mt = SVFUtil::dyn_cast<DIDerivedType>(fields[i]))</div><div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>  {</div><div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>  assert(mt->getTag() == dwarf::DW_TAG_member && <span class="stringliteral">"DCHG: expected member"</span>);</div><div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>  ss << <a class="code" href="classSVF_1_1DCHGraph.html#a2dc488345cc3a5f37079952f638d8c2b">diTypeToStr</a>(mt->getBaseType());</div><div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>  }</div><div class="line"><a name="l01057"></a><span class="lineno"> 1057</span> </div><div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>  <span class="keywordflow">if</span> (i != fields.size() - 1)</div><div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>  {</div><div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>  ss << <span class="stringliteral">", "</span>;</div><div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>  }</div><div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>  }</div><div class="line"><a name="l01063"></a><span class="lineno"> 1063</span> </div><div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>  ss << <span class="stringliteral">" }"</span>;</div><div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>  }</div><div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>  }</div><div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (ct->getTag() == dwarf::DW_TAG_array_type)</div><div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>  {</div><div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>  ss << <a class="code" href="classSVF_1_1DCHGraph.html#a2dc488345cc3a5f37079952f638d8c2b">diTypeToStr</a>(ct->getBaseType());</div><div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>  <a class="code" href="namespaceSVF.html#a0f825e73d115173b05ca54fb8ec65003">DINodeArray</a> sizes = ct->getElements();</div><div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>  <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i < sizes.size(); ++i)</div><div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>  {</div><div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>  <a class="code" href="namespaceSVF.html#a99bc1228f07429855c81a720be862dc6">DISubrange</a> *sr = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a><<a class="code" href="namespaceSVF.html#a99bc1228f07429855c81a720be862dc6">DISubrange</a>>(sizes[0]);</div><div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>  assert(sr != <span class="keyword">nullptr</span> && <span class="stringliteral">"DCHG: non-subrange as array element?"</span>);</div><div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>  int64_t <a class="code" href="cJSON_8h.html#ad43c3812e6d13e0518d9f8b8f463ffcf">count</a> = -1;</div><div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a> *ci = sr->getCount().dyn_cast<<a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a> *>())</div><div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>  {</div><div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>  count = ci->getSExtValue();</div><div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>  }</div><div class="line"><a name="l01080"></a><span class="lineno"> 1080</span> </div><div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>  ss << <span class="stringliteral">"["</span> << count << <span class="stringliteral">"]"</span>;</div><div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>  }</div><div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>  }</div><div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (ct->getTag() == dwarf::DW_TAG_enumeration_type)</div><div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>  {</div><div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>  ss << <span class="stringliteral">"enum "</span> << <a class="code" href="classSVF_1_1DCHGraph.html#a2dc488345cc3a5f37079952f638d8c2b">diTypeToStr</a>(ct->getBaseType());</div><div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>  }</div><div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (ct->getTag() == dwarf::DW_TAG_union_type)</div><div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>  {</div><div class="line"><a name="l01090"></a><span class="lineno"> 1090</span> </div><div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>  }</div><div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>  }</div><div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a090e0791e8c200104ed3ab6bab157129">DISubroutineType</a> *st = SVFUtil::dyn_cast<DISubroutineType>(t))</div><div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>  {</div><div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>  <a class="code" href="namespaceSVF.html#a9d3ee421789884473bfacfaa9ec007cc">DITypeRefArray</a> types = st->getTypeArray();</div><div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>  <span class="comment">// Must have one element at least (the first type).</span></div><div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>  ss << <a class="code" href="classSVF_1_1DCHGraph.html#a2dc488345cc3a5f37079952f638d8c2b">diTypeToStr</a>(types[0]) << <span class="stringliteral">" fn("</span>;</div><div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>  <span class="keywordflow">if</span> (types.size() == 1)</div><div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>  {</div><div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>  ss << <span class="stringliteral">"void)"</span>;</div><div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>  }</div><div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>  {</div><div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>  <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 1; i < types.size(); ++i)</div><div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>  {</div><div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>  ss << <a class="code" href="classSVF_1_1DCHGraph.html#a2dc488345cc3a5f37079952f638d8c2b">diTypeToStr</a>(types[i]);</div><div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>  <span class="keywordflow">if</span> (i + 1 != types.size())</div><div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>  {</div><div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>  <span class="comment">// There's another type.</span></div><div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>  ss << <span class="stringliteral">", "</span>;</div><div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>  }</div><div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>  }</div><div class="line"><a name="l01113"></a><span class="lineno"> 1113</span> </div><div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>  ss << <span class="stringliteral">")"</span>;</div><div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>  }</div><div class="line"><a name="l01116"></a><span class="lineno"> 1116</span> </div><div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>  ss << st->getName().str();</div><div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>  }</div><div class="line"><a name="l01119"></a><span class="lineno"> 1119</span> </div><div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>  <span class="keywordflow">return</span> ss.str();</div><div class="line"><a name="l01121"></a><span class="lineno"> 1121</span> }</div><div class="ttc" id="classSVF_1_1DCHGraph_html_a2dc488345cc3a5f37079952f638d8c2b"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#a2dc488345cc3a5f37079952f638d8c2b">SVF::DCHGraph::diTypeToStr</a></div><div class="ttdeci">static std::string diTypeToStr(const DIType *)</div><div class="ttdoc">Returns a human-readable version of the DIType. </div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8cpp_source.html#l00955">DCHG.cpp:955</a></div></div>
|
|
728
|
-
<div class="ttc" id="namespaceSVF_html_a9d3ee421789884473bfacfaa9ec007cc"><div class="ttname"><a href="namespaceSVF.html#a9d3ee421789884473bfacfaa9ec007cc">SVF::DITypeRefArray</a></div><div class="ttdeci">llvm::DITypeRefArray DITypeRefArray</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#
|
|
729
|
-
<div class="ttc" id="namespaceSVF_html_aded9b991c77acc5284ccead0739e84f1"><div class="ttname"><a href="namespaceSVF.html#aded9b991c77acc5284ccead0739e84f1">SVF::DICompositeType</a></div><div class="ttdeci">llvm::DICompositeType DICompositeType</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#
|
|
728
|
+
<div class="ttc" id="namespaceSVF_html_a9d3ee421789884473bfacfaa9ec007cc"><div class="ttname"><a href="namespaceSVF.html#a9d3ee421789884473bfacfaa9ec007cc">SVF::DITypeRefArray</a></div><div class="ttdeci">llvm::DITypeRefArray DITypeRefArray</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00158">BasicTypes.h:158</a></div></div>
|
|
729
|
+
<div class="ttc" id="namespaceSVF_html_aded9b991c77acc5284ccead0739e84f1"><div class="ttname"><a href="namespaceSVF.html#aded9b991c77acc5284ccead0739e84f1">SVF::DICompositeType</a></div><div class="ttdeci">llvm::DICompositeType DICompositeType</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00150">BasicTypes.h:150</a></div></div>
|
|
730
730
|
<div class="ttc" id="namespaceSVF_html_adefcb50414ea999d70cea5ccdbcb98d7"><div class="ttname"><a href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">SVF::ConstantInt</a></div><div class="ttdeci">llvm::ConstantInt ConstantInt</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00093">BasicTypes.h:93</a></div></div>
|
|
731
|
-
<div class="ttc" id="namespaceSVF_html_a090e0791e8c200104ed3ab6bab157129"><div class="ttname"><a href="namespaceSVF.html#a090e0791e8c200104ed3ab6bab157129">SVF::DISubroutineType</a></div><div class="ttdeci">llvm::DISubroutineType DISubroutineType</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#
|
|
732
|
-
<div class="ttc" id="namespaceSVF_html_a0f825e73d115173b05ca54fb8ec65003"><div class="ttname"><a href="namespaceSVF.html#a0f825e73d115173b05ca54fb8ec65003">SVF::DINodeArray</a></div><div class="ttdeci">llvm::DINodeArray DINodeArray</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#
|
|
733
|
-
<div class="ttc" id="namespaceSVF_html_a852e75c562139237fcc754c7461533e6"><div class="ttname"><a href="namespaceSVF.html#a852e75c562139237fcc754c7461533e6">SVF::DIDerivedType</a></div><div class="ttdeci">llvm::DIDerivedType DIDerivedType</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#
|
|
731
|
+
<div class="ttc" id="namespaceSVF_html_a090e0791e8c200104ed3ab6bab157129"><div class="ttname"><a href="namespaceSVF.html#a090e0791e8c200104ed3ab6bab157129">SVF::DISubroutineType</a></div><div class="ttdeci">llvm::DISubroutineType DISubroutineType</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00153">BasicTypes.h:153</a></div></div>
|
|
732
|
+
<div class="ttc" id="namespaceSVF_html_a0f825e73d115173b05ca54fb8ec65003"><div class="ttname"><a href="namespaceSVF.html#a0f825e73d115173b05ca54fb8ec65003">SVF::DINodeArray</a></div><div class="ttdeci">llvm::DINodeArray DINodeArray</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00157">BasicTypes.h:157</a></div></div>
|
|
733
|
+
<div class="ttc" id="namespaceSVF_html_a852e75c562139237fcc754c7461533e6"><div class="ttname"><a href="namespaceSVF.html#a852e75c562139237fcc754c7461533e6">SVF::DIDerivedType</a></div><div class="ttdeci">llvm::DIDerivedType DIDerivedType</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00151">BasicTypes.h:151</a></div></div>
|
|
734
734
|
<div class="ttc" id="namespaceSVF_html_a89c7208bfc0b57873dfa574f52050295"><div class="ttname"><a href="namespaceSVF.html#a89c7208bfc0b57873dfa574f52050295">SVF::DISubprogram</a></div><div class="ttdeci">llvm::DISubprogram DISubprogram</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00123">BasicTypes.h:123</a></div></div>
|
|
735
735
|
<div class="ttc" id="cJSON_8h_html_ad43c3812e6d13e0518d9f8b8f463ffcf"><div class="ttname"><a href="cJSON_8h.html#ad43c3812e6d13e0518d9f8b8f463ffcf">count</a></div><div class="ttdeci">int count</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00216">cJSON.h:216</a></div></div>
|
|
736
|
-
<div class="ttc" id="namespaceSVF_html_ada0513be7e25325325ccc9183aeca278"><div class="ttname"><a href="namespaceSVF.html#ada0513be7e25325325ccc9183aeca278">SVF::DIBasicType</a></div><div class="ttdeci">llvm::DIBasicType DIBasicType</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#
|
|
737
|
-
<div class="ttc" id="namespaceSVF_html_a99bc1228f07429855c81a720be862dc6"><div class="ttname"><a href="namespaceSVF.html#a99bc1228f07429855c81a720be862dc6">SVF::DISubrange</a></div><div class="ttdeci">llvm::DISubrange DISubrange</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#
|
|
736
|
+
<div class="ttc" id="namespaceSVF_html_ada0513be7e25325325ccc9183aeca278"><div class="ttname"><a href="namespaceSVF.html#ada0513be7e25325325ccc9183aeca278">SVF::DIBasicType</a></div><div class="ttdeci">llvm::DIBasicType DIBasicType</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00154">BasicTypes.h:154</a></div></div>
|
|
737
|
+
<div class="ttc" id="namespaceSVF_html_a99bc1228f07429855c81a720be862dc6"><div class="ttname"><a href="namespaceSVF.html#a99bc1228f07429855c81a720be862dc6">SVF::DISubrange</a></div><div class="ttdeci">llvm::DISubrange DISubrange</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00155">BasicTypes.h:155</a></div></div>
|
|
738
738
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a8182be247907420db00837cef9bcfa70"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVF::SVFUtil::dyn_cast</a></div><div class="ttdeci">LLVM_NODISCARD std::enable_if<!is_simple_type< Y >::value, typename cast_retty< X, const Y >::ret_type >::type dyn_cast(const Y &Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00343">Casting.h:343</a></div></div>
|
|
739
739
|
</div><!-- fragment -->
|
|
740
740
|
</div>
|
|
@@ -797,16 +797,16 @@ Additional Inherited Members</h2></td></tr>
|
|
|
797
797
|
|
|
798
798
|
<p class="definition">Definition at line <a class="el" href="DCHG_8cpp_source.html#l00265">265</a> of file <a class="el" href="DCHG_8cpp_source.html">DCHG.cpp</a>.</p>
|
|
799
799
|
<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>  <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a><<a class="code" href="namespaceSVF.html#aded9b991c77acc5284ccead0739e84f1">DICompositeType</a>>(<a class="code" href="classSVF_1_1DCHGraph.html#a079feacdcc3783f4a9108a3b2d2aed2c">getCanonicalType</a>(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>));</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  assert(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> && <span class="stringliteral">"DCHG::flatten: canon type of struct/class is not struct/class"</span>);</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1DCHGraph.html#a574ec14099f1112b394b00a79f3fdf1a">fieldTypes</a>.find(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>) != <a class="code" href="classSVF_1_1DCHGraph.html#a574ec14099f1112b394b00a79f3fdf1a">fieldTypes</a>.end())</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="comment">// Already done (necessary because of the recursion).</span></div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  }</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span> </div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  <span class="comment">// Create empty vector.</span></div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  <a class="code" href="classSVF_1_1DCHGraph.html#a574ec14099f1112b394b00a79f3fdf1a">fieldTypes</a>[<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>];</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span> </div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  assert(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> != <span class="keyword">nullptr</span></div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  && (<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>->getTag() == dwarf::DW_TAG_class_type</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  || <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>->getTag() == dwarf::DW_TAG_structure_type)</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  && <span class="stringliteral">"DCHG::flatten: expected a class/struct"</span>);</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span> </div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  <span class="comment">// Sort the fields from getElements. Especially a problem for classes; it's all jumbled up.</span></div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  std::vector<const DIDerivedType *> fields;</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <a class="code" href="namespaceSVF.html#a0f825e73d115173b05ca54fb8ec65003">DINodeArray</a> fieldsDINA = <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>->getElements();</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i < fieldsDINA.size(); ++i)</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  {</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a852e75c562139237fcc754c7461533e6">DIDerivedType</a> *dt = SVFUtil::dyn_cast<DIDerivedType>(fieldsDINA[i]))</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  {</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  <span class="comment">// Don't care about subprograms, only member/inheritance.</span></div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  fields.push_back(dt);</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  }</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  }</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span> </div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  <span class="comment">// TODO: virtual inheritance is not handled at all!</span></div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  std::sort(fields.begin(), fields.end(),</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  [](<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a852e75c562139237fcc754c7461533e6">DIDerivedType</a> *&<a class="code" href="cJSON_8cpp.html#a8a1a0a26c50cc4becfc754bb68d1dc6b">a</a>, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a852e75c562139237fcc754c7461533e6">DIDerivedType</a> *&<a class="code" href="cJSON_8h.html#a1a175e87536301df98c805ac0636ad7c">b</a>) -> <span class="keywordtype">bool</span></div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  { <span class="keywordflow">return</span> a->getOffsetInBits() < <a class="code" href="cJSON_8h.html#a1a175e87536301df98c805ac0636ad7c">b</a>->getOffsetInBits(); });</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span> </div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a852e75c562139237fcc754c7461533e6">DIDerivedType</a> *mt : fields)</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  {</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  assert((mt->getTag() == dwarf::DW_TAG_member || mt->getTag() == dwarf::DW_TAG_inheritance)</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  && <span class="stringliteral">"DCHG: expected member/inheritance"</span>);</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <span class="comment">// Either we have a class, struct, array, or something not in need of flattening.</span></div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">DIType</a> *fieldType = mt->getBaseType();</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  <span class="keywordflow">if</span> (fieldType->getTag() == dwarf::DW_TAG_structure_type</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  || fieldType->getTag() == dwarf::DW_TAG_class_type)</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  {</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  <a class="code" href="classSVF_1_1DCHGraph.html#ab96874bc8f6461fe0c3eb53b7f5cedce">flatten</a>(SVFUtil::dyn_cast<DICompositeType>(fieldType));</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">DIType</a> *ft : <a class="code" href="classSVF_1_1DCHGraph.html#a574ec14099f1112b394b00a79f3fdf1a">fieldTypes</a>[fieldType])</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  {</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  <span class="comment">// ft is already a canonical type because the "root" additions insert</span></div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <span class="comment">// canonical types.</span></div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  <a class="code" href="classSVF_1_1DCHGraph.html#a574ec14099f1112b394b00a79f3fdf1a">fieldTypes</a>[<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>].push_back(ft);</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  }</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  }</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (fieldType->getTag() == dwarf::DW_TAG_array_type)</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  {</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aded9b991c77acc5284ccead0739e84f1">DICompositeType</a> *arrayType = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a><<a class="code" href="namespaceSVF.html#aded9b991c77acc5284ccead0739e84f1">DICompositeType</a>>(fieldType);</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">DIType</a> *baseType = arrayType->getBaseType();</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aded9b991c77acc5284ccead0739e84f1">DICompositeType</a> *cbt = SVFUtil::dyn_cast<DICompositeType>(baseType))</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  {</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <a class="code" href="classSVF_1_1DCHGraph.html#ab96874bc8f6461fe0c3eb53b7f5cedce">flatten</a>(cbt);</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">DIType</a> *ft : <a class="code" href="classSVF_1_1DCHGraph.html#a574ec14099f1112b394b00a79f3fdf1a">fieldTypes</a>[cbt])</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  {</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  <span class="comment">// ft is already a canonical type like above.</span></div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  <a class="code" href="classSVF_1_1DCHGraph.html#a574ec14099f1112b394b00a79f3fdf1a">fieldTypes</a>[<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>].push_back(ft);</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  }</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  }</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  {</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  <a class="code" href="classSVF_1_1DCHGraph.html#a574ec14099f1112b394b00a79f3fdf1a">fieldTypes</a>[<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>].push_back(<a class="code" href="classSVF_1_1DCHGraph.html#a079feacdcc3783f4a9108a3b2d2aed2c">getCanonicalType</a>(baseType));</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  }</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  }</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  {</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  <a class="code" href="classSVF_1_1DCHGraph.html#a574ec14099f1112b394b00a79f3fdf1a">fieldTypes</a>[<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>].push_back(<a class="code" href="classSVF_1_1DCHGraph.html#a079feacdcc3783f4a9108a3b2d2aed2c">getCanonicalType</a>(fieldType));</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  }</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  }</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span> }</div><div class="ttc" id="classSVF_1_1DCHGraph_html_ab96874bc8f6461fe0c3eb53b7f5cedce"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#ab96874bc8f6461fe0c3eb53b7f5cedce">SVF::DCHGraph::flatten</a></div><div class="ttdeci">void flatten(const DICompositeType *type)</div><div class="ttdoc">Populates fieldTypes for type and all its elements. </div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8cpp_source.html#l00265">DCHG.cpp:265</a></div></div>
|
|
800
|
-
<div class="ttc" id="namespaceSVF_html_aded9b991c77acc5284ccead0739e84f1"><div class="ttname"><a href="namespaceSVF.html#aded9b991c77acc5284ccead0739e84f1">SVF::DICompositeType</a></div><div class="ttdeci">llvm::DICompositeType DICompositeType</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#
|
|
800
|
+
<div class="ttc" id="namespaceSVF_html_aded9b991c77acc5284ccead0739e84f1"><div class="ttname"><a href="namespaceSVF.html#aded9b991c77acc5284ccead0739e84f1">SVF::DICompositeType</a></div><div class="ttdeci">llvm::DICompositeType DICompositeType</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00150">BasicTypes.h:150</a></div></div>
|
|
801
801
|
<div class="ttc" id="cJSON_8h_html_a1a175e87536301df98c805ac0636ad7c"><div class="ttname"><a href="cJSON_8h.html#a1a175e87536301df98c805ac0636ad7c">b</a></div><div class="ttdeci">const cJSON *const b</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00255">cJSON.h:255</a></div></div>
|
|
802
802
|
<div class="ttc" id="cJSON_8cpp_html_a3f9a0d3265a6254722587175dac3e4dc"><div class="ttname"><a href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a></div><div class="ttdeci">newitem type</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l02739">cJSON.cpp:2739</a></div></div>
|
|
803
|
-
<div class="ttc" id="namespaceSVF_html_a0f825e73d115173b05ca54fb8ec65003"><div class="ttname"><a href="namespaceSVF.html#a0f825e73d115173b05ca54fb8ec65003">SVF::DINodeArray</a></div><div class="ttdeci">llvm::DINodeArray DINodeArray</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#
|
|
804
|
-
<div class="ttc" id="namespaceSVF_html_a852e75c562139237fcc754c7461533e6"><div class="ttname"><a href="namespaceSVF.html#a852e75c562139237fcc754c7461533e6">SVF::DIDerivedType</a></div><div class="ttdeci">llvm::DIDerivedType DIDerivedType</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#
|
|
803
|
+
<div class="ttc" id="namespaceSVF_html_a0f825e73d115173b05ca54fb8ec65003"><div class="ttname"><a href="namespaceSVF.html#a0f825e73d115173b05ca54fb8ec65003">SVF::DINodeArray</a></div><div class="ttdeci">llvm::DINodeArray DINodeArray</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00157">BasicTypes.h:157</a></div></div>
|
|
804
|
+
<div class="ttc" id="namespaceSVF_html_a852e75c562139237fcc754c7461533e6"><div class="ttname"><a href="namespaceSVF.html#a852e75c562139237fcc754c7461533e6">SVF::DIDerivedType</a></div><div class="ttdeci">llvm::DIDerivedType DIDerivedType</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00151">BasicTypes.h:151</a></div></div>
|
|
805
805
|
<div class="ttc" id="classSVF_1_1DCHGraph_html_a574ec14099f1112b394b00a79f3fdf1a"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#a574ec14099f1112b394b00a79f3fdf1a">SVF::DCHGraph::fieldTypes</a></div><div class="ttdeci">Map< const DIType *, std::vector< const DIType * > > fieldTypes</div><div class="ttdoc">Maps types to their flattened fields&#39; types. </div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8h_source.html#l00374">DCHG.h:374</a></div></div>
|
|
806
806
|
<div class="ttc" id="classSVF_1_1DCHGraph_html_a079feacdcc3783f4a9108a3b2d2aed2c"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#a079feacdcc3783f4a9108a3b2d2aed2c">SVF::DCHGraph::getCanonicalType</a></div><div class="ttdeci">const DIType * getCanonicalType(const DIType *t)</div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8cpp_source.html#l00710">DCHG.cpp:710</a></div></div>
|
|
807
807
|
<div class="ttc" id="cJSON_8cpp_html_a8a1a0a26c50cc4becfc754bb68d1dc6b"><div class="ttname"><a href="cJSON_8cpp.html#a8a1a0a26c50cc4becfc754bb68d1dc6b">a</a></div><div class="ttdeci">cJSON * a</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l02560">cJSON.cpp:2560</a></div></div>
|
|
808
808
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a8182be247907420db00837cef9bcfa70"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVF::SVFUtil::dyn_cast</a></div><div class="ttdeci">LLVM_NODISCARD std::enable_if<!is_simple_type< Y >::value, typename cast_retty< X, const Y >::ret_type >::type dyn_cast(const Y &Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00343">Casting.h:343</a></div></div>
|
|
809
|
-
<div class="ttc" id="namespaceSVF_html_ad127b0ad478640ede3d426e3a58d2632"><div class="ttname"><a href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">SVF::DIType</a></div><div class="ttdeci">llvm::DIType DIType</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#
|
|
809
|
+
<div class="ttc" id="namespaceSVF_html_ad127b0ad478640ede3d426e3a58d2632"><div class="ttname"><a href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">SVF::DIType</a></div><div class="ttdeci">llvm::DIType DIType</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00149">BasicTypes.h:149</a></div></div>
|
|
810
810
|
</div><!-- fragment -->
|
|
811
811
|
</div>
|
|
812
812
|
</div>
|
|
@@ -841,15 +841,15 @@ Additional Inherited Members</h2></td></tr>
|
|
|
841
841
|
<div class="ttc" id="classSVF_1_1DCHGraph_html_adc7a17f70ac3fa89624ad874dbd16ff9"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#adc7a17f70ac3fa89624ad874dbd16ff9">SVF::DCHGraph::containingAggs</a></div><div class="ttdeci">Map< const DIType *, Set< const DIType * > > containingAggs</div><div class="ttdoc">Maps aggregate types to all the aggregate types it transitively contains. </div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8h_source.html#l00376">DCHG.h:376</a></div></div>
|
|
842
842
|
<div class="ttc" id="classSVF_1_1DCHGraph_html_a8fcbea9435a77beb27ad64d5a3175b0b"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#a8fcbea9435a77beb27ad64d5a3175b0b">SVF::DCHGraph::gatherAggs</a></div><div class="ttdeci">void gatherAggs(const DICompositeType *type)</div><div class="ttdoc">Populates containingAggs for type and all its elements. </div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8cpp_source.html#l00350">DCHG.cpp:350</a></div></div>
|
|
843
843
|
<div class="ttc" id="classSVF_1_1DCHGraph_html_a175ed6ad0c9b23d5617f755ab96c76c4"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#a175ed6ad0c9b23d5617f755ab96c76c4">SVF::DCHGraph::stripQualifiers</a></div><div class="ttdeci">static const DIType * stripQualifiers(const DIType *)</div><div class="ttdoc">Returns the DIType beneath the qualifiers. Does not strip away "DW_TAG_members". </div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8cpp_source.html#l00751">DCHG.cpp:751</a></div></div>
|
|
844
|
-
<div class="ttc" id="namespaceSVF_html_aded9b991c77acc5284ccead0739e84f1"><div class="ttname"><a href="namespaceSVF.html#aded9b991c77acc5284ccead0739e84f1">SVF::DICompositeType</a></div><div class="ttdeci">llvm::DICompositeType DICompositeType</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#
|
|
844
|
+
<div class="ttc" id="namespaceSVF_html_aded9b991c77acc5284ccead0739e84f1"><div class="ttname"><a href="namespaceSVF.html#aded9b991c77acc5284ccead0739e84f1">SVF::DICompositeType</a></div><div class="ttdeci">llvm::DICompositeType DICompositeType</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00150">BasicTypes.h:150</a></div></div>
|
|
845
845
|
<div class="ttc" id="classSVF_1_1GenericGraph_html_a4bef15157423cef48dc7333a803cd27d"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">SVF::GenericGraph< DCHNode, DCHEdge >::end</a></div><div class="ttdeci">iterator end()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00369">GenericGraph.h:369</a></div></div>
|
|
846
846
|
<div class="ttc" id="classSVF_1_1DCHGraph_html_a9d2be5aec5216cbc1d1709b41f79c44b"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#a9d2be5aec5216cbc1d1709b41f79c44b">SVF::DCHGraph::isAgg</a></div><div class="ttdeci">static bool isAgg(const DIType *t)</div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8cpp_source.html#l00342">DCHG.cpp:342</a></div></div>
|
|
847
847
|
<div class="ttc" id="cJSON_8cpp_html_a3f9a0d3265a6254722587175dac3e4dc"><div class="ttname"><a href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a></div><div class="ttdeci">newitem type</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l02739">cJSON.cpp:2739</a></div></div>
|
|
848
|
-
<div class="ttc" id="namespaceSVF_html_a0f825e73d115173b05ca54fb8ec65003"><div class="ttname"><a href="namespaceSVF.html#a0f825e73d115173b05ca54fb8ec65003">SVF::DINodeArray</a></div><div class="ttdeci">llvm::DINodeArray DINodeArray</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#
|
|
849
|
-
<div class="ttc" id="namespaceSVF_html_a852e75c562139237fcc754c7461533e6"><div class="ttname"><a href="namespaceSVF.html#a852e75c562139237fcc754c7461533e6">SVF::DIDerivedType</a></div><div class="ttdeci">llvm::DIDerivedType DIDerivedType</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#
|
|
848
|
+
<div class="ttc" id="namespaceSVF_html_a0f825e73d115173b05ca54fb8ec65003"><div class="ttname"><a href="namespaceSVF.html#a0f825e73d115173b05ca54fb8ec65003">SVF::DINodeArray</a></div><div class="ttdeci">llvm::DINodeArray DINodeArray</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00157">BasicTypes.h:157</a></div></div>
|
|
849
|
+
<div class="ttc" id="namespaceSVF_html_a852e75c562139237fcc754c7461533e6"><div class="ttname"><a href="namespaceSVF.html#a852e75c562139237fcc754c7461533e6">SVF::DIDerivedType</a></div><div class="ttdeci">llvm::DIDerivedType DIDerivedType</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00151">BasicTypes.h:151</a></div></div>
|
|
850
850
|
<div class="ttc" id="classSVF_1_1DCHGraph_html_a079feacdcc3783f4a9108a3b2d2aed2c"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#a079feacdcc3783f4a9108a3b2d2aed2c">SVF::DCHGraph::getCanonicalType</a></div><div class="ttdeci">const DIType * getCanonicalType(const DIType *t)</div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8cpp_source.html#l00710">DCHG.cpp:710</a></div></div>
|
|
851
851
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a8182be247907420db00837cef9bcfa70"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVF::SVFUtil::dyn_cast</a></div><div class="ttdeci">LLVM_NODISCARD std::enable_if<!is_simple_type< Y >::value, typename cast_retty< X, const Y >::ret_type >::type dyn_cast(const Y &Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00343">Casting.h:343</a></div></div>
|
|
852
|
-
<div class="ttc" id="namespaceSVF_html_ad127b0ad478640ede3d426e3a58d2632"><div class="ttname"><a href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">SVF::DIType</a></div><div class="ttdeci">llvm::DIType DIType</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#
|
|
852
|
+
<div class="ttc" id="namespaceSVF_html_ad127b0ad478640ede3d426e3a58d2632"><div class="ttname"><a href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">SVF::DIType</a></div><div class="ttdeci">llvm::DIType DIType</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00149">BasicTypes.h:149</a></div></div>
|
|
853
853
|
</div><!-- fragment -->
|
|
854
854
|
</div>
|
|
855
855
|
</div>
|
|
@@ -906,7 +906,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
906
906
|
<div class="fragment"><div class="line"><a name="l00711"></a><span class="lineno"> 711</span> {</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>  <span class="comment">// We want stripped types to be canonical.</span></div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">DIType</a> *unstrippedT = t;</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>  t = <a class="code" href="classSVF_1_1DCHGraph.html#a175ed6ad0c9b23d5617f755ab96c76c4">stripQualifiers</a>(t);</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span> </div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>  <span class="comment">// Is there a mapping for the unstripped type? Yes - return it.</span></div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1DCHGraph.html#a498a18fe8702251b6f2a4e6379e5cbb1">canonicalTypeMap</a>.find(unstrippedT) != <a class="code" href="classSVF_1_1DCHGraph.html#a498a18fe8702251b6f2a4e6379e5cbb1">canonicalTypeMap</a>.end())</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>  {</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1DCHGraph.html#a498a18fe8702251b6f2a4e6379e5cbb1">canonicalTypeMap</a>[unstrippedT];</div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>  }</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span> </div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>  <span class="comment">// There is no mapping for unstripped type (^), is there one for the stripped</span></div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>  <span class="comment">// type? Yes - map the unstripped type to the same thing.</span></div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>  <span class="keywordflow">if</span> (unstrippedT != t)</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>  {</div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1DCHGraph.html#a498a18fe8702251b6f2a4e6379e5cbb1">canonicalTypeMap</a>.find(t) != <a class="code" href="classSVF_1_1DCHGraph.html#a498a18fe8702251b6f2a4e6379e5cbb1">canonicalTypeMap</a>.end())</div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span>  {</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>  <a class="code" href="classSVF_1_1DCHGraph.html#a498a18fe8702251b6f2a4e6379e5cbb1">canonicalTypeMap</a>[unstrippedT] = <a class="code" href="classSVF_1_1DCHGraph.html#a498a18fe8702251b6f2a4e6379e5cbb1">canonicalTypeMap</a>[t];</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1DCHGraph.html#a498a18fe8702251b6f2a4e6379e5cbb1">canonicalTypeMap</a>[unstrippedT];</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>  }</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>  }</div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span> </div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>  <span class="comment">// Canonical type for t is not cached, find one for it.</span></div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">DIType</a> *canonType : <a class="code" href="classSVF_1_1DCHGraph.html#a10225f56b21eb7f0870fdc433de3c393">canonicalTypes</a>)</div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>  {</div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1DCHGraph.html#acb76ab20da1bfbec00f63d08e48cbddd">teq</a>(t, canonType))</div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span>  {</div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>  <span class="comment">// Found a canonical type.</span></div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>  <a class="code" href="classSVF_1_1DCHGraph.html#a498a18fe8702251b6f2a4e6379e5cbb1">canonicalTypeMap</a>[t] = canonType;</div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1DCHGraph.html#a498a18fe8702251b6f2a4e6379e5cbb1">canonicalTypeMap</a>[t];</div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>  }</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span>  }</div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span> </div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span>  <span class="comment">// No canonical type found, so t will be a canonical type.</span></div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>  canonicalTypes.insert(t);</div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>  <a class="code" href="classSVF_1_1DCHGraph.html#a498a18fe8702251b6f2a4e6379e5cbb1">canonicalTypeMap</a>.insert({t, t});</div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span> </div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1DCHGraph.html#a498a18fe8702251b6f2a4e6379e5cbb1">canonicalTypeMap</a>[t];</div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span> }</div><div class="ttc" id="classSVF_1_1DCHGraph_html_a498a18fe8702251b6f2a4e6379e5cbb1"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#a498a18fe8702251b6f2a4e6379e5cbb1">SVF::DCHGraph::canonicalTypeMap</a></div><div class="ttdeci">Map< const DIType *, const DIType * > canonicalTypeMap</div><div class="ttdoc">Maps types to their canonical type (many-to-one). </div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8h_source.html#l00370">DCHG.h:370</a></div></div>
|
|
907
907
|
<div class="ttc" id="classSVF_1_1DCHGraph_html_a175ed6ad0c9b23d5617f755ab96c76c4"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#a175ed6ad0c9b23d5617f755ab96c76c4">SVF::DCHGraph::stripQualifiers</a></div><div class="ttdeci">static const DIType * stripQualifiers(const DIType *)</div><div class="ttdoc">Returns the DIType beneath the qualifiers. Does not strip away "DW_TAG_members". </div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8cpp_source.html#l00751">DCHG.cpp:751</a></div></div>
|
|
908
908
|
<div class="ttc" id="classSVF_1_1DCHGraph_html_acb76ab20da1bfbec00f63d08e48cbddd"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#acb76ab20da1bfbec00f63d08e48cbddd">SVF::DCHGraph::teq</a></div><div class="ttdeci">static bool teq(const DIType *t1, const DIType *t2)</div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8cpp_source.html#l00816">DCHG.cpp:816</a></div></div>
|
|
909
|
-
<div class="ttc" id="namespaceSVF_html_ad127b0ad478640ede3d426e3a58d2632"><div class="ttname"><a href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">SVF::DIType</a></div><div class="ttdeci">llvm::DIType DIType</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#
|
|
909
|
+
<div class="ttc" id="namespaceSVF_html_ad127b0ad478640ede3d426e3a58d2632"><div class="ttname"><a href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">SVF::DIType</a></div><div class="ttdeci">llvm::DIType DIType</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00149">BasicTypes.h:149</a></div></div>
|
|
910
910
|
<div class="ttc" id="classSVF_1_1DCHGraph_html_a10225f56b21eb7f0870fdc433de3c393"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#a10225f56b21eb7f0870fdc433de3c393">SVF::DCHGraph::canonicalTypes</a></div><div class="ttdeci">Set< const DIType * > canonicalTypes</div><div class="ttdoc">Set of all possible canonical types (i.e. values of canonicalTypeMap). </div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8h_source.html#l00372">DCHG.h:372</a></div></div>
|
|
911
911
|
</div><!-- fragment -->
|
|
912
912
|
</div>
|
|
@@ -941,7 +941,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
941
941
|
<div class="fragment"><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>  <a class="code" href="namespaceSVF.html#ad3d3cec1813411f039211c86236f7adb">MDNode</a> *md = cs.getInstruction()->getMetadata(<a class="code" href="namespaceSVF_1_1cppUtil_1_1ctir.html#a0cd5347bc8043d4306e66a4a96005ace">cppUtil::ctir::derefMDName</a>);</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  assert(md != <span class="keyword">nullptr</span> && <span class="stringliteral">"Missing type metadata at virtual callsite"</span>);</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  <a class="code" href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">DIType</a> *diType = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a><<a class="code" href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">DIType</a>>(md);</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  assert(diType != <span class="keyword">nullptr</span> && <span class="stringliteral">"Incorrect metadata type at virtual callsite"</span>);</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  <span class="keywordflow">return</span> diType;</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  }</div><div class="ttc" id="namespaceSVF_1_1cppUtil_1_1ctir_html_a0cd5347bc8043d4306e66a4a96005ace"><div class="ttname"><a href="namespaceSVF_1_1cppUtil_1_1ctir.html#a0cd5347bc8043d4306e66a4a96005ace">SVF::cppUtil::ctir::derefMDName</a></div><div class="ttdeci">const std::string derefMDName</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8h_source.html#l00113">CPPUtil.h:113</a></div></div>
|
|
942
942
|
<div class="ttc" id="namespaceSVF_html_ad3d3cec1813411f039211c86236f7adb"><div class="ttname"><a href="namespaceSVF.html#ad3d3cec1813411f039211c86236f7adb">SVF::MDNode</a></div><div class="ttdeci">llvm::MDNode MDNode</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00099">BasicTypes.h:99</a></div></div>
|
|
943
943
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a8182be247907420db00837cef9bcfa70"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVF::SVFUtil::dyn_cast</a></div><div class="ttdeci">LLVM_NODISCARD std::enable_if<!is_simple_type< Y >::value, typename cast_retty< X, const Y >::ret_type >::type dyn_cast(const Y &Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00343">Casting.h:343</a></div></div>
|
|
944
|
-
<div class="ttc" id="namespaceSVF_html_ad127b0ad478640ede3d426e3a58d2632"><div class="ttname"><a href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">SVF::DIType</a></div><div class="ttdeci">llvm::DIType DIType</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#
|
|
944
|
+
<div class="ttc" id="namespaceSVF_html_ad127b0ad478640ede3d426e3a58d2632"><div class="ttname"><a href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">SVF::DIType</a></div><div class="ttdeci">llvm::DIType DIType</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00149">BasicTypes.h:149</a></div></div>
|
|
945
945
|
</div><!-- fragment -->
|
|
946
946
|
</div>
|
|
947
947
|
</div>
|
|
@@ -1020,7 +1020,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1020
1020
|
<div class="ttc" id="classSVF_1_1SparseBitVector_html"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html">SVF::SparseBitVector</a></div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l00460">SparseBitVector.h:460</a></div></div>
|
|
1021
1021
|
<div class="ttc" id="classSVF_1_1DCHGraph_html_a294e7a04aff9cef87c1008e91a620155"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#a294e7a04aff9cef87c1008e91a620155">SVF::DCHGraph::vtblCHAMap</a></div><div class="ttdeci">Map< const DIType *, VTableSet > vtblCHAMap</div><div class="ttdoc">Maps types to a set with their vtable and all their children&#39;s. </div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8h_source.html#l00366">DCHG.h:366</a></div></div>
|
|
1022
1022
|
<div class="ttc" id="classSVF_1_1GenericGraph_html_a43c9c773bfa17abf481c33073e30d01b"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">SVF::GenericGraph< DCHNode, DCHEdge >::getGNode</a></div><div class="ttdeci">NodeType * getGNode(NodeID id) const</div><div class="ttdoc">Get a node. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00391">GenericGraph.h:391</a></div></div>
|
|
1023
|
-
<div class="ttc" id="namespaceSVF_html_ad127b0ad478640ede3d426e3a58d2632"><div class="ttname"><a href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">SVF::DIType</a></div><div class="ttdeci">llvm::DIType DIType</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#
|
|
1023
|
+
<div class="ttc" id="namespaceSVF_html_ad127b0ad478640ede3d426e3a58d2632"><div class="ttname"><a href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">SVF::DIType</a></div><div class="ttdeci">llvm::DIType DIType</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00149">BasicTypes.h:149</a></div></div>
|
|
1024
1024
|
</div><!-- fragment -->
|
|
1025
1025
|
</div>
|
|
1026
1026
|
</div>
|
|
@@ -1061,7 +1061,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1061
1061
|
<p>Returns the type of field number idx (flattened) in base. </p>
|
|
1062
1062
|
|
|
1063
1063
|
<p class="definition">Definition at line <a class="el" href="DCHG_8h_source.html#l00291">291</a> of file <a class="el" href="DCHG_8h_source.html">DCHG.h</a>.</p>
|
|
1064
|
-
<div class="fragment"><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  {</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  base = <a class="code" href="classSVF_1_1DCHGraph.html#a079feacdcc3783f4a9108a3b2d2aed2c">getCanonicalType</a>(base);</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  <span class="keywordflow">if</span> (base == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  {</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  <span class="comment">// Conservative; the base object is untyped, sadly.</span></div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  }</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span> </div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  <span class="comment">// For TBHC this is conservative because the union type is lower in the DCHG</span></div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  <span class="comment">// than its fields. TODO: make more precise.</span></div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  <span class="keywordflow">if</span> (base->getTag() == dwarf::DW_TAG_union_type)</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  {</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <span class="keywordflow">return</span> base;</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  }</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span> </div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  <span class="keywordflow">if</span> (base->getTag() == dwarf::DW_TAG_array_type)</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  {</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aded9b991c77acc5284ccead0739e84f1">DICompositeType</a> *cbase = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a><<a class="code" href="namespaceSVF.html#aded9b991c77acc5284ccead0739e84f1">DICompositeType</a>>(base);</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  assert(cbase && <span class="stringliteral">"DCHG: bad DIComposite case"</span>);</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  <span class="keywordflow">return</span> cbase->getBaseType();</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  }</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span> </div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  <span class="keywordflow">if</span> (!(base->getTag() == dwarf::DW_TAG_class_type</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  || base->getTag() == dwarf::DW_TAG_structure_type))</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  {</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  }</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span> </div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  assert(<a class="code" href="classSVF_1_1DCHGraph.html#a574ec14099f1112b394b00a79f3fdf1a">fieldTypes</a>.find(base) != <a class="code" href="classSVF_1_1DCHGraph.html#a574ec14099f1112b394b00a79f3fdf1a">fieldTypes</a>.end() && <span class="stringliteral">"DCHG: base not flattened!"</span>);</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  std::vector<const DIType *> &fields = <a class="code" href="classSVF_1_1DCHGraph.html#a574ec14099f1112b394b00a79f3fdf1a">fieldTypes</a>[base];</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  assert(fields.size() > idx && <span class="stringliteral">"DCHG: idx into struct larger than # fields!"</span>);</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1DCHGraph.html#a079feacdcc3783f4a9108a3b2d2aed2c">getCanonicalType</a>(fields[idx]);</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  }</div><div class="ttc" id="namespaceSVF_html_aded9b991c77acc5284ccead0739e84f1"><div class="ttname"><a href="namespaceSVF.html#aded9b991c77acc5284ccead0739e84f1">SVF::DICompositeType</a></div><div class="ttdeci">llvm::DICompositeType DICompositeType</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#
|
|
1064
|
+
<div class="fragment"><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  {</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  base = <a class="code" href="classSVF_1_1DCHGraph.html#a079feacdcc3783f4a9108a3b2d2aed2c">getCanonicalType</a>(base);</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  <span class="keywordflow">if</span> (base == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  {</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  <span class="comment">// Conservative; the base object is untyped, sadly.</span></div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  }</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span> </div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  <span class="comment">// For TBHC this is conservative because the union type is lower in the DCHG</span></div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  <span class="comment">// than its fields. TODO: make more precise.</span></div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  <span class="keywordflow">if</span> (base->getTag() == dwarf::DW_TAG_union_type)</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  {</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <span class="keywordflow">return</span> base;</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  }</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span> </div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  <span class="keywordflow">if</span> (base->getTag() == dwarf::DW_TAG_array_type)</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  {</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aded9b991c77acc5284ccead0739e84f1">DICompositeType</a> *cbase = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a><<a class="code" href="namespaceSVF.html#aded9b991c77acc5284ccead0739e84f1">DICompositeType</a>>(base);</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  assert(cbase && <span class="stringliteral">"DCHG: bad DIComposite case"</span>);</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  <span class="keywordflow">return</span> cbase->getBaseType();</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  }</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span> </div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  <span class="keywordflow">if</span> (!(base->getTag() == dwarf::DW_TAG_class_type</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  || base->getTag() == dwarf::DW_TAG_structure_type))</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  {</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  }</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span> </div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  assert(<a class="code" href="classSVF_1_1DCHGraph.html#a574ec14099f1112b394b00a79f3fdf1a">fieldTypes</a>.find(base) != <a class="code" href="classSVF_1_1DCHGraph.html#a574ec14099f1112b394b00a79f3fdf1a">fieldTypes</a>.end() && <span class="stringliteral">"DCHG: base not flattened!"</span>);</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  std::vector<const DIType *> &fields = <a class="code" href="classSVF_1_1DCHGraph.html#a574ec14099f1112b394b00a79f3fdf1a">fieldTypes</a>[base];</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  assert(fields.size() > idx && <span class="stringliteral">"DCHG: idx into struct larger than # fields!"</span>);</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1DCHGraph.html#a079feacdcc3783f4a9108a3b2d2aed2c">getCanonicalType</a>(fields[idx]);</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  }</div><div class="ttc" id="namespaceSVF_html_aded9b991c77acc5284ccead0739e84f1"><div class="ttname"><a href="namespaceSVF.html#aded9b991c77acc5284ccead0739e84f1">SVF::DICompositeType</a></div><div class="ttdeci">llvm::DICompositeType DICompositeType</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00150">BasicTypes.h:150</a></div></div>
|
|
1065
1065
|
<div class="ttc" id="classSVF_1_1DCHGraph_html_a574ec14099f1112b394b00a79f3fdf1a"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#a574ec14099f1112b394b00a79f3fdf1a">SVF::DCHGraph::fieldTypes</a></div><div class="ttdeci">Map< const DIType *, std::vector< const DIType * > > fieldTypes</div><div class="ttdoc">Maps types to their flattened fields&#39; types. </div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8h_source.html#l00374">DCHG.h:374</a></div></div>
|
|
1066
1066
|
<div class="ttc" id="classSVF_1_1DCHGraph_html_a079feacdcc3783f4a9108a3b2d2aed2c"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#a079feacdcc3783f4a9108a3b2d2aed2c">SVF::DCHGraph::getCanonicalType</a></div><div class="ttdeci">const DIType * getCanonicalType(const DIType *t)</div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8cpp_source.html#l00710">DCHG.cpp:710</a></div></div>
|
|
1067
1067
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a8182be247907420db00837cef9bcfa70"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVF::SVFUtil::dyn_cast</a></div><div class="ttdeci">LLVM_NODISCARD std::enable_if<!is_simple_type< Y >::value, typename cast_retty< X, const Y >::ret_type >::type dyn_cast(const Y &Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00343">Casting.h:343</a></div></div>
|
|
@@ -1261,7 +1261,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1261
1261
|
<div class="ttc" id="namespaceSVF_1_1cppUtil_html_a0a67c31dcc44784b09dca54b4b7c624a"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a0a67c31dcc44784b09dca54b4b7c624a">SVF::cppUtil::getFunNameOfVCallSite</a></div><div class="ttdeci">std::string getFunNameOfVCallSite(CallSite cs)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#l00547">CPPUtil.cpp:547</a></div></div>
|
|
1262
1262
|
<div class="ttc" id="cJSON_8h_html_ad4c68ea99a26b0a98ad9a79982960458"><div class="ttname"><a href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">string</a></div><div class="ttdeci">const char *const string</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00172">cJSON.h:172</a></div></div>
|
|
1263
1263
|
<div class="ttc" id="classSVF_1_1CallSite_html_ad0040f4b7953b509059223d1d52c203f"><div class="ttname"><a href="classSVF_1_1CallSite.html#ad0040f4b7953b509059223d1d52c203f">SVF::CallSite::getFunctionType</a></div><div class="ttdeci">FunctionType * getFunctionType() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00307">BasicTypes.h:307</a></div></div>
|
|
1264
|
-
<div class="ttc" id="namespaceSVF_html_ad127b0ad478640ede3d426e3a58d2632"><div class="ttname"><a href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">SVF::DIType</a></div><div class="ttdeci">llvm::DIType DIType</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#
|
|
1264
|
+
<div class="ttc" id="namespaceSVF_html_ad127b0ad478640ede3d426e3a58d2632"><div class="ttname"><a href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">SVF::DIType</a></div><div class="ttdeci">llvm::DIType DIType</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00149">BasicTypes.h:149</a></div></div>
|
|
1265
1265
|
</div><!-- fragment -->
|
|
1266
1266
|
</div>
|
|
1267
1267
|
</div>
|
|
@@ -1329,9 +1329,9 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1329
1329
|
<div class="ttc" id="classSVF_1_1DCHEdge_html_a48f01c4a02c4e278a1ab70b16efdef4ba3b49b95b713f585b717810dce5ac6564"><div class="ttname"><a href="classSVF_1_1DCHEdge.html#a48f01c4a02c4e278a1ab70b16efdef4ba3b49b95b713f585b717810dce5ac6564">SVF::DCHEdge::FIRST_FIELD</a></div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8h_source.html#l00037">DCHG.h:37</a></div></div>
|
|
1330
1330
|
<div class="ttc" id="cJSON_8cpp_html_ab6e2ea6dc7bd57d1483413449998230a"><div class="ttname"><a href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a></div><div class="ttdeci">cJSON * n</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l02558">cJSON.cpp:2558</a></div></div>
|
|
1331
1331
|
<div class="ttc" id="classSVF_1_1DCHGraph_html_a294a2075c97e1db8003393fb472c1def"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#a294a2075c97e1db8003393fb472c1def">SVF::DCHGraph::addEdge</a></div><div class="ttdeci">DCHEdge * addEdge(const DIType *t1, const DIType *t2, DCHEdge::GEdgeKind et)</div><div class="ttdoc">Creates an edge between from t1 to t2. </div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8cpp_source.html#l00421">DCHG.cpp:421</a></div></div>
|
|
1332
|
-
<div class="ttc" id="namespaceSVF_html_a0f825e73d115173b05ca54fb8ec65003"><div class="ttname"><a href="namespaceSVF.html#a0f825e73d115173b05ca54fb8ec65003">SVF::DINodeArray</a></div><div class="ttdeci">llvm::DINodeArray DINodeArray</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#
|
|
1333
|
-
<div class="ttc" id="namespaceSVF_html_a852e75c562139237fcc754c7461533e6"><div class="ttname"><a href="namespaceSVF.html#a852e75c562139237fcc754c7461533e6">SVF::DIDerivedType</a></div><div class="ttdeci">llvm::DIDerivedType DIDerivedType</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#
|
|
1334
|
-
<div class="ttc" id="namespaceSVF_html_a758f3bee97ed46a719d64a2d4f2bc62d"><div class="ttname"><a href="namespaceSVF.html#a758f3bee97ed46a719d64a2d4f2bc62d">SVF::DINode</a></div><div class="ttdeci">llvm::DINode DINode</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#
|
|
1332
|
+
<div class="ttc" id="namespaceSVF_html_a0f825e73d115173b05ca54fb8ec65003"><div class="ttname"><a href="namespaceSVF.html#a0f825e73d115173b05ca54fb8ec65003">SVF::DINodeArray</a></div><div class="ttdeci">llvm::DINodeArray DINodeArray</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00157">BasicTypes.h:157</a></div></div>
|
|
1333
|
+
<div class="ttc" id="namespaceSVF_html_a852e75c562139237fcc754c7461533e6"><div class="ttname"><a href="namespaceSVF.html#a852e75c562139237fcc754c7461533e6">SVF::DIDerivedType</a></div><div class="ttdeci">llvm::DIDerivedType DIDerivedType</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00151">BasicTypes.h:151</a></div></div>
|
|
1334
|
+
<div class="ttc" id="namespaceSVF_html_a758f3bee97ed46a719d64a2d4f2bc62d"><div class="ttname"><a href="namespaceSVF.html#a758f3bee97ed46a719d64a2d4f2bc62d">SVF::DINode</a></div><div class="ttdeci">llvm::DINode DINode</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00156">BasicTypes.h:156</a></div></div>
|
|
1335
1335
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a8182be247907420db00837cef9bcfa70"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVF::SVFUtil::dyn_cast</a></div><div class="ttdeci">LLVM_NODISCARD std::enable_if<!is_simple_type< Y >::value, typename cast_retty< X, const Y >::ret_type >::type dyn_cast(const Y &Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00343">Casting.h:343</a></div></div>
|
|
1336
1336
|
<div class="ttc" id="classSVF_1_1DCHGraph_html_aa6f49dfc9e3580d3f2d8c257395eb11e"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#aa6f49dfc9e3580d3f2d8c257395eb11e">SVF::DCHGraph::extended</a></div><div class="ttdeci">bool extended</div><div class="ttdoc">Whether this CHG is an extended CHG (first-field). Set by buildCHG. </div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8h_source.html#l00356">DCHG.h:356</a></div></div>
|
|
1337
1337
|
</div><!-- fragment -->
|
|
@@ -1434,10 +1434,10 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1434
1434
|
<p class="definition">Definition at line <a class="el" href="DCHG_8cpp_source.html#l00138">138</a> of file <a class="el" href="DCHG_8cpp_source.html">DCHG.cpp</a>.</p>
|
|
1435
1435
|
<div class="fragment"><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> {</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  assert(typedefType && typedefType->getTag() == dwarf::DW_TAG_typedef);</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> </div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="comment">// Need to gather them in a set first because we don't know the base type till</span></div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="comment">// we get to the bottom of the (potentially many) typedefs.</span></div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  std::vector<const DIDerivedType *> typedefs;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="comment">// Check for nullptr because you can typedef void.</span></div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordflow">while</span> (typedefType != <span class="keyword">nullptr</span> && typedefType->getTag() == dwarf::DW_TAG_typedef)</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>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a852e75c562139237fcc754c7461533e6">DIDerivedType</a> *typedefDerivedType = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a><<a class="code" href="namespaceSVF.html#a852e75c562139237fcc754c7461533e6">DIDerivedType</a>>(typedefType);</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="comment">// The typedef itself.</span></div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  typedefs.push_back(typedefDerivedType);</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> </div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="comment">// Next in the typedef line.</span></div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  typedefType = typedefDerivedType->getBaseType();</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> </div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">DIType</a> *baseType = typedefType;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <a class="code" href="classSVF_1_1DCHNode.html">DCHNode</a> *baseTypeNode = <a class="code" href="classSVF_1_1DCHGraph.html#a9ed6b91fad334605f514049a2072b538">getOrCreateNode</a>(baseType);</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> </div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a852e75c562139237fcc754c7461533e6">DIDerivedType</a> *tdef : typedefs)</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>  <span class="comment">// Base type needs to hold its typedefs.</span></div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  baseTypeNode-><a class="code" href="classSVF_1_1DCHNode.html#a9d1016e3da3462664198b1125dfc8f6e">addTypedef</a>(tdef);</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  }</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> }</div><div class="ttc" id="classSVF_1_1DCHGraph_html_a9ed6b91fad334605f514049a2072b538"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#a9ed6b91fad334605f514049a2072b538">SVF::DCHGraph::getOrCreateNode</a></div><div class="ttdeci">DCHNode * getOrCreateNode(const DIType *type)</div><div class="ttdoc">Creates a node from type, or returns it if it exists. </div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8cpp_source.html#l00403">DCHG.cpp:403</a></div></div>
|
|
1436
1436
|
<div class="ttc" id="classSVF_1_1DCHNode_html_a9d1016e3da3462664198b1125dfc8f6e"><div class="ttname"><a href="classSVF_1_1DCHNode.html#a9d1016e3da3462664198b1125dfc8f6e">SVF::DCHNode::addTypedef</a></div><div class="ttdeci">void addTypedef(const DIDerivedType *diTypedef)</div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8h_source.html#l00154">DCHG.h:154</a></div></div>
|
|
1437
|
-
<div class="ttc" id="namespaceSVF_html_a852e75c562139237fcc754c7461533e6"><div class="ttname"><a href="namespaceSVF.html#a852e75c562139237fcc754c7461533e6">SVF::DIDerivedType</a></div><div class="ttdeci">llvm::DIDerivedType DIDerivedType</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#
|
|
1437
|
+
<div class="ttc" id="namespaceSVF_html_a852e75c562139237fcc754c7461533e6"><div class="ttname"><a href="namespaceSVF.html#a852e75c562139237fcc754c7461533e6">SVF::DIDerivedType</a></div><div class="ttdeci">llvm::DIDerivedType DIDerivedType</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00151">BasicTypes.h:151</a></div></div>
|
|
1438
1438
|
<div class="ttc" id="classSVF_1_1DCHNode_html"><div class="ttname"><a href="classSVF_1_1DCHNode.html">SVF::DCHNode</a></div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8h_source.html#l00063">DCHG.h:63</a></div></div>
|
|
1439
1439
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a8182be247907420db00837cef9bcfa70"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVF::SVFUtil::dyn_cast</a></div><div class="ttdeci">LLVM_NODISCARD std::enable_if<!is_simple_type< Y >::value, typename cast_retty< X, const Y >::ret_type >::type dyn_cast(const Y &Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00343">Casting.h:343</a></div></div>
|
|
1440
|
-
<div class="ttc" id="namespaceSVF_html_ad127b0ad478640ede3d426e3a58d2632"><div class="ttname"><a href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">SVF::DIType</a></div><div class="ttdeci">llvm::DIType DIType</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#
|
|
1440
|
+
<div class="ttc" id="namespaceSVF_html_ad127b0ad478640ede3d426e3a58d2632"><div class="ttname"><a href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">SVF::DIType</a></div><div class="ttdeci">llvm::DIType DIType</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00149">BasicTypes.h:149</a></div></div>
|
|
1441
1441
|
</div><!-- fragment -->
|
|
1442
1442
|
</div>
|
|
1443
1443
|
</div>
|
|
@@ -1646,12 +1646,12 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1646
1646
|
|
|
1647
1647
|
<p class="definition">Definition at line <a class="el" href="DCHG_8cpp_source.html#l00674">674</a> of file <a class="el" href="DCHG_8cpp_source.html">DCHG.cpp</a>.</p>
|
|
1648
1648
|
<div class="fragment"><div class="line"><a name="l00675"></a><span class="lineno"> 675</span> {</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>  assert(f && <a class="code" href="cJSON_8h.html#a1a175e87536301df98c805ac0636ad7c">b</a> && <span class="stringliteral">"DCHG::isFieldOf: given nullptr!"</span>);</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span> </div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>  f = <a class="code" href="classSVF_1_1DCHGraph.html#a079feacdcc3783f4a9108a3b2d2aed2c">getCanonicalType</a>(f);</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>  <a class="code" href="cJSON_8h.html#a1a175e87536301df98c805ac0636ad7c">b</a> = <a class="code" href="classSVF_1_1DCHGraph.html#a079feacdcc3783f4a9108a3b2d2aed2c">getCanonicalType</a>(<a class="code" href="cJSON_8h.html#a1a175e87536301df98c805ac0636ad7c">b</a>);</div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>  <span class="keywordflow">if</span> (f == <a class="code" href="cJSON_8h.html#a1a175e87536301df98c805ac0636ad7c">b</a>) <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span> </div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>  <span class="keywordflow">if</span> (<a class="code" href="cJSON_8h.html#a1a175e87536301df98c805ac0636ad7c">b</a>->getTag() == dwarf::DW_TAG_array_type || <a class="code" href="cJSON_8h.html#a1a175e87536301df98c805ac0636ad7c">b</a>->getTag() == dwarf::DW_TAG_pointer_type)</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>  {</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">DIType</a> *baseType = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aded9b991c77acc5284ccead0739e84f1">DICompositeType</a> *arrayType = SVFUtil::dyn_cast<DICompositeType>(<a class="code" href="cJSON_8h.html#a1a175e87536301df98c805ac0636ad7c">b</a>))</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>  {</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>  baseType = arrayType->getBaseType();</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>  }</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a852e75c562139237fcc754c7461533e6">DIDerivedType</a> *ptrType = SVFUtil::dyn_cast<DIDerivedType>(<a class="code" href="cJSON_8h.html#a1a175e87536301df98c805ac0636ad7c">b</a>))</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>  {</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>  baseType = ptrType->getBaseType();</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>  }</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>  assert(baseType && <span class="stringliteral">"DCHG::isFieldOf: baseType is neither DIComposite nor DIDerived!"</span>);</div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span> </div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>  baseType = <a class="code" href="classSVF_1_1DCHGraph.html#a079feacdcc3783f4a9108a3b2d2aed2c">getCanonicalType</a>(baseType);</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>  <span class="keywordflow">return</span> f == baseType || (baseType != <span class="keyword">nullptr</span> && <a class="code" href="classSVF_1_1DCHGraph.html#af0534356b4a8c68507e1237f1d7a8c11">isFieldOf</a>(f, baseType));</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>  }</div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="cJSON_8h.html#a1a175e87536301df98c805ac0636ad7c">b</a>->getTag() == dwarf::DW_TAG_class_type</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>  || <a class="code" href="cJSON_8h.html#a1a175e87536301df98c805ac0636ad7c">b</a>->getTag() == dwarf::DW_TAG_structure_type)</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>  {</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>  <span class="keyword">const</span> std::vector<const DIType *> &fields = <a class="code" href="classSVF_1_1DCHGraph.html#ae9a0007299178912e2568dc7158d6824">getFieldTypes</a>(<a class="code" href="cJSON_8h.html#a1a175e87536301df98c805ac0636ad7c">b</a>);</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>  <span class="keywordflow">return</span> std::find(fields.begin(), fields.end(), f) != fields.end();</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>  }</div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>  {</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>  }</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span> }</div><div class="ttc" id="classSVF_1_1DCHGraph_html_ae9a0007299178912e2568dc7158d6824"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#ae9a0007299178912e2568dc7158d6824">SVF::DCHGraph::getFieldTypes</a></div><div class="ttdeci">const std::vector< const DIType * > & getFieldTypes(const DIType *base)</div><div class="ttdoc">Returns a vector of the types of all fields in base. </div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8h_source.html#l00327">DCHG.h:327</a></div></div>
|
|
1649
|
-
<div class="ttc" id="namespaceSVF_html_aded9b991c77acc5284ccead0739e84f1"><div class="ttname"><a href="namespaceSVF.html#aded9b991c77acc5284ccead0739e84f1">SVF::DICompositeType</a></div><div class="ttdeci">llvm::DICompositeType DICompositeType</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#
|
|
1649
|
+
<div class="ttc" id="namespaceSVF_html_aded9b991c77acc5284ccead0739e84f1"><div class="ttname"><a href="namespaceSVF.html#aded9b991c77acc5284ccead0739e84f1">SVF::DICompositeType</a></div><div class="ttdeci">llvm::DICompositeType DICompositeType</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00150">BasicTypes.h:150</a></div></div>
|
|
1650
1650
|
<div class="ttc" id="cJSON_8h_html_a1a175e87536301df98c805ac0636ad7c"><div class="ttname"><a href="cJSON_8h.html#a1a175e87536301df98c805ac0636ad7c">b</a></div><div class="ttdeci">const cJSON *const b</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00255">cJSON.h:255</a></div></div>
|
|
1651
|
-
<div class="ttc" id="namespaceSVF_html_a852e75c562139237fcc754c7461533e6"><div class="ttname"><a href="namespaceSVF.html#a852e75c562139237fcc754c7461533e6">SVF::DIDerivedType</a></div><div class="ttdeci">llvm::DIDerivedType DIDerivedType</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#
|
|
1651
|
+
<div class="ttc" id="namespaceSVF_html_a852e75c562139237fcc754c7461533e6"><div class="ttname"><a href="namespaceSVF.html#a852e75c562139237fcc754c7461533e6">SVF::DIDerivedType</a></div><div class="ttdeci">llvm::DIDerivedType DIDerivedType</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00151">BasicTypes.h:151</a></div></div>
|
|
1652
1652
|
<div class="ttc" id="classSVF_1_1DCHGraph_html_af0534356b4a8c68507e1237f1d7a8c11"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#af0534356b4a8c68507e1237f1d7a8c11">SVF::DCHGraph::isFieldOf</a></div><div class="ttdeci">virtual bool isFieldOf(const DIType *f, const DIType *b)</div><div class="ttdoc">Returns true if f is a field of b (fields from getFieldTypes). </div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8cpp_source.html#l00674">DCHG.cpp:674</a></div></div>
|
|
1653
1653
|
<div class="ttc" id="classSVF_1_1DCHGraph_html_a079feacdcc3783f4a9108a3b2d2aed2c"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#a079feacdcc3783f4a9108a3b2d2aed2c">SVF::DCHGraph::getCanonicalType</a></div><div class="ttdeci">const DIType * getCanonicalType(const DIType *t)</div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8cpp_source.html#l00710">DCHG.cpp:710</a></div></div>
|
|
1654
|
-
<div class="ttc" id="namespaceSVF_html_ad127b0ad478640ede3d426e3a58d2632"><div class="ttname"><a href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">SVF::DIType</a></div><div class="ttdeci">llvm::DIType DIType</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#
|
|
1654
|
+
<div class="ttc" id="namespaceSVF_html_ad127b0ad478640ede3d426e3a58d2632"><div class="ttname"><a href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">SVF::DIType</a></div><div class="ttdeci">llvm::DIType DIType</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00149">BasicTypes.h:149</a></div></div>
|
|
1655
1655
|
</div><!-- fragment -->
|
|
1656
1656
|
</div>
|
|
1657
1657
|
</div>
|
|
@@ -1728,7 +1728,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1728
1728
|
<div class="ttc" id="classSVF_1_1DCHEdge_html_a48f01c4a02c4e278a1ab70b16efdef4ba3e807b4caeb170c5cd1e855ac1a92d77"><div class="ttname"><a href="classSVF_1_1DCHEdge.html#a48f01c4a02c4e278a1ab70b16efdef4ba3e807b4caeb170c5cd1e855ac1a92d77">SVF::DCHEdge::INSTANCE</a></div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8h_source.html#l00036">DCHG.h:36</a></div></div>
|
|
1729
1729
|
<div class="ttc" id="namespaceSVF_html_af739db846e47ba6b2fd15eaad31ab7fb"><div class="ttname"><a href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">SVF::Set</a></div><div class="ttdeci">std::unordered_set< Key, Hash, KeyEqual, Allocator > Set</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00105">SVFBasicTypes.h:105</a></div></div>
|
|
1730
1730
|
<div class="ttc" id="structSVF_1_1cppUtil_1_1DemangledName_html_a1dd17b240663bc9412adefde82385e02"><div class="ttname"><a href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">SVF::cppUtil::DemangledName::funcName</a></div><div class="ttdeci">std::string funcName</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8h_source.html#l00049">CPPUtil.h:49</a></div></div>
|
|
1731
|
-
<div class="ttc" id="namespaceSVF_html_a852e75c562139237fcc754c7461533e6"><div class="ttname"><a href="namespaceSVF.html#a852e75c562139237fcc754c7461533e6">SVF::DIDerivedType</a></div><div class="ttdeci">llvm::DIDerivedType DIDerivedType</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#
|
|
1731
|
+
<div class="ttc" id="namespaceSVF_html_a852e75c562139237fcc754c7461533e6"><div class="ttname"><a href="namespaceSVF.html#a852e75c562139237fcc754c7461533e6">SVF::DIDerivedType</a></div><div class="ttdeci">llvm::DIDerivedType DIDerivedType</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00151">BasicTypes.h:151</a></div></div>
|
|
1732
1732
|
<div class="ttc" id="classSVF_1_1GenericNode_html_a2d9cd758d6f8c5189d9b90b74f43e009"><div class="ttname"><a href="classSVF_1_1GenericNode.html#a2d9cd758d6f8c5189d9b90b74f43e009">SVF::GenericNode::getOutEdges</a></div><div class="ttdeci">const GEdgeSetTy & getOutEdges() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00182">GenericGraph.h:182</a></div></div>
|
|
1733
1733
|
<div class="ttc" id="structSVF_1_1cppUtil_1_1DemangledName_html_a5cd207bce618521166e6fa235014b297"><div class="ttname"><a href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">SVF::cppUtil::DemangledName::className</a></div><div class="ttdeci">std::string className</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8h_source.html#l00048">CPPUtil.h:48</a></div></div>
|
|
1734
1734
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aed0b0b9f035057552a6a82154fd88e61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVF::SVFUtil::outs</a></div><div class="ttdeci">std::ostream & outs()</div><div class="ttdoc">Overwrite llvm::outs() </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00049">SVFUtil.h:49</a></div></div>
|
|
@@ -1769,7 +1769,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1769
1769
|
|
|
1770
1770
|
<p class="definition">Definition at line <a class="el" href="DCHG_8cpp_source.html#l00804">804</a> of file <a class="el" href="DCHG_8cpp_source.html">DCHG.cpp</a>.</p>
|
|
1771
1771
|
<div class="fragment"><div class="line"><a name="l00805"></a><span class="lineno"> 805</span> {</div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span>  t = <a class="code" href="classSVF_1_1DCHGraph.html#a175ed6ad0c9b23d5617f755ab96c76c4">stripQualifiers</a>(t);</div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span>  <span class="keywordflow">if</span> (t->getTag() == dwarf::DW_TAG_array_type)</div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span>  {</div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aded9b991c77acc5284ccead0739e84f1">DICompositeType</a> *at = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a><<a class="code" href="namespaceSVF.html#aded9b991c77acc5284ccead0739e84f1">DICompositeType</a>>(t);</div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1DCHGraph.html#a6c276e661e5e63c1c84387f84c8a62e4">stripArray</a>(at->getBaseType());</div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span>  }</div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span> </div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span>  <span class="keywordflow">return</span> t;</div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span> }</div><div class="ttc" id="classSVF_1_1DCHGraph_html_a175ed6ad0c9b23d5617f755ab96c76c4"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#a175ed6ad0c9b23d5617f755ab96c76c4">SVF::DCHGraph::stripQualifiers</a></div><div class="ttdeci">static const DIType * stripQualifiers(const DIType *)</div><div class="ttdoc">Returns the DIType beneath the qualifiers. Does not strip away "DW_TAG_members". </div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8cpp_source.html#l00751">DCHG.cpp:751</a></div></div>
|
|
1772
|
-
<div class="ttc" id="namespaceSVF_html_aded9b991c77acc5284ccead0739e84f1"><div class="ttname"><a href="namespaceSVF.html#aded9b991c77acc5284ccead0739e84f1">SVF::DICompositeType</a></div><div class="ttdeci">llvm::DICompositeType DICompositeType</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#
|
|
1772
|
+
<div class="ttc" id="namespaceSVF_html_aded9b991c77acc5284ccead0739e84f1"><div class="ttname"><a href="namespaceSVF.html#aded9b991c77acc5284ccead0739e84f1">SVF::DICompositeType</a></div><div class="ttdeci">llvm::DICompositeType DICompositeType</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00150">BasicTypes.h:150</a></div></div>
|
|
1773
1773
|
<div class="ttc" id="classSVF_1_1DCHGraph_html_a6c276e661e5e63c1c84387f84c8a62e4"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#a6c276e661e5e63c1c84387f84c8a62e4">SVF::DCHGraph::stripArray</a></div><div class="ttdeci">static const DIType * stripArray(const DIType *)</div><div class="ttdoc">Returns the DIType beneath all qualifiers and arrays. </div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8cpp_source.html#l00804">DCHG.cpp:804</a></div></div>
|
|
1774
1774
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a8182be247907420db00837cef9bcfa70"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVF::SVFUtil::dyn_cast</a></div><div class="ttdeci">LLVM_NODISCARD std::enable_if<!is_simple_type< Y >::value, typename cast_retty< X, const Y >::ret_type >::type dyn_cast(const Y &Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00343">Casting.h:343</a></div></div>
|
|
1775
1775
|
</div><!-- fragment -->
|
|
@@ -1802,7 +1802,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1802
1802
|
<p>Returns the DIType beneath the qualifiers. Does not strip away "DW_TAG_members". </p>
|
|
1803
1803
|
|
|
1804
1804
|
<p class="definition">Definition at line <a class="el" href="DCHG_8cpp_source.html#l00751">751</a> of file <a class="el" href="DCHG_8cpp_source.html">DCHG.cpp</a>.</p>
|
|
1805
|
-
<div class="fragment"><div class="line"><a name="l00752"></a><span class="lineno"> 752</span> {</div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span>  <span class="keywordflow">while</span> (<span class="keyword">true</span>)</div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span>  {</div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span>  <span class="comment">// nullptr means void.</span></div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span>  <span class="keywordflow">if</span> (t == <span class="keyword">nullptr</span></div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>  || SVFUtil::isa<DIBasicType>(t)</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>  || SVFUtil::isa<DISubroutineType>(t))</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>  {</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>  }</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span> </div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>  <span class="keywordtype">unsigned</span> tag = t->getTag();</div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>  <span class="comment">// Verbose for clarity.</span></div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>  <span class="keywordflow">if</span> ( tag == dwarf::DW_TAG_const_type</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>  || tag == dwarf::DW_TAG_atomic_type</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>  || tag == dwarf::DW_TAG_volatile_type</div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span>  || tag == dwarf::DW_TAG_restrict_type</div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span>  || tag == dwarf::DW_TAG_typedef)</div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>  {</div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span>  <span class="comment">// Qualifier - get underlying type.</span></div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a852e75c562139237fcc754c7461533e6">DIDerivedType</a> *dt = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a><<a class="code" href="namespaceSVF.html#a852e75c562139237fcc754c7461533e6">DIDerivedType</a>>(t);</div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>  assert(t && <span class="stringliteral">"DCHG: expected DerivedType"</span>);</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>  t = dt->getBaseType();</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>  }</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( tag == dwarf::DW_TAG_array_type</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>  || tag == dwarf::DW_TAG_class_type</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>  || tag == dwarf::DW_TAG_structure_type</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>  || tag == dwarf::DW_TAG_union_type</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>  || tag == dwarf::DW_TAG_enumeration_type</div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>  || tag == dwarf::DW_TAG_member</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>  || tag == dwarf::DW_TAG_pointer_type</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>  || tag == dwarf::DW_TAG_ptr_to_member_type</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>  || tag == dwarf::DW_TAG_reference_type</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>  || tag == dwarf::DW_TAG_rvalue_reference_type)</div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>  {</div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span>  <span class="comment">// Hit a non-qualifier.</span></div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>  }</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( tag == dwarf::DW_TAG_inheritance</div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>  || tag == dwarf::DW_TAG_friend)</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span>  {</div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>  assert(<span class="keyword">false</span> && <span class="stringliteral">"DCHG: unexpected tag when stripping qualifiers"</span>);</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>  }</div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span>  {</div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span>  assert(<span class="keyword">false</span> && <span class="stringliteral">"DCHG: unhandled tag when stripping qualifiers"</span>);</div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span>  }</div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span>  }</div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span> </div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span>  <span class="keywordflow">return</span> t;</div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span> }</div><div class="ttc" id="namespaceSVF_html_a852e75c562139237fcc754c7461533e6"><div class="ttname"><a href="namespaceSVF.html#a852e75c562139237fcc754c7461533e6">SVF::DIDerivedType</a></div><div class="ttdeci">llvm::DIDerivedType DIDerivedType</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#
|
|
1805
|
+
<div class="fragment"><div class="line"><a name="l00752"></a><span class="lineno"> 752</span> {</div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span>  <span class="keywordflow">while</span> (<span class="keyword">true</span>)</div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span>  {</div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span>  <span class="comment">// nullptr means void.</span></div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span>  <span class="keywordflow">if</span> (t == <span class="keyword">nullptr</span></div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>  || SVFUtil::isa<DIBasicType>(t)</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>  || SVFUtil::isa<DISubroutineType>(t))</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>  {</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>  }</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span> </div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>  <span class="keywordtype">unsigned</span> tag = t->getTag();</div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>  <span class="comment">// Verbose for clarity.</span></div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>  <span class="keywordflow">if</span> ( tag == dwarf::DW_TAG_const_type</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>  || tag == dwarf::DW_TAG_atomic_type</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>  || tag == dwarf::DW_TAG_volatile_type</div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span>  || tag == dwarf::DW_TAG_restrict_type</div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span>  || tag == dwarf::DW_TAG_typedef)</div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>  {</div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span>  <span class="comment">// Qualifier - get underlying type.</span></div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a852e75c562139237fcc754c7461533e6">DIDerivedType</a> *dt = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a><<a class="code" href="namespaceSVF.html#a852e75c562139237fcc754c7461533e6">DIDerivedType</a>>(t);</div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>  assert(t && <span class="stringliteral">"DCHG: expected DerivedType"</span>);</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>  t = dt->getBaseType();</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>  }</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( tag == dwarf::DW_TAG_array_type</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>  || tag == dwarf::DW_TAG_class_type</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>  || tag == dwarf::DW_TAG_structure_type</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>  || tag == dwarf::DW_TAG_union_type</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>  || tag == dwarf::DW_TAG_enumeration_type</div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>  || tag == dwarf::DW_TAG_member</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>  || tag == dwarf::DW_TAG_pointer_type</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>  || tag == dwarf::DW_TAG_ptr_to_member_type</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>  || tag == dwarf::DW_TAG_reference_type</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>  || tag == dwarf::DW_TAG_rvalue_reference_type)</div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>  {</div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span>  <span class="comment">// Hit a non-qualifier.</span></div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>  }</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( tag == dwarf::DW_TAG_inheritance</div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>  || tag == dwarf::DW_TAG_friend)</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span>  {</div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>  assert(<span class="keyword">false</span> && <span class="stringliteral">"DCHG: unexpected tag when stripping qualifiers"</span>);</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>  }</div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span>  {</div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span>  assert(<span class="keyword">false</span> && <span class="stringliteral">"DCHG: unhandled tag when stripping qualifiers"</span>);</div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span>  }</div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span>  }</div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span> </div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span>  <span class="keywordflow">return</span> t;</div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span> }</div><div class="ttc" id="namespaceSVF_html_a852e75c562139237fcc754c7461533e6"><div class="ttname"><a href="namespaceSVF.html#a852e75c562139237fcc754c7461533e6">SVF::DIDerivedType</a></div><div class="ttdeci">llvm::DIDerivedType DIDerivedType</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00151">BasicTypes.h:151</a></div></div>
|
|
1806
1806
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a8182be247907420db00837cef9bcfa70"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVF::SVFUtil::dyn_cast</a></div><div class="ttdeci">LLVM_NODISCARD std::enable_if<!is_simple_type< Y >::value, typename cast_retty< X, const Y >::ret_type >::type dyn_cast(const Y &Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00343">Casting.h:343</a></div></div>
|
|
1807
1807
|
</div><!-- fragment -->
|
|
1808
1808
|
</div>
|
|
@@ -1844,12 +1844,12 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1844
1844
|
|
|
1845
1845
|
<p class="definition">Definition at line <a class="el" href="DCHG_8cpp_source.html#l00816">816</a> of file <a class="el" href="DCHG_8cpp_source.html">DCHG.cpp</a>.</p>
|
|
1846
1846
|
<div class="fragment"><div class="line"><a name="l00817"></a><span class="lineno"> 817</span> {</div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span>  t1 = <a class="code" href="classSVF_1_1DCHGraph.html#a175ed6ad0c9b23d5617f755ab96c76c4">stripQualifiers</a>(t1);</div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span>  t2 = <a class="code" href="classSVF_1_1DCHGraph.html#a175ed6ad0c9b23d5617f755ab96c76c4">stripQualifiers</a>(t2);</div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span> </div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>  <span class="keywordflow">if</span> (t1 == t2)</div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span>  {</div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span>  <span class="comment">// Trivial case. Handles SubRoutineTypes too.</span></div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span>  }</div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span> </div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>  <span class="keywordflow">if</span> (t1 == <span class="keyword">nullptr</span> || t2 == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>  {</div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>  <span class="comment">// Since t1 != t2 and one of them is null, it is</span></div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span>  <span class="comment">// impossible for them to be equal.</span></div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>  }</div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span> </div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span>  <span class="comment">// Check if we need base type comparisons.</span></div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span>  <span class="keywordflow">if</span> (SVFUtil::isa<DIBasicType>(t1) && SVFUtil::isa<DIBasicType>(t2))</div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span>  {</div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ada0513be7e25325325ccc9183aeca278">DIBasicType</a> *b1 = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a><<a class="code" href="namespaceSVF.html#ada0513be7e25325325ccc9183aeca278">DIBasicType</a>>(t1);</div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ada0513be7e25325325ccc9183aeca278">DIBasicType</a> *b2 = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a><<a class="code" href="namespaceSVF.html#ada0513be7e25325325ccc9183aeca278">DIBasicType</a>>(t2);</div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span> </div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>  <span class="keywordtype">unsigned</span> enc1 = b1->getEncoding();</div><div class="line"><a name="l00841"></a><span class="lineno"> 841</span>  <span class="keywordtype">unsigned</span> enc2 = b2->getEncoding();</div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span>  <span class="keywordtype">bool</span> okayEnc = ((enc1 == dwarf::DW_ATE_signed || enc1 == dwarf::DW_ATE_unsigned || enc1 == dwarf::DW_ATE_boolean)</div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span>  && (enc2 == dwarf::DW_ATE_signed || enc2 == dwarf::DW_ATE_unsigned || enc2 == dwarf::DW_ATE_boolean))</div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span>  ||</div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span>  (enc1 == dwarf::DW_ATE_float && enc2 == dwarf::DW_ATE_float)</div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span>  ||</div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span>  ((enc1 == dwarf::DW_ATE_signed_char || enc1 == dwarf::DW_ATE_unsigned_char)</div><div class="line"><a name="l00848"></a><span class="lineno"> 848</span>  &&</div><div class="line"><a name="l00849"></a><span class="lineno"> 849</span>  (enc2 == dwarf::DW_ATE_signed_char || enc2 == dwarf::DW_ATE_unsigned_char));</div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span> </div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span>  <span class="keywordflow">if</span> (!okayEnc) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00852"></a><span class="lineno"> 852</span>  <span class="comment">// Now we have split integers, floats, and chars, ignoring signedness.</span></div><div class="line"><a name="l00853"></a><span class="lineno"> 853</span> </div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span>  <span class="keywordflow">return</span> t1->getSizeInBits() == t2->getSizeInBits()</div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span>  && t1->getAlignInBits() == t2->getAlignInBits();</div><div class="line"><a name="l00856"></a><span class="lineno"> 856</span>  }</div><div class="line"><a name="l00857"></a><span class="lineno"> 857</span> </div><div class="line"><a name="l00858"></a><span class="lineno"> 858</span>  <span class="comment">// Check, do we need to compare base types?</span></div><div class="line"><a name="l00859"></a><span class="lineno"> 859</span>  <span class="comment">// This makes pointers, references, and arrays equivalent.</span></div><div class="line"><a name="l00860"></a><span class="lineno"> 860</span>  <span class="comment">// Will handle member types.</span></div><div class="line"><a name="l00861"></a><span class="lineno"> 861</span>  <span class="keywordflow">if</span> ((SVFUtil::isa<DIDerivedType>(t1) || t1->getTag() == dwarf::DW_TAG_array_type)</div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span>  && (SVFUtil::isa<DIDerivedType>(t2) || t2->getTag() == dwarf::DW_TAG_array_type))</div><div class="line"><a name="l00863"></a><span class="lineno"> 863</span>  {</div><div class="line"><a name="l00864"></a><span class="lineno"> 864</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">DIType</a> *base1, *base2;</div><div class="line"><a name="l00865"></a><span class="lineno"> 865</span> </div><div class="line"><a name="l00866"></a><span class="lineno"> 866</span>  <span class="comment">// Set base1.</span></div><div class="line"><a name="l00867"></a><span class="lineno"> 867</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a852e75c562139237fcc754c7461533e6">DIDerivedType</a> *d1 = SVFUtil::dyn_cast<DIDerivedType>(t1))</div><div class="line"><a name="l00868"></a><span class="lineno"> 868</span>  {</div><div class="line"><a name="l00869"></a><span class="lineno"> 869</span>  base1 = d1->getBaseType();</div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span>  }</div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00872"></a><span class="lineno"> 872</span>  {</div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aded9b991c77acc5284ccead0739e84f1">DICompositeType</a> *c1 = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a><<a class="code" href="namespaceSVF.html#aded9b991c77acc5284ccead0739e84f1">DICompositeType</a>>(t1);</div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span>  assert(c1 && <span class="stringliteral">"teq: bad cast for array type"</span>);</div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span>  base1 = c1->getBaseType();</div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span>  }</div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span> </div><div class="line"><a name="l00878"></a><span class="lineno"> 878</span>  <span class="comment">// Set base2.</span></div><div class="line"><a name="l00879"></a><span class="lineno"> 879</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a852e75c562139237fcc754c7461533e6">DIDerivedType</a> *d2 = SVFUtil::dyn_cast<DIDerivedType>(t2))</div><div class="line"><a name="l00880"></a><span class="lineno"> 880</span>  {</div><div class="line"><a name="l00881"></a><span class="lineno"> 881</span>  base2 = d2->getBaseType();</div><div class="line"><a name="l00882"></a><span class="lineno"> 882</span>  }</div><div class="line"><a name="l00883"></a><span class="lineno"> 883</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span>  {</div><div class="line"><a name="l00885"></a><span class="lineno"> 885</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aded9b991c77acc5284ccead0739e84f1">DICompositeType</a> *c2 = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a><<a class="code" href="namespaceSVF.html#aded9b991c77acc5284ccead0739e84f1">DICompositeType</a>>(t2);</div><div class="line"><a name="l00886"></a><span class="lineno"> 886</span>  assert(c2 && <span class="stringliteral">"teq: bad cast for array type"</span>);</div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span>  base2 = c2->getBaseType();</div><div class="line"><a name="l00888"></a><span class="lineno"> 888</span>  }</div><div class="line"><a name="l00889"></a><span class="lineno"> 889</span> </div><div class="line"><a name="l00890"></a><span class="lineno"> 890</span>  <span class="comment">// For ptr-to-member, there is some imprecision (but soundness) in</span></div><div class="line"><a name="l00891"></a><span class="lineno"> 891</span>  <span class="comment">// that we don't check the class type.</span></div><div class="line"><a name="l00892"></a><span class="lineno"> 892</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1DCHGraph.html#acb76ab20da1bfbec00f63d08e48cbddd">teq</a>(base1, base2);</div><div class="line"><a name="l00893"></a><span class="lineno"> 893</span>  }</div><div class="line"><a name="l00894"></a><span class="lineno"> 894</span> </div><div class="line"><a name="l00895"></a><span class="lineno"> 895</span>  <span class="keywordflow">if</span> (SVFUtil::isa<DICompositeType>(t1) && SVFUtil::isa<DICompositeType>(t2))</div><div class="line"><a name="l00896"></a><span class="lineno"> 896</span>  {</div><div class="line"><a name="l00897"></a><span class="lineno"> 897</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aded9b991c77acc5284ccead0739e84f1">DICompositeType</a> *ct1 = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a><<a class="code" href="namespaceSVF.html#aded9b991c77acc5284ccead0739e84f1">DICompositeType</a>>(t1);</div><div class="line"><a name="l00898"></a><span class="lineno"> 898</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aded9b991c77acc5284ccead0739e84f1">DICompositeType</a> *ct2 = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a><<a class="code" href="namespaceSVF.html#aded9b991c77acc5284ccead0739e84f1">DICompositeType</a>>(t2);</div><div class="line"><a name="l00899"></a><span class="lineno"> 899</span> </div><div class="line"><a name="l00900"></a><span class="lineno"> 900</span>  <span class="keywordflow">if</span> (ct1->getTag() != ct2->getTag()) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00901"></a><span class="lineno"> 901</span> </div><div class="line"><a name="l00902"></a><span class="lineno"> 902</span>  <span class="comment">// Treat all enums the same.</span></div><div class="line"><a name="l00903"></a><span class="lineno"> 903</span>  <span class="keywordflow">if</span> (ct1->getTag() == dwarf::DW_TAG_enumeration_type)</div><div class="line"><a name="l00904"></a><span class="lineno"> 904</span>  {</div><div class="line"><a name="l00905"></a><span class="lineno"> 905</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00906"></a><span class="lineno"> 906</span>  }</div><div class="line"><a name="l00907"></a><span class="lineno"> 907</span> </div><div class="line"><a name="l00908"></a><span class="lineno"> 908</span>  <span class="comment">// C++ classes? Check mangled name.</span></div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span>  <span class="keywordflow">if</span> (ct1->getTag() == dwarf::DW_TAG_class_type)</div><div class="line"><a name="l00910"></a><span class="lineno"> 910</span>  {</div><div class="line"><a name="l00911"></a><span class="lineno"> 911</span>  <span class="keywordflow">return</span> ct1->getIdentifier() == ct2->getIdentifier();</div><div class="line"><a name="l00912"></a><span class="lineno"> 912</span>  }</div><div class="line"><a name="l00913"></a><span class="lineno"> 913</span> </div><div class="line"><a name="l00914"></a><span class="lineno"> 914</span>  <span class="comment">// Either union or struct, simply test all fields are equal.</span></div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span>  <span class="comment">// Seems like it is enough to check it was defined in the same place.</span></div><div class="line"><a name="l00916"></a><span class="lineno"> 916</span>  <span class="comment">// The elements sometimes differ but are referring to the same fields.</span></div><div class="line"><a name="l00917"></a><span class="lineno"> 917</span>  <span class="keywordflow">return</span> ct1->getName() == ct2->getName()</div><div class="line"><a name="l00918"></a><span class="lineno"> 918</span>  && ct1->getFile() == ct2->getFile()</div><div class="line"><a name="l00919"></a><span class="lineno"> 919</span>  && ct1->getLine() == ct2->getLine();</div><div class="line"><a name="l00920"></a><span class="lineno"> 920</span>  }</div><div class="line"><a name="l00921"></a><span class="lineno"> 921</span> </div><div class="line"><a name="l00922"></a><span class="lineno"> 922</span>  <span class="comment">// They were not equal base types (discounting signedness), nor were they</span></div><div class="line"><a name="l00923"></a><span class="lineno"> 923</span>  <span class="comment">// "equal" pointers/references/arrays, nor were they the structurally equivalent,</span></div><div class="line"><a name="l00924"></a><span class="lineno"> 924</span>  <span class="comment">// nor were they completely equal.</span></div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00926"></a><span class="lineno"> 926</span> }</div><div class="ttc" id="classSVF_1_1DCHGraph_html_a175ed6ad0c9b23d5617f755ab96c76c4"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#a175ed6ad0c9b23d5617f755ab96c76c4">SVF::DCHGraph::stripQualifiers</a></div><div class="ttdeci">static const DIType * stripQualifiers(const DIType *)</div><div class="ttdoc">Returns the DIType beneath the qualifiers. Does not strip away "DW_TAG_members". </div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8cpp_source.html#l00751">DCHG.cpp:751</a></div></div>
|
|
1847
|
-
<div class="ttc" id="namespaceSVF_html_aded9b991c77acc5284ccead0739e84f1"><div class="ttname"><a href="namespaceSVF.html#aded9b991c77acc5284ccead0739e84f1">SVF::DICompositeType</a></div><div class="ttdeci">llvm::DICompositeType DICompositeType</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#
|
|
1848
|
-
<div class="ttc" id="namespaceSVF_html_a852e75c562139237fcc754c7461533e6"><div class="ttname"><a href="namespaceSVF.html#a852e75c562139237fcc754c7461533e6">SVF::DIDerivedType</a></div><div class="ttdeci">llvm::DIDerivedType DIDerivedType</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#
|
|
1847
|
+
<div class="ttc" id="namespaceSVF_html_aded9b991c77acc5284ccead0739e84f1"><div class="ttname"><a href="namespaceSVF.html#aded9b991c77acc5284ccead0739e84f1">SVF::DICompositeType</a></div><div class="ttdeci">llvm::DICompositeType DICompositeType</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00150">BasicTypes.h:150</a></div></div>
|
|
1848
|
+
<div class="ttc" id="namespaceSVF_html_a852e75c562139237fcc754c7461533e6"><div class="ttname"><a href="namespaceSVF.html#a852e75c562139237fcc754c7461533e6">SVF::DIDerivedType</a></div><div class="ttdeci">llvm::DIDerivedType DIDerivedType</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00151">BasicTypes.h:151</a></div></div>
|
|
1849
1849
|
<div class="ttc" id="classSVF_1_1DCHGraph_html_acb76ab20da1bfbec00f63d08e48cbddd"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#acb76ab20da1bfbec00f63d08e48cbddd">SVF::DCHGraph::teq</a></div><div class="ttdeci">static bool teq(const DIType *t1, const DIType *t2)</div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8cpp_source.html#l00816">DCHG.cpp:816</a></div></div>
|
|
1850
|
-
<div class="ttc" id="namespaceSVF_html_ada0513be7e25325325ccc9183aeca278"><div class="ttname"><a href="namespaceSVF.html#ada0513be7e25325325ccc9183aeca278">SVF::DIBasicType</a></div><div class="ttdeci">llvm::DIBasicType DIBasicType</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#
|
|
1850
|
+
<div class="ttc" id="namespaceSVF_html_ada0513be7e25325325ccc9183aeca278"><div class="ttname"><a href="namespaceSVF.html#ada0513be7e25325325ccc9183aeca278">SVF::DIBasicType</a></div><div class="ttdeci">llvm::DIBasicType DIBasicType</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00154">BasicTypes.h:154</a></div></div>
|
|
1851
1851
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a8182be247907420db00837cef9bcfa70"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVF::SVFUtil::dyn_cast</a></div><div class="ttdeci">LLVM_NODISCARD std::enable_if<!is_simple_type< Y >::value, typename cast_retty< X, const Y >::ret_type >::type dyn_cast(const Y &Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00343">Casting.h:343</a></div></div>
|
|
1852
|
-
<div class="ttc" id="namespaceSVF_html_ad127b0ad478640ede3d426e3a58d2632"><div class="ttname"><a href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">SVF::DIType</a></div><div class="ttdeci">llvm::DIType DIType</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#
|
|
1852
|
+
<div class="ttc" id="namespaceSVF_html_ad127b0ad478640ede3d426e3a58d2632"><div class="ttname"><a href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">SVF::DIType</a></div><div class="ttdeci">llvm::DIType DIType</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00149">BasicTypes.h:149</a></div></div>
|
|
1853
1853
|
</div><!-- fragment -->
|
|
1854
1854
|
</div>
|
|
1855
1855
|
</div>
|