svf-tools 1.0.404 → 1.0.407
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/AndersenSFR_8h_source.html +2 -2
- package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/CHG_8h_source.html +5 -6
- package/SVF-doxygen/html/html/CPPUtil_8cpp.html +3 -3
- package/SVF-doxygen/html/html/CPPUtil_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/CSC_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/CSC_8h_source.html +3 -3
- package/SVF-doxygen/html/html/Conditions_8cpp_source.html +1 -2
- package/SVF-doxygen/html/html/ConsGEdge_8h_source.html +4 -4
- package/SVF-doxygen/html/html/ConsG_8h_source.html +2 -2
- package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +6 -6
- package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/Graph2Json_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/ICFGEdge_8h_source.html +5 -5
- package/SVF-doxygen/html/html/ICFG_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/ICFG_8h_source.html +3 -3
- package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +3 -3
- package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/IRGraph_8h_source.html +16 -16
- package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +16 -13
- package/SVF-doxygen/html/html/LLVMUtil_8h.html +3 -0
- package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +20 -19
- package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/LocationSet_8h_source.html +7 -7
- package/SVF-doxygen/html/html/MHP_8cpp.html +2 -2
- package/SVF-doxygen/html/html/MHP_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/PAGBuilderFromFile_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/PAGBuilderFromFile_8h_source.html +3 -3
- package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +16 -16
- package/SVF-doxygen/html/html/PathCondAllocator_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +5 -5
- package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +25 -25
- package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +5 -5
- package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +11 -11
- package/SVF-doxygen/html/html/SVFIR_8h_source.html +13 -13
- package/SVF-doxygen/html/html/SVFModule_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/SVFStatements_8h_source.html +6 -6
- package/SVF-doxygen/html/html/SVFVariables_8h_source.html +11 -11
- package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +48 -52
- package/SVF-doxygen/html/html/SymbolTableBuilder_8h_source.html +16 -17
- package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +89 -90
- package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +118 -120
- package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/TypeBasedHeapCloning_8h_source.html +1 -1
- package/SVF-doxygen/html/html/VFGNode_8h_source.html +2 -2
- package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1BranchStmt-members.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +20 -20
- package/SVF-doxygen/html/html/classSVF_1_1BranchVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1CHGraph-members.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1CHGraph.html +24 -24
- package/SVF-doxygen/html/html/classSVF_1_1CSC-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CSC.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1CondManager.html +1 -2
- package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1GepObjVar-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +15 -15
- package/SVF-doxygen/html/html/classSVF_1_1GepStmt-members.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +15 -15
- package/SVF-doxygen/html/html/classSVF_1_1GepValVar-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GepValVar.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1ICFG-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1IRAnnotator.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1IRGraph.html +17 -17
- package/SVF-doxygen/html/html/classSVF_1_1IntraCFGEdge-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1IntraCFGEdge.html +23 -23
- package/SVF-doxygen/html/html/classSVF_1_1LocationSet-members.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +52 -52
- package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +85 -89
- package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1NormalGepCGEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1NormalGepCGEdge.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo-members.html +13 -10
- package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo.html +190 -92
- package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +17 -17
- package/SVF-doxygen/html/html/classSVF_1_1PathCondAllocator.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +36 -36
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder-members.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +60 -60
- package/SVF-doxygen/html/html/classSVF_1_1SVFModule.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1StInfo-members.html +10 -13
- package/SVF-doxygen/html/html/classSVF_1_1StInfo.html +40 -137
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder-members.html +6 -7
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +99 -132
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo-members.html +35 -36
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +184 -213
- package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +3 -3
- package/SVF-doxygen/html/html/dda_8cpp.html +1 -1
- package/SVF-doxygen/html/html/dda_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/functions_a.html +6 -6
- package/SVF-doxygen/html/html/functions_b.html +1 -1
- package/SVF-doxygen/html/html/functions_e.html +3 -0
- package/SVF-doxygen/html/html/functions_f.html +2 -2
- package/SVF-doxygen/html/html/functions_func.html +6 -6
- package/SVF-doxygen/html/html/functions_func_f.html +1 -1
- package/SVF-doxygen/html/html/functions_func_g.html +18 -21
- package/SVF-doxygen/html/html/functions_func_i.html +1 -1
- package/SVF-doxygen/html/html/functions_func_s.html +5 -5
- package/SVF-doxygen/html/html/functions_func_v.html +1 -1
- package/SVF-doxygen/html/html/functions_g.html +16 -19
- package/SVF-doxygen/html/html/functions_i.html +5 -5
- package/SVF-doxygen/html/html/functions_l.html +6 -6
- package/SVF-doxygen/html/html/functions_m.html +1 -5
- package/SVF-doxygen/html/html/functions_n.html +1 -1
- package/SVF-doxygen/html/html/functions_o.html +9 -9
- package/SVF-doxygen/html/html/functions_p.html +9 -9
- package/SVF-doxygen/html/html/functions_r.html +1 -1
- package/SVF-doxygen/html/html/functions_s.html +16 -18
- package/SVF-doxygen/html/html/functions_t.html +7 -7
- package/SVF-doxygen/html/html/functions_type_n.html +1 -1
- package/SVF-doxygen/html/html/functions_type_s.html +1 -1
- package/SVF-doxygen/html/html/functions_v.html +3 -3
- package/SVF-doxygen/html/html/functions_vars_b.html +1 -1
- package/SVF-doxygen/html/html/functions_vars_e.html +3 -0
- package/SVF-doxygen/html/html/functions_vars_f.html +1 -1
- package/SVF-doxygen/html/html/functions_vars_m.html +0 -4
- package/SVF-doxygen/html/html/functions_vars_v.html +2 -2
- package/SVF-doxygen/html/html/functions_w.html +9 -5
- package/SVF-doxygen/html/html/globals_r.html +3 -3
- package/SVF-doxygen/html/html/globals_s.html +5 -7
- package/SVF-doxygen/html/html/mta_8cpp.html +1 -1
- package/SVF-doxygen/html/html/mta_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +73 -41
- package/SVF-doxygen/html/html/namespaceSVF_1_1cppUtil.html +2 -2
- package/SVF-doxygen/html/html/namespacemembers_func.html +4 -1
- package/SVF-doxygen/html/html/namespacemembers_g.html +3 -0
- package/SVF-doxygen/html/html/saber_8cpp.html +1 -1
- package/SVF-doxygen/html/html/saber_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/search/all_1.js +4 -4
- package/SVF-doxygen/html/html/search/all_10.js +7 -7
- package/SVF-doxygen/html/html/search/all_12.js +2 -2
- package/SVF-doxygen/html/html/search/all_13.js +12 -12
- package/SVF-doxygen/html/html/search/all_14.js +5 -5
- package/SVF-doxygen/html/html/search/all_16.js +3 -3
- package/SVF-doxygen/html/html/search/all_17.js +1 -1
- package/SVF-doxygen/html/html/search/all_2.js +1 -1
- package/SVF-doxygen/html/html/search/all_5.js +1 -0
- package/SVF-doxygen/html/html/search/all_6.js +2 -2
- package/SVF-doxygen/html/html/search/all_7.js +7 -7
- package/SVF-doxygen/html/html/search/all_9.js +3 -3
- package/SVF-doxygen/html/html/search/all_c.js +4 -4
- package/SVF-doxygen/html/html/search/all_d.js +2 -2
- package/SVF-doxygen/html/html/search/all_e.js +5 -5
- package/SVF-doxygen/html/html/search/all_f.js +1 -1
- package/SVF-doxygen/html/html/search/functions_0.js +4 -4
- package/SVF-doxygen/html/html/search/functions_10.js +4 -4
- package/SVF-doxygen/html/html/search/functions_13.js +1 -1
- package/SVF-doxygen/html/html/search/functions_5.js +1 -1
- package/SVF-doxygen/html/html/search/functions_6.js +7 -7
- package/SVF-doxygen/html/html/search/functions_8.js +2 -2
- package/SVF-doxygen/html/html/search/functions_a.js +1 -1
- package/SVF-doxygen/html/html/search/functions_e.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_11.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_d.js +1 -1
- package/SVF-doxygen/html/html/search/variables_14.js +2 -2
- package/SVF-doxygen/html/html/search/variables_16.js +2 -2
- package/SVF-doxygen/html/html/search/variables_2.js +1 -1
- package/SVF-doxygen/html/html/search/variables_5.js +1 -0
- package/SVF-doxygen/html/html/search/variables_6.js +1 -1
- package/SVF-doxygen/html/html/search/variables_d.js +1 -1
- package/SVF-doxygen/html/html/search/variables_e.js +3 -3
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1LocationSet_01_4.html +2 -2
- package/SVF-doxygen/html/html/svf-ex_8cpp.html +1 -1
- package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/wpa_8cpp.html +1 -1
- package/SVF-doxygen/html/html/wpa_8cpp_source.html +1 -1
- package/include/Graphs/CHG.h +6 -6
- package/include/Graphs/ConsGEdge.h +1 -1
- package/include/Graphs/ICFG.h +1 -1
- package/include/Graphs/ICFGEdge.h +3 -3
- package/include/MemoryModel/LocationSet.h +5 -5
- package/include/MemoryModel/PAGBuilderFromFile.h +1 -1
- package/include/MemoryModel/SVFIR.h +1 -1
- package/include/MemoryModel/SVFStatements.h +4 -4
- package/include/MemoryModel/SVFVariables.h +2 -2
- package/include/MemoryModel/SymbolTableInfo.h +16 -15
- package/include/SVF-FE/LLVMUtil.h +3 -0
- package/include/SVF-FE/SVFIRBuilder.h +2 -2
- package/include/SVF-FE/SymbolTableBuilder.h +0 -2
- package/include/Util/IRAnnotator.h +2 -2
- package/include/WPA/AndersenSFR.h +1 -1
- package/include/WPA/CSC.h +1 -1
- package/lib/Graphs/ICFG.cpp +1 -1
- package/lib/MTA/MHP.cpp +2 -2
- package/lib/MemoryModel/LocationSet.cpp +3 -3
- package/lib/MemoryModel/PAGBuilderFromFile.cpp +2 -2
- package/lib/MemoryModel/SVFIR.cpp +2 -2
- package/lib/MemoryModel/SymbolTableInfo.cpp +7 -18
- package/lib/SVF-FE/CPPUtil.cpp +4 -4
- package/lib/SVF-FE/ICFGBuilder.cpp +1 -1
- package/lib/SVF-FE/LLVMUtil.cpp +22 -5
- package/lib/SVF-FE/SVFIRBuilder.cpp +9 -9
- package/lib/SVF-FE/SymbolTableBuilder.cpp +3 -22
- package/lib/Util/Conditions.cpp +1 -1
- package/lib/Util/TypeBasedHeapCloning.cpp +1 -1
- package/lib/WPA/AndersenSFR.cpp +6 -6
- package/lib/WPA/CSC.cpp +5 -5
- package/lib/WPA/TypeAnalysis.cpp +3 -3
- package/package.json +1 -1
|
@@ -172,6 +172,9 @@ Functions</h2></td></tr>
|
|
|
172
172
|
<tr class="memitem:a973113323e30a01fd904b35ac18d40ce"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1SVFUtil.html#a973113323e30a01fd904b35ac18d40ce">getTypeOfHeapAlloc</a> (const llvm::Instruction *inst)</td></tr>
|
|
173
173
|
<tr class="memdesc:a973113323e30a01fd904b35ac18d40ce"><td class="mdescLeft"> </td><td class="mdescRight">Get the type of the heap allocation. <a href="#a973113323e30a01fd904b35ac18d40ce">More...</a><br /></td></tr>
|
|
174
174
|
<tr class="separator:a973113323e30a01fd904b35ac18d40ce"><td class="memSeparator" colspan="2"> </td></tr>
|
|
175
|
+
<tr class="memitem:ad72b3529e87e71767c6d226821cfddb3"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1SVFUtil.html#ad72b3529e87e71767c6d226821cfddb3">getUniqueUseViaCastInst</a> (const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *val)</td></tr>
|
|
176
|
+
<tr class="memdesc:ad72b3529e87e71767c6d226821cfddb3"><td class="mdescLeft"> </td><td class="mdescRight">Return the bitcast instruction which is val's only use site, otherwise return nullptr. <a href="#ad72b3529e87e71767c6d226821cfddb3">More...</a><br /></td></tr>
|
|
177
|
+
<tr class="separator:ad72b3529e87e71767c6d226821cfddb3"><td class="memSeparator" colspan="2"> </td></tr>
|
|
175
178
|
<tr class="memitem:a2f9959fa23ab4bdc65ca36fbda8c1b70"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1SVFUtil.html#a2f9959fa23ab4bdc65ca36fbda8c1b70">getNextInsts</a> (const <a class="el" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *curInst, std::vector< const <a class="el" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *> &instList)</td></tr>
|
|
176
179
|
<tr class="memdesc:a2f9959fa23ab4bdc65ca36fbda8c1b70"><td class="mdescLeft"> </td><td class="mdescRight">Get the next instructions following control flow. <a href="#a2f9959fa23ab4bdc65ca36fbda8c1b70">More...</a><br /></td></tr>
|
|
177
180
|
<tr class="separator:a2f9959fa23ab4bdc65ca36fbda8c1b70"><td class="memSeparator" colspan="2"> </td></tr>
|
|
@@ -1412,8 +1415,8 @@ template<class X , class Y > </div>
|
|
|
1412
1415
|
<p>Get num of BB's predecessors. </p>
|
|
1413
1416
|
<p>Get the num of BB's predecessors </p>
|
|
1414
1417
|
|
|
1415
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#
|
|
1416
|
-
<div class="fragment"><div class="line"><a name="
|
|
1418
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00357">357</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
1419
|
+
<div class="fragment"><div class="line"><a name="l00358"></a><span class="lineno"> 358</span> {</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> num = 0;</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a5c943191dc4e242704943e5f594ae99e">const_pred_iterator</a> it = pred_begin(BB), et = pred_end(BB); it != et; ++it)</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  num++;</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  <span class="keywordflow">return</span> num;</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span> }</div><div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00077">SVFBasicTypes.h:77</a></div></div>
|
|
1417
1420
|
<div class="ttc" id="namespaceSVF_html_a5c943191dc4e242704943e5f594ae99e"><div class="ttname"><a href="namespaceSVF.html#a5c943191dc4e242704943e5f594ae99e">SVF::const_pred_iterator</a></div><div class="ttdeci">llvm::const_pred_iterator const_pred_iterator</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00198">BasicTypes.h:198</a></div></div>
|
|
1418
1421
|
</div><!-- fragment -->
|
|
1419
1422
|
</div>
|
|
@@ -1447,8 +1450,8 @@ template<class X , class Y > </div>
|
|
|
1447
1450
|
<p>Get basic block predecessor positin. </p>
|
|
1448
1451
|
<p>Return a position index from current bb to it successor bb </p>
|
|
1449
1452
|
|
|
1450
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#
|
|
1451
|
-
<div class="fragment"><div class="line"><a name="
|
|
1453
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00334">334</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
1454
|
+
<div class="fragment"><div class="line"><a name="l00335"></a><span class="lineno"> 335</span> {</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> pos = 0;</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a5c943191dc4e242704943e5f594ae99e">const_pred_iterator</a> it = pred_begin(succbb), et = pred_end(succbb); it != et; ++it, ++pos)</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  {</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  <span class="keywordflow">if</span>(*it==bb)</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  <span class="keywordflow">return</span> pos;</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  }</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> && <span class="stringliteral">"Didn't find predecessor edge?"</span>);</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  <span class="keywordflow">return</span> pos;</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span> }</div><div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
|
|
1452
1455
|
<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#l00077">SVFBasicTypes.h:77</a></div></div>
|
|
1453
1456
|
<div class="ttc" id="namespaceSVF_html_a5c943191dc4e242704943e5f594ae99e"><div class="ttname"><a href="namespaceSVF.html#a5c943191dc4e242704943e5f594ae99e">SVF::const_pred_iterator</a></div><div class="ttdeci">llvm::const_pred_iterator const_pred_iterator</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00198">BasicTypes.h:198</a></div></div>
|
|
1454
1457
|
</div><!-- fragment -->
|
|
@@ -1473,8 +1476,8 @@ template<class X , class Y > </div>
|
|
|
1473
1476
|
<p>Get num of BB's successors. </p>
|
|
1474
1477
|
<p>Get the num of BB's successors </p>
|
|
1475
1478
|
|
|
1476
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#
|
|
1477
|
-
<div class="fragment"><div class="line"><a name="
|
|
1479
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00349">349</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
1480
|
+
<div class="fragment"><div class="line"><a name="l00350"></a><span class="lineno"> 350</span> {</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  <span class="keywordflow">return</span> BB->getTerminator()->getNumSuccessors();</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span> }</div></div><!-- fragment -->
|
|
1478
1481
|
</div>
|
|
1479
1482
|
</div>
|
|
1480
1483
|
<a id="a1631bbbed23fbfe2204779ecc0dc2769"></a>
|
|
@@ -1506,8 +1509,8 @@ template<class X , class Y > </div>
|
|
|
1506
1509
|
<p>Get basic block successor position. </p>
|
|
1507
1510
|
<p>Get position of a successor basic block </p>
|
|
1508
1511
|
|
|
1509
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#
|
|
1510
|
-
<div class="fragment"><div class="line"><a name="
|
|
1512
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00317">317</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
1513
|
+
<div class="fragment"><div class="line"><a name="l00318"></a><span class="lineno"> 318</span> {</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0;</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *SuccBB: successors(BB))</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  {</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  <span class="keywordflow">if</span> (SuccBB == Succ)</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <span class="keywordflow">return</span> i;</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  i++;</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>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> && <span class="stringliteral">"Didn't find succesor edge?"</span>);</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span> }</div><div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00075">BasicTypes.h:75</a></div></div>
|
|
1511
1514
|
<div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
|
|
1512
1515
|
<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#l00077">SVFBasicTypes.h:77</a></div></div>
|
|
1513
1516
|
</div><!-- fragment -->
|
|
@@ -2395,11 +2398,11 @@ template<class X , class Y > </div>
|
|
|
2395
2398
|
<p>Get the type of the heap allocation. </p>
|
|
2396
2399
|
<p>Return the type of the object from a heap allocation </p>
|
|
2397
2400
|
|
|
2398
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#
|
|
2399
|
-
<div class="fragment"><div class="line"><a name="
|
|
2401
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00287">287</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
2402
|
+
<div class="fragment"><div class="line"><a name="l00288"></a><span class="lineno"> 288</span> {</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>* type = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a><<a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>>(inst->getType());</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span> </div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#ab2064cb70c76f399ce115f2621adea35">isHeapAllocExtCallViaRet</a>(inst))</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>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* v = <a class="code" href="namespaceSVF_1_1SVFUtil.html#ad72b3529e87e71767c6d226821cfddb3">getUniqueUseViaCastInst</a>(inst)){</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>* newTy = SVFUtil::dyn_cast<PointerType>(v->getType()))</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  type = newTy;</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  }</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  }</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#aedfa6e9216c6c788c26aef1967689b76">isHeapAllocExtCallViaArg</a>(inst))</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>  <a class="code" href="classSVF_1_1CallSite.html">CallSite</a> cs = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a202de7ad2bea0311e2f75894c030e7a9">getLLVMCallSite</a>(inst);</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  <span class="keywordtype">int</span> arg_pos = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a73215bac62f1340a58f6c7f2ba9b0e7b">getHeapAllocHoldingArgPosition</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d">getCallee</a>(cs));</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *arg = cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(arg_pos);</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  type = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a><<a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>>(arg->getType());</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  }</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  <span class="keywordflow">else</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>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>( <span class="keyword">false</span> && <span class="stringliteral">"not a heap allocation instruction?"</span>);</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> </div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(type && <span class="stringliteral">"not a pointer type?"</span>);</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  <span class="keywordflow">return</span> type->getElementType();</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span> }</div><div class="ttc" id="namespaceSVF_1_1SVFUtil_html_ad72b3529e87e71767c6d226821cfddb3"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#ad72b3529e87e71767c6d226821cfddb3">SVF::SVFUtil::getUniqueUseViaCastInst</a></div><div class="ttdeci">const Value * getUniqueUseViaCastInst(const Value *val)</div><div class="ttdoc">Return the bitcast instruction which is val&#39;s only use site, otherwise return nullptr. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00271">LLVMUtil.cpp:271</a></div></div>
|
|
2403
|
+
<div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
|
|
2400
2404
|
<div class="ttc" id="namespaceSVF_html_aa962cc1d782cc46553251e96b64a754b"><div class="ttname"><a href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">SVF::PointerType</a></div><div class="ttdeci">llvm::PointerType PointerType</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00103">BasicTypes.h:103</a></div></div>
|
|
2401
2405
|
<div class="ttc" id="classSVF_1_1CallSite_html_a26a594d36bbb5b77e7085502812d9ca2"><div class="ttname"><a href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">SVF::CallSite::getArgument</a></div><div class="ttdeci">Value * getArgument(unsigned ArgNo) const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00298">BasicTypes.h:298</a></div></div>
|
|
2402
|
-
<div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00077">BasicTypes.h:77</a></div></div>
|
|
2403
2406
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aedfa6e9216c6c788c26aef1967689b76"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aedfa6e9216c6c788c26aef1967689b76">SVF::SVFUtil::isHeapAllocExtCallViaArg</a></div><div class="ttdeci">bool isHeapAllocExtCallViaArg(const CallSite cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00107">LLVMUtil.h:107</a></div></div>
|
|
2404
2407
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_ab2064cb70c76f399ce115f2621adea35"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#ab2064cb70c76f399ce115f2621adea35">SVF::SVFUtil::isHeapAllocExtCallViaRet</a></div><div class="ttdeci">bool isHeapAllocExtCallViaRet(const CallSite cs)</div><div class="ttdoc">interfaces to be used externally </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00095">LLVMUtil.h:95</a></div></div>
|
|
2405
2408
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a145abbd2958629718fbca41d25c3124d"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d">SVF::SVFUtil::getCallee</a></div><div class="ttdeci">const SVFFunction * getCallee(const CallSite cs)</div><div class="ttdoc">Return callee of a callsite. Return null if this is an indirect call. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00268">SVFUtil.h:268</a></div></div>
|
|
@@ -2429,8 +2432,8 @@ template<class X , class Y > </div>
|
|
|
2429
2432
|
|
|
2430
2433
|
<p>Helper method to get the size of the type from target data layout. </p>
|
|
2431
2434
|
|
|
2432
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#
|
|
2433
|
-
<div class="fragment"><div class="line"><a name="
|
|
2435
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00414">414</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
2436
|
+
<div class="fragment"><div class="line"><a name="l00415"></a><span class="lineno"> 415</span> {</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span> </div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  <span class="comment">// if the type has size then simply return it, otherwise just return 0</span></div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  <span class="keywordflow">if</span>(type->isSized())</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  <span class="keywordflow">return</span> SymbolTableInfo::getDataLayout(LLVMModuleSet::getLLVMModuleSet()->getMainLLVMModule())->getTypeStoreSize(const_cast<Type*>(type));</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span> }</div></div><!-- fragment -->
|
|
2434
2437
|
</div>
|
|
2435
2438
|
</div>
|
|
2436
2439
|
<a id="a1dadc280bc2df41b82167ed236985dd5"></a>
|
|
@@ -2460,8 +2463,37 @@ template<class X , class Y > </div>
|
|
|
2460
2463
|
</div><div class="memdoc">
|
|
2461
2464
|
<p>if this struct type does not have any element, i.e., opaque </p>
|
|
2462
2465
|
|
|
2463
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#
|
|
2464
|
-
<div class="fragment"><div class="line"><a name="
|
|
2466
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00424">424</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
2467
|
+
<div class="fragment"><div class="line"><a name="l00425"></a><span class="lineno"> 425</span> {</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span> </div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a52c8654c221bb53a59f70ea3cb1e5c45">StructLayout</a> *stTySL = SymbolTableInfo::getDataLayout(LLVMModuleSet::getLLVMModuleSet()->getMainLLVMModule())->getStructLayout( const_cast<StructType *>(sty) );</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  <span class="keywordflow">if</span>(sty->isOpaque())</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  <span class="keywordflow">return</span> stTySL->getElementOffset(field_idx);</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span> }</div><div class="ttc" id="namespaceSVF_html_a52c8654c221bb53a59f70ea3cb1e5c45"><div class="ttname"><a href="namespaceSVF.html#a52c8654c221bb53a59f70ea3cb1e5c45">SVF::StructLayout</a></div><div class="ttdeci">llvm::StructLayout StructLayout</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00109">BasicTypes.h:109</a></div></div>
|
|
2468
|
+
</div><!-- fragment -->
|
|
2469
|
+
</div>
|
|
2470
|
+
</div>
|
|
2471
|
+
<a id="ad72b3529e87e71767c6d226821cfddb3"></a>
|
|
2472
|
+
<h2 class="memtitle"><span class="permalink"><a href="#ad72b3529e87e71767c6d226821cfddb3">◆ </a></span>getUniqueUseViaCastInst()</h2>
|
|
2473
|
+
|
|
2474
|
+
<div class="memitem">
|
|
2475
|
+
<div class="memproto">
|
|
2476
|
+
<table class="memname">
|
|
2477
|
+
<tr>
|
|
2478
|
+
<td class="memname">const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> * SVF::SVFUtil::getUniqueUseViaCastInst </td>
|
|
2479
|
+
<td>(</td>
|
|
2480
|
+
<td class="paramtype">const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> * </td>
|
|
2481
|
+
<td class="paramname"><em>val</em></td><td>)</td>
|
|
2482
|
+
<td></td>
|
|
2483
|
+
</tr>
|
|
2484
|
+
</table>
|
|
2485
|
+
</div><div class="memdoc">
|
|
2486
|
+
|
|
2487
|
+
<p>Return the bitcast instruction which is val's only use site, otherwise return nullptr. </p>
|
|
2488
|
+
<p>If type is void* (i8*) and val is only used at a bitcast instruction </p>
|
|
2489
|
+
|
|
2490
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00271">271</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
2491
|
+
<div class="fragment"><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  {</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a> * type = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a><<a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>>(val->getType());</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(type && <span class="stringliteral">"this value should be a pointer type!"</span>);</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF.html#a3d9e7f32dc17fe8d40f8d6a011403b91">IntegerType</a> *IT = SVFUtil::dyn_cast<IntegerType>(type->getPointerElementType())){</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  <span class="keywordflow">if</span> (IT->getBitWidth() == 8 && val->getNumUses()==1){</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a334998718813a19a7697daf4ba282faf">Use</a> *u = &*val->use_begin();</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a><<a class="code" href="namespaceSVF.html#afc50da46a6ea7c2cf61683bbec4d7c8d">BitCastInst</a>>(u->getUser());</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  }</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  }</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span> }</div><div class="ttc" id="namespaceSVF_html_a334998718813a19a7697daf4ba282faf"><div class="ttname"><a href="namespaceSVF.html#a334998718813a19a7697daf4ba282faf">SVF::Use</a></div><div class="ttdeci">llvm::Use Use</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00084">BasicTypes.h:84</a></div></div>
|
|
2492
|
+
<div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
|
|
2493
|
+
<div class="ttc" id="namespaceSVF_html_aa962cc1d782cc46553251e96b64a754b"><div class="ttname"><a href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">SVF::PointerType</a></div><div class="ttdeci">llvm::PointerType PointerType</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00103">BasicTypes.h:103</a></div></div>
|
|
2494
|
+
<div class="ttc" id="namespaceSVF_html_afc50da46a6ea7c2cf61683bbec4d7c8d"><div class="ttname"><a href="namespaceSVF.html#afc50da46a6ea7c2cf61683bbec4d7c8d">SVF::BitCastInst</a></div><div class="ttdeci">llvm::BitCastInst BitCastInst</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00144">BasicTypes.h:144</a></div></div>
|
|
2495
|
+
<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>
|
|
2496
|
+
<div class="ttc" id="namespaceSVF_html_a3d9e7f32dc17fe8d40f8d6a011403b91"><div class="ttname"><a href="namespaceSVF.html#a3d9e7f32dc17fe8d40f8d6a011403b91">SVF::IntegerType</a></div><div class="ttdeci">llvm::IntegerType IntegerType</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00203">BasicTypes.h:203</a></div></div>
|
|
2465
2497
|
</div><!-- fragment -->
|
|
2466
2498
|
</div>
|
|
2467
2499
|
</div>
|
|
@@ -2742,8 +2774,8 @@ template<class X , class Y > </div>
|
|
|
2742
2774
|
</table>
|
|
2743
2775
|
</div><div class="memdoc">
|
|
2744
2776
|
|
|
2745
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
2746
|
-
<div class="fragment"><div class="line"><a name="
|
|
2777
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00599">599</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
2778
|
+
<div class="fragment"><div class="line"><a name="l00600"></a><span class="lineno"> 600</span> {</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* constExpr = SVFUtil::dyn_cast<ConstantExpr>(val))</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>  {</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>  <span class="keywordflow">if</span>((constExpr->getOpcode() >= Instruction::BinaryOpsBegin) && (constExpr->getOpcode() <= Instruction::BinaryOpsEnd))</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>  <span class="keywordflow">return</span> constExpr;</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>  }</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span> }</div><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="Util_2BasicTypes_8h_source.html#l00122">BasicTypes.h:122</a></div></div>
|
|
2747
2779
|
</div><!-- fragment -->
|
|
2748
2780
|
</div>
|
|
2749
2781
|
</div>
|
|
@@ -2833,8 +2865,8 @@ template<class X , class Y > </div>
|
|
|
2833
2865
|
</table>
|
|
2834
2866
|
</div><div class="memdoc">
|
|
2835
2867
|
|
|
2836
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
2837
|
-
<div class="fragment"><div class="line"><a name="
|
|
2868
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00555">555</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
2869
|
+
<div class="fragment"><div class="line"><a name="l00556"></a><span class="lineno"> 556</span> {</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* constExpr = SVFUtil::dyn_cast<ConstantExpr>(val))</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>  {</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>  <span class="keywordflow">if</span>(constExpr->getOpcode() == Instruction::BitCast)</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>  <span class="keywordflow">return</span> constExpr;</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>  }</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span> }</div><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="Util_2BasicTypes_8h_source.html#l00122">BasicTypes.h:122</a></div></div>
|
|
2838
2870
|
</div><!-- fragment -->
|
|
2839
2871
|
</div>
|
|
2840
2872
|
</div>
|
|
@@ -2862,8 +2894,8 @@ template<class X , class Y > </div>
|
|
|
2862
2894
|
</table>
|
|
2863
2895
|
</div><div class="memdoc">
|
|
2864
2896
|
|
|
2865
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
2866
|
-
<div class="fragment"><div class="line"><a name="
|
|
2897
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00589">589</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
2898
|
+
<div class="fragment"><div class="line"><a name="l00590"></a><span class="lineno"> 590</span> {</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* constExpr = SVFUtil::dyn_cast<ConstantExpr>(val))</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>  {</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>  <span class="keywordflow">if</span>(constExpr->getOpcode() == Instruction::ICmp || constExpr->getOpcode() == Instruction::FCmp)</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>  <span class="keywordflow">return</span> constExpr;</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>  }</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span> }</div><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="Util_2BasicTypes_8h_source.html#l00122">BasicTypes.h:122</a></div></div>
|
|
2867
2899
|
</div><!-- fragment -->
|
|
2868
2900
|
</div>
|
|
2869
2901
|
</div>
|
|
@@ -3131,8 +3163,8 @@ template<class X , class Y > </div>
|
|
|
3131
3163
|
|
|
3132
3164
|
<p>Return corresponding constant expression, otherwise return nullptr. </p>
|
|
3133
3165
|
|
|
3134
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
3135
|
-
<div class="fragment"><div class="line"><a name="
|
|
3166
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00525">525</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
3167
|
+
<div class="fragment"><div class="line"><a name="l00526"></a><span class="lineno"> 526</span> {</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* constExpr = SVFUtil::dyn_cast<ConstantExpr>(val))</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  {</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>  <span class="keywordflow">if</span>(constExpr->getOpcode() == Instruction::GetElementPtr)</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  <span class="keywordflow">return</span> constExpr;</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>  }</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span> }</div><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="Util_2BasicTypes_8h_source.html#l00122">BasicTypes.h:122</a></div></div>
|
|
3136
3168
|
</div><!-- fragment -->
|
|
3137
3169
|
</div>
|
|
3138
3170
|
</div>
|
|
@@ -3520,8 +3552,8 @@ template<class X , class Y > </div>
|
|
|
3520
3552
|
</table>
|
|
3521
3553
|
</div><div class="memdoc">
|
|
3522
3554
|
|
|
3523
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
3524
|
-
<div class="fragment"><div class="line"><a name="
|
|
3555
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00535">535</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
3556
|
+
<div class="fragment"><div class="line"><a name="l00536"></a><span class="lineno"> 536</span> {</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* constExpr = SVFUtil::dyn_cast<ConstantExpr>(val))</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  {</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>  <span class="keywordflow">if</span>(constExpr->getOpcode() == Instruction::IntToPtr)</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>  <span class="keywordflow">return</span> constExpr;</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>  }</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span> }</div><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="Util_2BasicTypes_8h_source.html#l00122">BasicTypes.h:122</a></div></div>
|
|
3525
3557
|
</div><!-- fragment -->
|
|
3526
3558
|
</div>
|
|
3527
3559
|
</div>
|
|
@@ -3604,8 +3636,8 @@ template<class X , class Y > </div>
|
|
|
3604
3636
|
|
|
3605
3637
|
<p>Check whether a file is an LLVM IR file. </p>
|
|
3606
3638
|
|
|
3607
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#
|
|
3608
|
-
<div class="fragment"><div class="line"><a name="
|
|
3639
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00370">370</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
3640
|
+
<div class="fragment"><div class="line"><a name="l00371"></a><span class="lineno"> 371</span> {</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  llvm::ErrorOr<std::unique_ptr<llvm::MemoryBuffer>> FileOrErr = llvm::MemoryBuffer::getFileOrSTDIN(filename);</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  <span class="keywordflow">if</span> (FileOrErr.getError())</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  llvm::MemoryBufferRef Buffer = FileOrErr.get()->getMemBufferRef();</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *bufferStart =</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  (<span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *)Buffer.getBufferStart();</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *bufferEnd =</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  (<span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *)Buffer.getBufferEnd();</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  <span class="keywordflow">return</span> llvm::isBitcode(bufferStart, bufferEnd) ? true :</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  Buffer.getBuffer().startswith(<span class="stringliteral">"; ModuleID ="</span>);</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span> }</div></div><!-- fragment -->
|
|
3609
3641
|
</div>
|
|
3610
3642
|
</div>
|
|
3611
3643
|
<a id="a5f3ecd0770991b6e84afe47a3934f0d2"></a>
|
|
@@ -3985,8 +4017,8 @@ template<class X , class Y > </div>
|
|
|
3985
4017
|
</table>
|
|
3986
4018
|
</div><div class="memdoc">
|
|
3987
4019
|
|
|
3988
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
3989
|
-
<div class="fragment"><div class="line"><a name="
|
|
4020
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00545">545</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
4021
|
+
<div class="fragment"><div class="line"><a name="l00546"></a><span class="lineno"> 546</span> {</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* constExpr = SVFUtil::dyn_cast<ConstantExpr>(val))</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>  {</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>  <span class="keywordflow">if</span>(constExpr->getOpcode() == Instruction::PtrToInt)</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>  <span class="keywordflow">return</span> constExpr;</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>  }</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span> }</div><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="Util_2BasicTypes_8h_source.html#l00122">BasicTypes.h:122</a></div></div>
|
|
3990
4022
|
</div><!-- fragment -->
|
|
3991
4023
|
</div>
|
|
3992
4024
|
</div>
|
|
@@ -4161,8 +4193,8 @@ template<class X , class Y > </div>
|
|
|
4161
4193
|
</table>
|
|
4162
4194
|
</div><div class="memdoc">
|
|
4163
4195
|
|
|
4164
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
4165
|
-
<div class="fragment"><div class="line"><a name="
|
|
4196
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00565">565</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
4197
|
+
<div class="fragment"><div class="line"><a name="l00566"></a><span class="lineno"> 566</span> {</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* constExpr = SVFUtil::dyn_cast<ConstantExpr>(val))</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>  {</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>  <span class="keywordflow">if</span>(constExpr->getOpcode() == Instruction::Select)</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>  <span class="keywordflow">return</span> constExpr;</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>  }</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span> }</div><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="Util_2BasicTypes_8h_source.html#l00122">BasicTypes.h:122</a></div></div>
|
|
4166
4198
|
</div><!-- fragment -->
|
|
4167
4199
|
</div>
|
|
4168
4200
|
</div>
|
|
@@ -4452,8 +4484,8 @@ template<class X , class Y > </div>
|
|
|
4452
4484
|
</table>
|
|
4453
4485
|
</div><div class="memdoc">
|
|
4454
4486
|
|
|
4455
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
4456
|
-
<div class="fragment"><div class="line"><a name="
|
|
4487
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00575">575</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
4488
|
+
<div class="fragment"><div class="line"><a name="l00576"></a><span class="lineno"> 576</span> {</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* constExpr = SVFUtil::dyn_cast<ConstantExpr>(val))</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  {</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>  <span class="keywordflow">if</span>(constExpr->getOpcode() == Instruction::Trunc ||</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>  constExpr->getOpcode() == Instruction::FPTrunc ||</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>  constExpr->getOpcode() == Instruction::ZExt ||</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>  constExpr->getOpcode() == Instruction::SExt ||</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>  constExpr->getOpcode() == Instruction::FPExt)</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  <span class="keywordflow">return</span> constExpr;</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>  }</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span> }</div><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="Util_2BasicTypes_8h_source.html#l00122">BasicTypes.h:122</a></div></div>
|
|
4457
4489
|
</div><!-- fragment -->
|
|
4458
4490
|
</div>
|
|
4459
4491
|
</div>
|
|
@@ -4481,8 +4513,8 @@ template<class X , class Y > </div>
|
|
|
4481
4513
|
</table>
|
|
4482
4514
|
</div><div class="memdoc">
|
|
4483
4515
|
|
|
4484
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
4485
|
-
<div class="fragment"><div class="line"><a name="
|
|
4516
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00609">609</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
4517
|
+
<div class="fragment"><div class="line"><a name="l00610"></a><span class="lineno"> 610</span> {</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* constExpr = SVFUtil::dyn_cast<ConstantExpr>(val))</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>  {</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>  <span class="keywordflow">if</span>((constExpr->getOpcode() >= Instruction::UnaryOpsBegin) && (constExpr->getOpcode() <= Instruction::UnaryOpsEnd))</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>  <span class="keywordflow">return</span> constExpr;</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>  }</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span> }</div><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="Util_2BasicTypes_8h_source.html#l00122">BasicTypes.h:122</a></div></div>
|
|
4486
4518
|
</div><!-- fragment -->
|
|
4487
4519
|
</div>
|
|
4488
4520
|
</div>
|
|
@@ -4621,9 +4653,9 @@ template<typename Data > </div>
|
|
|
4621
4653
|
<p>Parse argument for multi-module analysis. </p>
|
|
4622
4654
|
<p>Get the names of all modules into a vector And process arguments </p>
|
|
4623
4655
|
|
|
4624
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#
|
|
4625
|
-
<div class="fragment"><div class="line"><a name="
|
|
4626
|
-
<div class="ttc" id="
|
|
4656
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00387">387</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
4657
|
+
<div class="fragment"><div class="line"><a name="l00389"></a><span class="lineno"> 389</span> {</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  <span class="keywordtype">bool</span> first_ir_file = <span class="keyword">true</span>;</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i < argc; ++i)</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  {</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  std::string argument(argv[i]);</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#aa1657ceed1953f96329fe7226bf7da4c">SVFUtil::isIRFile</a>(argument))</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  {</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  <span class="keywordflow">if</span> (find(moduleNameVec.begin(), moduleNameVec.end(), argument)</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  == moduleNameVec.end())</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  moduleNameVec.push_back(argument);</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  <span class="keywordflow">if</span> (first_ir_file)</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  {</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  arg_value[arg_num] = argv[i];</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  arg_num++;</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  first_ir_file = <span class="keyword">false</span>;</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  }</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  }</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  {</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  arg_value[arg_num] = argv[i];</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  arg_num++;</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  }</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  }</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span> }</div><div class="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#l00077">SVFBasicTypes.h:77</a></div></div>
|
|
4658
|
+
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aa1657ceed1953f96329fe7226bf7da4c"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aa1657ceed1953f96329fe7226bf7da4c">SVF::SVFUtil::isIRFile</a></div><div class="ttdeci">bool isIRFile(const std::string &filename)</div><div class="ttdoc">Check whether a file is an LLVM IR file. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00370">LLVMUtil.cpp:370</a></div></div>
|
|
4627
4659
|
</div><!-- fragment -->
|
|
4628
4660
|
</div>
|
|
4629
4661
|
</div>
|
|
@@ -4862,7 +4894,7 @@ template<typename Key , typename KeySet > </div>
|
|
|
4862
4894
|
<p>Strip constant casts </p>
|
|
4863
4895
|
|
|
4864
4896
|
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00177">177</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
4865
|
-
<div class="fragment"><div class="line"><a name="l00178"></a><span class="lineno"> 178</span> {</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="keywordflow">if</span> (SVFUtil::isa<GlobalValue>(val) || <a class="code" href="namespaceSVF_1_1SVFUtil.html#a6bc4376ada53ddfbf8df2ca817153555">isInt2PtrConstantExpr</a>(val))</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="keywordflow">return</span> val;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a> *CE = SVFUtil::dyn_cast<ConstantExpr>(val))</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  {</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="keywordflow">if</span> (Instruction::isCast(CE->getOpcode()))</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a86763e6a3606598580cd0172aecb5bc7">stripConstantCasts</a>(CE->getOperand(0));</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  }</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <span class="keywordflow">return</span> val;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> }</div><div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a6bc4376ada53ddfbf8df2ca817153555"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a6bc4376ada53ddfbf8df2ca817153555">SVF::SVFUtil::isInt2PtrConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isInt2PtrConstantExpr(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#
|
|
4897
|
+
<div class="fragment"><div class="line"><a name="l00178"></a><span class="lineno"> 178</span> {</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="keywordflow">if</span> (SVFUtil::isa<GlobalValue>(val) || <a class="code" href="namespaceSVF_1_1SVFUtil.html#a6bc4376ada53ddfbf8df2ca817153555">isInt2PtrConstantExpr</a>(val))</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="keywordflow">return</span> val;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a> *CE = SVFUtil::dyn_cast<ConstantExpr>(val))</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  {</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="keywordflow">if</span> (Instruction::isCast(CE->getOpcode()))</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a86763e6a3606598580cd0172aecb5bc7">stripConstantCasts</a>(CE->getOperand(0));</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  }</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <span class="keywordflow">return</span> val;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> }</div><div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a6bc4376ada53ddfbf8df2ca817153555"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a6bc4376ada53ddfbf8df2ca817153555">SVF::SVFUtil::isInt2PtrConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isInt2PtrConstantExpr(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00535">LLVMUtil.h:535</a></div></div>
|
|
4866
4898
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a86763e6a3606598580cd0172aecb5bc7"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a86763e6a3606598580cd0172aecb5bc7">SVF::SVFUtil::stripConstantCasts</a></div><div class="ttdeci">const Value * stripConstantCasts(const Value *val)</div><div class="ttdoc">Strip off the constant casts. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00177">LLVMUtil.cpp:177</a></div></div>
|
|
4867
4899
|
<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="Util_2BasicTypes_8h_source.html#l00122">BasicTypes.h:122</a></div></div>
|
|
4868
4900
|
</div><!-- fragment -->
|
|
@@ -4933,8 +4965,8 @@ template<typename Key , typename KeySet > </div>
|
|
|
4933
4965
|
</table>
|
|
4934
4966
|
</div><div class="memdoc">
|
|
4935
4967
|
|
|
4936
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#
|
|
4937
|
-
<div class="fragment"><div class="line"><a name="
|
|
4968
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00435">435</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
4969
|
+
<div class="fragment"><div class="line"><a name="l00436"></a><span class="lineno"> 436</span> {</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  std::string str;</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">llvm::raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(type != <span class="keyword">nullptr</span> && <span class="stringliteral">"Given null type!"</span>);</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  rawstr << *type;</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span> }</div><div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
|
|
4938
4970
|
<div class="ttc" id="namespaceSVF_html_a726981481ac082dcda3e4921416b65a0"><div class="ttname"><a href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">SVF::raw_string_ostream</a></div><div class="ttdeci">llvm::raw_string_ostream raw_string_ostream</div><div class="ttdoc">LLVM outputs. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00095">BasicTypes.h:95</a></div></div>
|
|
4939
4971
|
</div><!-- fragment -->
|
|
4940
4972
|
</div>
|