svf-tools 1.0.474 → 1.0.475
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 +1 -1
- package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +8 -7
- package/SVF-doxygen/html/html/Andersen_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/Andersen_8h_source.html +1 -1
- package/SVF-doxygen/html/html/CFLAlias_8h_source.html +2 -2
- package/SVF-doxygen/html/html/CHGBuilder_8cpp.html +2 -2
- package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +20 -19
- package/SVF-doxygen/html/html/CHGBuilder_8h_source.html +15 -15
- package/SVF-doxygen/html/html/CPPUtil_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/Casting_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ConsG_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/ContextDDA_8h_source.html +1 -1
- package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +4 -4
- package/SVF-doxygen/html/html/ExeState_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/FlowDDA_8h_source.html +2 -2
- package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +11 -10
- package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/Graph2Json_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +11 -10
- package/SVF-doxygen/html/html/ICFGBuilder_8h_source.html +7 -7
- package/SVF-doxygen/html/html/ICFG_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/IRGraph_8h_source.html +3 -3
- package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +24 -24
- package/SVF-doxygen/html/html/LLVMUtil_8h.html +111 -111
- package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +41 -40
- package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +11 -10
- package/SVF-doxygen/html/html/LeakChecker_8h_source.html +8 -8
- package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +14 -13
- package/SVF-doxygen/html/html/LocationSet_8h_source.html +9 -9
- package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +31 -30
- package/SVF-doxygen/html/html/LockAnalysis_8h_source.html +23 -23
- package/SVF-doxygen/html/html/MHP_8h_source.html +2 -2
- package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +1 -1
- package/SVF-doxygen/html/html/MTA_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/MemPartition_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +35 -34
- package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +28 -27
- package/SVF-doxygen/html/html/MemSSA_8h_source.html +19 -19
- package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +14 -14
- package/SVF-doxygen/html/html/PathCondAllocator_8cpp_source.html +26 -25
- package/SVF-doxygen/html/html/PathCondAllocator_8h_source.html +22 -22
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +2 -2
- package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +27 -26
- package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +24 -24
- package/SVF-doxygen/html/html/ProgSlice_8h_source.html +3 -3
- package/SVF-doxygen/html/html/SVFBasicTypes_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/SVFGStat_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +17 -16
- package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +37 -37
- package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/SVFIR_8h_source.html +3 -3
- package/SVF-doxygen/html/html/SVFModule_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVFVariables_8h_source.html +3 -3
- package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +40 -39
- package/SVF-doxygen/html/html/SymbolTableBuilder_8h_source.html +16 -16
- package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +58 -57
- package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +24 -24
- package/SVF-doxygen/html/html/TCT_8h_source.html +2 -2
- package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/WPAStat_8h_source.html +5 -5
- package/SVF-doxygen/html/html/cfl_8cpp.html +3 -3
- package/SVF-doxygen/html/html/cfl_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +14 -14
- package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +48 -48
- package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ExeState.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +23 -23
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1FunExitICFGNode.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +23 -23
- package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IRGraph.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +22 -22
- package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +28 -28
- package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +78 -78
- package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +100 -100
- 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_1MTASVFGBuilder.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +54 -54
- package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +56 -56
- package/SVF-doxygen/html/html/classSVF_1_1MemSSAStat.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +15 -15
- package/SVF-doxygen/html/html/classSVF_1_1PathCondAllocator.html +71 -71
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +59 -59
- package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1RaceValidator.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +148 -148
- package/SVF-doxygen/html/html/classSVF_1_1SVFModule.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1StInfo.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +88 -88
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +65 -65
- package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +4 -4
- package/SVF-doxygen/html/html/dda_8cpp.html +2 -2
- package/SVF-doxygen/html/html/dda_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/mta_8cpp.html +2 -2
- package/SVF-doxygen/html/html/mta_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/namespaceSVF.html +4 -2
- package/SVF-doxygen/html/html/namespaceSVF_1_1LLVMUtil.html +1452 -0
- package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +41 -1409
- package/SVF-doxygen/html/html/namespaceSVF_1_1cppUtil.html +4 -4
- package/SVF-doxygen/html/html/namespacemembers.html +3 -3
- package/SVF-doxygen/html/html/namespacemembers_f.html +1 -1
- package/SVF-doxygen/html/html/namespacemembers_func.html +39 -39
- package/SVF-doxygen/html/html/namespacemembers_g.html +14 -14
- package/SVF-doxygen/html/html/namespacemembers_i.html +18 -18
- package/SVF-doxygen/html/html/namespacemembers_p.html +1 -1
- package/SVF-doxygen/html/html/namespacemembers_s.html +2 -2
- package/SVF-doxygen/html/html/namespaces.html +2 -1
- package/SVF-doxygen/html/html/saber_8cpp.html +2 -2
- package/SVF-doxygen/html/html/saber_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/search/all_1.js +3 -3
- package/SVF-doxygen/html/html/search/all_10.js +1 -1
- package/SVF-doxygen/html/html/search/all_13.js +3 -2
- package/SVF-doxygen/html/html/search/all_6.js +1 -1
- package/SVF-doxygen/html/html/search/all_7.js +14 -14
- package/SVF-doxygen/html/html/search/all_9.js +18 -18
- package/SVF-doxygen/html/html/search/functions_0.js +3 -3
- package/SVF-doxygen/html/html/search/functions_11.js +2 -2
- package/SVF-doxygen/html/html/search/functions_5.js +1 -1
- package/SVF-doxygen/html/html/search/functions_6.js +14 -14
- package/SVF-doxygen/html/html/search/functions_8.js +18 -18
- package/SVF-doxygen/html/html/search/functions_f.js +1 -1
- package/SVF-doxygen/html/html/search/namespaces_1.js +1 -0
- package/SVF-doxygen/html/html/svf-ex_8cpp.html +3 -3
- package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/wpa_8cpp.html +2 -2
- package/SVF-doxygen/html/html/wpa_8cpp_source.html +2 -2
- package/include/MTA/MHP.h +1 -1
- package/include/SVF-FE/LLVMUtil.h +7 -7
- package/lib/Graphs/ICFG.cpp +2 -2
- package/lib/MSSA/MemRegion.cpp +1 -0
- package/lib/MSSA/MemSSA.cpp +1 -0
- package/lib/MTA/LockAnalysis.cpp +1 -0
- package/lib/MemoryModel/LocationSet.cpp +1 -0
- package/lib/MemoryModel/PointerAnalysis.cpp +1 -0
- package/lib/MemoryModel/SVFIR.cpp +1 -1
- package/lib/MemoryModel/SymbolTableInfo.cpp +1 -0
- package/lib/SABER/LeakChecker.cpp +1 -0
- package/lib/SABER/PathCondAllocator.cpp +1 -0
- package/lib/SVF-FE/CHGBuilder.cpp +1 -0
- package/lib/SVF-FE/CPPUtil.cpp +2 -2
- package/lib/SVF-FE/ICFGBuilder.cpp +1 -0
- package/lib/SVF-FE/LLVMUtil.cpp +32 -32
- package/lib/SVF-FE/SVFIRBuilder.cpp +2 -1
- package/lib/SVF-FE/SymbolTableBuilder.cpp +8 -7
- package/lib/WPA/AndersenStat.cpp +1 -0
- package/lib/WPA/FlowSensitiveStat.cpp +1 -0
- package/package.json +1 -1
- package/tools/CFL/cfl.cpp +1 -1
- package/tools/DDA/dda.cpp +1 -1
- package/tools/Example/svf-ex.cpp +1 -1
- package/tools/MTA/mta.cpp +1 -1
- package/tools/SABER/saber.cpp +1 -1
- package/tools/WPA/wpa.cpp +1 -1
|
@@ -0,0 +1,1452 @@
|
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
2
|
+
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
3
|
+
<head>
|
|
4
|
+
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
|
5
|
+
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
|
6
|
+
<meta name="generator" content="Doxygen 1.8.13"/>
|
|
7
|
+
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
|
8
|
+
<title>Static Value-Flow Analysis: SVF::LLVMUtil Namespace Reference</title>
|
|
9
|
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
|
10
|
+
<script type="text/javascript" src="jquery.js"></script>
|
|
11
|
+
<script type="text/javascript" src="dynsections.js"></script>
|
|
12
|
+
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
|
13
|
+
<script type="text/javascript" src="search/searchdata.js"></script>
|
|
14
|
+
<script type="text/javascript" src="search/search.js"></script>
|
|
15
|
+
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
|
16
|
+
</head>
|
|
17
|
+
<body>
|
|
18
|
+
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
|
19
|
+
<div id="titlearea">
|
|
20
|
+
<table cellspacing="0" cellpadding="0">
|
|
21
|
+
<tbody>
|
|
22
|
+
<tr style="height: 56px;">
|
|
23
|
+
<td id="projectalign" style="padding-left: 0.5em;">
|
|
24
|
+
<div id="projectname">Static Value-Flow Analysis
|
|
25
|
+
</div>
|
|
26
|
+
</td>
|
|
27
|
+
</tr>
|
|
28
|
+
</tbody>
|
|
29
|
+
</table>
|
|
30
|
+
</div>
|
|
31
|
+
<!-- end header part -->
|
|
32
|
+
<!-- Generated by Doxygen 1.8.13 -->
|
|
33
|
+
<script type="text/javascript">
|
|
34
|
+
var searchBox = new SearchBox("searchBox", "search",false,'Search');
|
|
35
|
+
</script>
|
|
36
|
+
<script type="text/javascript" src="menudata.js"></script>
|
|
37
|
+
<script type="text/javascript" src="menu.js"></script>
|
|
38
|
+
<script type="text/javascript">
|
|
39
|
+
$(function() {
|
|
40
|
+
initMenu('',true,false,'search.php','Search');
|
|
41
|
+
$(document).ready(function() { init_search(); });
|
|
42
|
+
});
|
|
43
|
+
</script>
|
|
44
|
+
<div id="main-nav"></div>
|
|
45
|
+
<!-- window showing the filter options -->
|
|
46
|
+
<div id="MSearchSelectWindow"
|
|
47
|
+
onmouseover="return searchBox.OnSearchSelectShow()"
|
|
48
|
+
onmouseout="return searchBox.OnSearchSelectHide()"
|
|
49
|
+
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
|
50
|
+
</div>
|
|
51
|
+
|
|
52
|
+
<!-- iframe showing the search results (closed by default) -->
|
|
53
|
+
<div id="MSearchResultsWindow">
|
|
54
|
+
<iframe src="javascript:void(0)" frameborder="0"
|
|
55
|
+
name="MSearchResults" id="MSearchResults">
|
|
56
|
+
</iframe>
|
|
57
|
+
</div>
|
|
58
|
+
|
|
59
|
+
<div id="nav-path" class="navpath">
|
|
60
|
+
<ul>
|
|
61
|
+
<li class="navelem"><a class="el" href="namespaceSVF.html">SVF</a></li><li class="navelem"><a class="el" href="namespaceSVF_1_1LLVMUtil.html">LLVMUtil</a></li> </ul>
|
|
62
|
+
</div>
|
|
63
|
+
</div><!-- top -->
|
|
64
|
+
<div class="header">
|
|
65
|
+
<div class="summary">
|
|
66
|
+
<a href="#func-members">Functions</a> </div>
|
|
67
|
+
<div class="headertitle">
|
|
68
|
+
<div class="title">SVF::LLVMUtil Namespace Reference</div> </div>
|
|
69
|
+
</div><!--header-->
|
|
70
|
+
<div class="contents">
|
|
71
|
+
<table class="memberdecls">
|
|
72
|
+
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
|
|
73
|
+
Functions</h2></td></tr>
|
|
74
|
+
<tr class="memitem:abf4e75ba6236136399d45c85be2328fe"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1LLVMUtil.html#abf4e75ba6236136399d45c85be2328fe">isBlackholeSym</a> (const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *val)</td></tr>
|
|
75
|
+
<tr class="memdesc:abf4e75ba6236136399d45c85be2328fe"><td class="mdescLeft"> </td><td class="mdescRight">Check whether this value is a black hole. <a href="#abf4e75ba6236136399d45c85be2328fe">More...</a><br /></td></tr>
|
|
76
|
+
<tr class="separator:abf4e75ba6236136399d45c85be2328fe"><td class="memSeparator" colspan="2"> </td></tr>
|
|
77
|
+
<tr class="memitem:a847fb0c433b5d3611151636ca4bc5bc5"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1LLVMUtil.html#a847fb0c433b5d3611151636ca4bc5bc5">isNullPtrSym</a> (const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *val)</td></tr>
|
|
78
|
+
<tr class="memdesc:a847fb0c433b5d3611151636ca4bc5bc5"><td class="mdescLeft"> </td><td class="mdescRight">Check whether this value is a black hole. <a href="#a847fb0c433b5d3611151636ca4bc5bc5">More...</a><br /></td></tr>
|
|
79
|
+
<tr class="separator:a847fb0c433b5d3611151636ca4bc5bc5"><td class="memSeparator" colspan="2"> </td></tr>
|
|
80
|
+
<tr class="memitem:a2fd5c626b818ac22a9c845227e1461c4"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1LLVMUtil.html#a2fd5c626b818ac22a9c845227e1461c4">isConstantObjSym</a> (const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *val)</td></tr>
|
|
81
|
+
<tr class="memdesc:a2fd5c626b818ac22a9c845227e1461c4"><td class="mdescLeft"> </td><td class="mdescRight">Check whether this value points-to a constant object. <a href="#a2fd5c626b818ac22a9c845227e1461c4">More...</a><br /></td></tr>
|
|
82
|
+
<tr class="separator:a2fd5c626b818ac22a9c845227e1461c4"><td class="memSeparator" colspan="2"> </td></tr>
|
|
83
|
+
<tr class="memitem:a832b1306f23e0f3db8cf5c0a35dc4561"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1LLVMUtil.html#a832b1306f23e0f3db8cf5c0a35dc4561">isReturn</a> (const <a class="el" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *inst)</td></tr>
|
|
84
|
+
<tr class="memdesc:a832b1306f23e0f3db8cf5c0a35dc4561"><td class="mdescLeft"> </td><td class="mdescRight">Whether an instruction is a return instruction. <a href="#a832b1306f23e0f3db8cf5c0a35dc4561">More...</a><br /></td></tr>
|
|
85
|
+
<tr class="separator:a832b1306f23e0f3db8cf5c0a35dc4561"><td class="memSeparator" colspan="2"> </td></tr>
|
|
86
|
+
<tr class="memitem:abba4111230f6009bbf50518ee36a9870"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1LLVMUtil.html#abba4111230f6009bbf50518ee36a9870">getPtrElementType</a> (const <a class="el" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a> *pty)</td></tr>
|
|
87
|
+
<tr class="separator:abba4111230f6009bbf50518ee36a9870"><td class="memSeparator" colspan="2"> </td></tr>
|
|
88
|
+
<tr class="memitem:aca11801ed6ef6ff8d2a1e85bc0fc5794"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1LLVMUtil.html#aca11801ed6ef6ff8d2a1e85bc0fc5794">isObject</a> (const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *ref)</td></tr>
|
|
89
|
+
<tr class="memdesc:aca11801ed6ef6ff8d2a1e85bc0fc5794"><td class="mdescLeft"> </td><td class="mdescRight">Return true if this value refers to a object. <a href="#aca11801ed6ef6ff8d2a1e85bc0fc5794">More...</a><br /></td></tr>
|
|
90
|
+
<tr class="separator:aca11801ed6ef6ff8d2a1e85bc0fc5794"><td class="memSeparator" colspan="2"> </td></tr>
|
|
91
|
+
<tr class="memitem:adad59a953dd81e213db71babbbc9df2f"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1LLVMUtil.html#adad59a953dd81e213db71babbbc9df2f">ArgInProgEntryFunction</a> (const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *val)</td></tr>
|
|
92
|
+
<tr class="memdesc:adad59a953dd81e213db71babbbc9df2f"><td class="mdescLeft"> </td><td class="mdescRight">Return true if this is an argument of a program entry function (e.g. main) <a href="#adad59a953dd81e213db71babbbc9df2f">More...</a><br /></td></tr>
|
|
93
|
+
<tr class="separator:adad59a953dd81e213db71babbbc9df2f"><td class="memSeparator" colspan="2"> </td></tr>
|
|
94
|
+
<tr class="memitem:a0649699433c2fe299ecde41c93f3e4bf"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1LLVMUtil.html#a0649699433c2fe299ecde41c93f3e4bf">isPtrInDeadFunction</a> (const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *value)</td></tr>
|
|
95
|
+
<tr class="memdesc:a0649699433c2fe299ecde41c93f3e4bf"><td class="mdescLeft"> </td><td class="mdescRight">Return true if this is value in a dead function (function without any caller) <a href="#a0649699433c2fe299ecde41c93f3e4bf">More...</a><br /></td></tr>
|
|
96
|
+
<tr class="separator:a0649699433c2fe299ecde41c93f3e4bf"><td class="memSeparator" colspan="2"> </td></tr>
|
|
97
|
+
<tr class="memitem:a651b6a1cf3665277d2241220bb145aed"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1LLVMUtil.html#a651b6a1cf3665277d2241220bb145aed">functionDoesNotRet</a> (const <a class="el" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *fun)</td></tr>
|
|
98
|
+
<tr class="memdesc:a651b6a1cf3665277d2241220bb145aed"><td class="mdescLeft"> </td><td class="mdescRight">Return true if the function has a return instruction reachable from function entry. <a href="#a651b6a1cf3665277d2241220bb145aed">More...</a><br /></td></tr>
|
|
99
|
+
<tr class="separator:a651b6a1cf3665277d2241220bb145aed"><td class="memSeparator" colspan="2"> </td></tr>
|
|
100
|
+
<tr class="memitem:a6e741146121afbb7114aadf3146d403a"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1LLVMUtil.html#a6e741146121afbb7114aadf3146d403a">getFunReachableBBs</a> (const <a class="el" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *fun, <a class="el" href="namespaceSVF.html#aecbb42b8e9d17fa0189c50dda9fd5fdd">DominatorTree</a> *dt, std::vector< const <a class="el" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *> &bbs)</td></tr>
|
|
101
|
+
<tr class="memdesc:a6e741146121afbb7114aadf3146d403a"><td class="mdescLeft"> </td><td class="mdescRight">Get reachable basic block from function entry. <a href="#a6e741146121afbb7114aadf3146d403a">More...</a><br /></td></tr>
|
|
102
|
+
<tr class="separator:a6e741146121afbb7114aadf3146d403a"><td class="memSeparator" colspan="2"> </td></tr>
|
|
103
|
+
<tr class="memitem:aa0e78f2e1c9c04aee478a7ecbf354800"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1LLVMUtil.html#aa0e78f2e1c9c04aee478a7ecbf354800">getFunExitBB</a> (const <a class="el" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *fun)</td></tr>
|
|
104
|
+
<tr class="separator:aa0e78f2e1c9c04aee478a7ecbf354800"><td class="memSeparator" colspan="2"> </td></tr>
|
|
105
|
+
<tr class="memitem:a07bd47ccfd02c5a2a6db26b537b2184f"><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_1LLVMUtil.html#a07bd47ccfd02c5a2a6db26b537b2184f">stripConstantCasts</a> (const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *val)</td></tr>
|
|
106
|
+
<tr class="memdesc:a07bd47ccfd02c5a2a6db26b537b2184f"><td class="mdescLeft"> </td><td class="mdescRight">Strip off the constant casts. <a href="#a07bd47ccfd02c5a2a6db26b537b2184f">More...</a><br /></td></tr>
|
|
107
|
+
<tr class="separator:a07bd47ccfd02c5a2a6db26b537b2184f"><td class="memSeparator" colspan="2"> </td></tr>
|
|
108
|
+
<tr class="memitem:a38ce45ae5f017c90115ce444b44d478c"><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_1LLVMUtil.html#a38ce45ae5f017c90115ce444b44d478c">stripAllCasts</a> (const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *val)</td></tr>
|
|
109
|
+
<tr class="memdesc:a38ce45ae5f017c90115ce444b44d478c"><td class="mdescLeft"> </td><td class="mdescRight">Strip off the all casts. <a href="#a38ce45ae5f017c90115ce444b44d478c">More...</a><br /></td></tr>
|
|
110
|
+
<tr class="separator:a38ce45ae5f017c90115ce444b44d478c"><td class="memSeparator" colspan="2"> </td></tr>
|
|
111
|
+
<tr class="memitem:a2fff71a75bb595865e1ff32d1addda71"><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_1LLVMUtil.html#a2fff71a75bb595865e1ff32d1addda71">getTypeOfHeapAlloc</a> (const llvm::Instruction *inst)</td></tr>
|
|
112
|
+
<tr class="memdesc:a2fff71a75bb595865e1ff32d1addda71"><td class="mdescLeft"> </td><td class="mdescRight">Get the type of the heap allocation. <a href="#a2fff71a75bb595865e1ff32d1addda71">More...</a><br /></td></tr>
|
|
113
|
+
<tr class="separator:a2fff71a75bb595865e1ff32d1addda71"><td class="memSeparator" colspan="2"> </td></tr>
|
|
114
|
+
<tr class="memitem:a837d19c740902c419206287bdb21273b"><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_1LLVMUtil.html#a837d19c740902c419206287bdb21273b">getUniqueUseViaCastInst</a> (const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *val)</td></tr>
|
|
115
|
+
<tr class="memdesc:a837d19c740902c419206287bdb21273b"><td class="mdescLeft"> </td><td class="mdescRight">Return the bitcast instruction which is val's only use site, otherwise return nullptr. <a href="#a837d19c740902c419206287bdb21273b">More...</a><br /></td></tr>
|
|
116
|
+
<tr class="separator:a837d19c740902c419206287bdb21273b"><td class="memSeparator" colspan="2"> </td></tr>
|
|
117
|
+
<tr class="memitem:a151fd7fb2b2ebe72af7c417defbb4f4d"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="SVF-FE_2BasicTypes_8h.html#aa81a27b9c6b2a354437417162220fb14">DataLayout</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1LLVMUtil.html#a151fd7fb2b2ebe72af7c417defbb4f4d">getDataLayout</a> (<a class="el" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a> *mod)</td></tr>
|
|
118
|
+
<tr class="separator:a151fd7fb2b2ebe72af7c417defbb4f4d"><td class="memSeparator" colspan="2"> </td></tr>
|
|
119
|
+
<tr class="memitem:a752d53b6b65d892d0e579aafe70083b4"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1LLVMUtil.html#a752d53b6b65d892d0e579aafe70083b4">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>
|
|
120
|
+
<tr class="memdesc:a752d53b6b65d892d0e579aafe70083b4"><td class="mdescLeft"> </td><td class="mdescRight">Get the next instructions following control flow. <a href="#a752d53b6b65d892d0e579aafe70083b4">More...</a><br /></td></tr>
|
|
121
|
+
<tr class="separator:a752d53b6b65d892d0e579aafe70083b4"><td class="memSeparator" colspan="2"> </td></tr>
|
|
122
|
+
<tr class="memitem:af904cd58192dccb85572cfa95f5ea670"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1LLVMUtil.html#af904cd58192dccb85572cfa95f5ea670">getPrevInsts</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>
|
|
123
|
+
<tr class="memdesc:af904cd58192dccb85572cfa95f5ea670"><td class="mdescLeft"> </td><td class="mdescRight">Get the previous instructions following control flow. <a href="#af904cd58192dccb85572cfa95f5ea670">More...</a><br /></td></tr>
|
|
124
|
+
<tr class="separator:af904cd58192dccb85572cfa95f5ea670"><td class="memSeparator" colspan="2"> </td></tr>
|
|
125
|
+
<tr class="memitem:a5d911cede2f514e87b030e2a93919515"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1LLVMUtil.html#a5d911cede2f514e87b030e2a93919515">getBBSuccessorPos</a> (const <a class="el" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *BB, const <a class="el" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *Succ)</td></tr>
|
|
126
|
+
<tr class="memdesc:a5d911cede2f514e87b030e2a93919515"><td class="mdescLeft"> </td><td class="mdescRight">Get basic block successor position. <a href="#a5d911cede2f514e87b030e2a93919515">More...</a><br /></td></tr>
|
|
127
|
+
<tr class="separator:a5d911cede2f514e87b030e2a93919515"><td class="memSeparator" colspan="2"> </td></tr>
|
|
128
|
+
<tr class="memitem:a6d9205380948e1bd00708581a64301e1"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1LLVMUtil.html#a6d9205380948e1bd00708581a64301e1">getBBSuccessorNum</a> (const <a class="el" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *BB)</td></tr>
|
|
129
|
+
<tr class="memdesc:a6d9205380948e1bd00708581a64301e1"><td class="mdescLeft"> </td><td class="mdescRight">Get num of BB's successors. <a href="#a6d9205380948e1bd00708581a64301e1">More...</a><br /></td></tr>
|
|
130
|
+
<tr class="separator:a6d9205380948e1bd00708581a64301e1"><td class="memSeparator" colspan="2"> </td></tr>
|
|
131
|
+
<tr class="memitem:a87277ee77eceaf80922d54d46103c509"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1LLVMUtil.html#a87277ee77eceaf80922d54d46103c509">getBBPredecessorPos</a> (const <a class="el" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *BB, const <a class="el" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *Pred)</td></tr>
|
|
132
|
+
<tr class="memdesc:a87277ee77eceaf80922d54d46103c509"><td class="mdescLeft"> </td><td class="mdescRight">Get basic block predecessor positin. <a href="#a87277ee77eceaf80922d54d46103c509">More...</a><br /></td></tr>
|
|
133
|
+
<tr class="separator:a87277ee77eceaf80922d54d46103c509"><td class="memSeparator" colspan="2"> </td></tr>
|
|
134
|
+
<tr class="memitem:ae617611b584e3d899984c376a6e91987"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1LLVMUtil.html#ae617611b584e3d899984c376a6e91987">getBBPredecessorNum</a> (const <a class="el" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *BB)</td></tr>
|
|
135
|
+
<tr class="memdesc:ae617611b584e3d899984c376a6e91987"><td class="mdescLeft"> </td><td class="mdescRight">Get num of BB's predecessors. <a href="#ae617611b584e3d899984c376a6e91987">More...</a><br /></td></tr>
|
|
136
|
+
<tr class="separator:ae617611b584e3d899984c376a6e91987"><td class="memSeparator" colspan="2"> </td></tr>
|
|
137
|
+
<tr class="memitem:ad8a8c32a09340f491fffffcb07dd7a41"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1LLVMUtil.html#ad8a8c32a09340f491fffffcb07dd7a41">isIRFile</a> (const std::string &filename)</td></tr>
|
|
138
|
+
<tr class="memdesc:ad8a8c32a09340f491fffffcb07dd7a41"><td class="mdescLeft"> </td><td class="mdescRight">Check whether a file is an LLVM IR file. <a href="#ad8a8c32a09340f491fffffcb07dd7a41">More...</a><br /></td></tr>
|
|
139
|
+
<tr class="separator:ad8a8c32a09340f491fffffcb07dd7a41"><td class="memSeparator" colspan="2"> </td></tr>
|
|
140
|
+
<tr class="memitem:accdd44093d6d145dc92edeaaff3f5732"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1LLVMUtil.html#accdd44093d6d145dc92edeaaff3f5732">processArguments</a> (int argc, char **argv, int &arg_num, char **arg_value, std::vector< std::string > &moduleNameVec)</td></tr>
|
|
141
|
+
<tr class="memdesc:accdd44093d6d145dc92edeaaff3f5732"><td class="mdescLeft"> </td><td class="mdescRight">Parse argument for multi-module analysis. <a href="#accdd44093d6d145dc92edeaaff3f5732">More...</a><br /></td></tr>
|
|
142
|
+
<tr class="separator:accdd44093d6d145dc92edeaaff3f5732"><td class="memSeparator" colspan="2"> </td></tr>
|
|
143
|
+
<tr><td colspan="2"><div class="groupHeader"></div></td></tr>
|
|
144
|
+
<tr class="memitem:a3e94ca73410d21c1a852123e44961ff9"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1LLVMUtil.html#a3e94ca73410d21c1a852123e44961ff9">getRefTypeOfHeapAllocOrStatic</a> (const <a class="el" href="classSVF_1_1CallSite.html">CallSite</a> cs)</td></tr>
|
|
145
|
+
<tr class="memdesc:a3e94ca73410d21c1a852123e44961ff9"><td class="mdescLeft"> </td><td class="mdescRight">Get the reference type of heap/static object from an allocation site. <a href="#a3e94ca73410d21c1a852123e44961ff9">More...</a><br /></td></tr>
|
|
146
|
+
<tr class="separator:a3e94ca73410d21c1a852123e44961ff9"><td class="memSeparator" colspan="2"> </td></tr>
|
|
147
|
+
<tr class="memitem:aa81614cdb6a2a912638d5dc980480af7"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1LLVMUtil.html#aa81614cdb6a2a912638d5dc980480af7">getRefTypeOfHeapAllocOrStatic</a> (const <a class="el" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *inst)</td></tr>
|
|
148
|
+
<tr class="separator:aa81614cdb6a2a912638d5dc980480af7"><td class="memSeparator" colspan="2"> </td></tr>
|
|
149
|
+
<tr><td colspan="2"><div class="groupHeader"></div></td></tr>
|
|
150
|
+
<tr class="memitem:ab775c1aeb5a4e2d18a96c6785d71cb41"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1LLVMUtil.html#ab775c1aeb5a4e2d18a96c6785d71cb41">isDeadFunction</a> (const <a class="el" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *fun)</td></tr>
|
|
151
|
+
<tr class="memdesc:ab775c1aeb5a4e2d18a96c6785d71cb41"><td class="mdescLeft"> </td><td class="mdescRight">whether this is a function without any possible caller? <a href="#ab775c1aeb5a4e2d18a96c6785d71cb41">More...</a><br /></td></tr>
|
|
152
|
+
<tr class="separator:ab775c1aeb5a4e2d18a96c6785d71cb41"><td class="memSeparator" colspan="2"> </td></tr>
|
|
153
|
+
<tr class="memitem:a5cbde00eef789f682df972ae71b44449"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1LLVMUtil.html#a5cbde00eef789f682df972ae71b44449">ArgInDeadFunction</a> (const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *val)</td></tr>
|
|
154
|
+
<tr class="memdesc:a5cbde00eef789f682df972ae71b44449"><td class="mdescLeft"> </td><td class="mdescRight">whether this is an argument in dead function <a href="#a5cbde00eef789f682df972ae71b44449">More...</a><br /></td></tr>
|
|
155
|
+
<tr class="separator:a5cbde00eef789f682df972ae71b44449"><td class="memSeparator" colspan="2"> </td></tr>
|
|
156
|
+
<tr><td colspan="2"><div class="groupHeader"></div></td></tr>
|
|
157
|
+
<tr class="memitem:a17cce1a11e1bfc342a9e3e79fe35deef"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1LLVMUtil.html#a17cce1a11e1bfc342a9e3e79fe35deef">isNoCallerFunction</a> (const <a class="el" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *fun)</td></tr>
|
|
158
|
+
<tr class="memdesc:a17cce1a11e1bfc342a9e3e79fe35deef"><td class="mdescLeft"> </td><td class="mdescRight">Function does not have any possible caller in the call graph. <a href="#a17cce1a11e1bfc342a9e3e79fe35deef">More...</a><br /></td></tr>
|
|
159
|
+
<tr class="separator:a17cce1a11e1bfc342a9e3e79fe35deef"><td class="memSeparator" colspan="2"> </td></tr>
|
|
160
|
+
<tr class="memitem:ab34319e843527c98c1b34ce23ecb2d49"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1LLVMUtil.html#ab34319e843527c98c1b34ce23ecb2d49">ArgInNoCallerFunction</a> (const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *val)</td></tr>
|
|
161
|
+
<tr class="memdesc:ab34319e843527c98c1b34ce23ecb2d49"><td class="mdescLeft"> </td><td class="mdescRight">Return true if the argument in a function does not have a caller. <a href="#ab34319e843527c98c1b34ce23ecb2d49">More...</a><br /></td></tr>
|
|
162
|
+
<tr class="separator:ab34319e843527c98c1b34ce23ecb2d49"><td class="memSeparator" colspan="2"> </td></tr>
|
|
163
|
+
<tr><td colspan="2"><div class="groupHeader"></div></td></tr>
|
|
164
|
+
<tr class="memitem:ab5fc50624b5fe83b676b14bec4b99685"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1LLVMUtil.html#ab5fc50624b5fe83b676b14bec4b99685">isGepConstantExpr</a> (const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *val)</td></tr>
|
|
165
|
+
<tr class="memdesc:ab5fc50624b5fe83b676b14bec4b99685"><td class="mdescLeft"> </td><td class="mdescRight">Return corresponding constant expression, otherwise return nullptr. <a href="#ab5fc50624b5fe83b676b14bec4b99685">More...</a><br /></td></tr>
|
|
166
|
+
<tr class="separator:ab5fc50624b5fe83b676b14bec4b99685"><td class="memSeparator" colspan="2"> </td></tr>
|
|
167
|
+
<tr class="memitem:adfa4a4e6d13004d14137d9168bd32463"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1LLVMUtil.html#adfa4a4e6d13004d14137d9168bd32463">isInt2PtrConstantExpr</a> (const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *val)</td></tr>
|
|
168
|
+
<tr class="separator:adfa4a4e6d13004d14137d9168bd32463"><td class="memSeparator" colspan="2"> </td></tr>
|
|
169
|
+
<tr class="memitem:a2834d135a2385efff783e6e22d2eff1f"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1LLVMUtil.html#a2834d135a2385efff783e6e22d2eff1f">isPtr2IntConstantExpr</a> (const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *val)</td></tr>
|
|
170
|
+
<tr class="separator:a2834d135a2385efff783e6e22d2eff1f"><td class="memSeparator" colspan="2"> </td></tr>
|
|
171
|
+
<tr class="memitem:af983b0e1fbd371d8672e8f03f63084fc"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1LLVMUtil.html#af983b0e1fbd371d8672e8f03f63084fc">isCastConstantExpr</a> (const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *val)</td></tr>
|
|
172
|
+
<tr class="separator:af983b0e1fbd371d8672e8f03f63084fc"><td class="memSeparator" colspan="2"> </td></tr>
|
|
173
|
+
<tr class="memitem:ae59b0dc7f29dbd2018e819f77465f66e"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1LLVMUtil.html#ae59b0dc7f29dbd2018e819f77465f66e">isSelectConstantExpr</a> (const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *val)</td></tr>
|
|
174
|
+
<tr class="separator:ae59b0dc7f29dbd2018e819f77465f66e"><td class="memSeparator" colspan="2"> </td></tr>
|
|
175
|
+
<tr class="memitem:a946a2b51b848c45c6c52f03581ee05b8"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1LLVMUtil.html#a946a2b51b848c45c6c52f03581ee05b8">isTruncConstantExpr</a> (const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *val)</td></tr>
|
|
176
|
+
<tr class="separator:a946a2b51b848c45c6c52f03581ee05b8"><td class="memSeparator" colspan="2"> </td></tr>
|
|
177
|
+
<tr class="memitem:aa0b3e34188f721ff7145e47cb607c79a"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1LLVMUtil.html#aa0b3e34188f721ff7145e47cb607c79a">isCmpConstantExpr</a> (const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *val)</td></tr>
|
|
178
|
+
<tr class="separator:aa0b3e34188f721ff7145e47cb607c79a"><td class="memSeparator" colspan="2"> </td></tr>
|
|
179
|
+
<tr class="memitem:a35b36394af726c679fe2c1b6051db7c4"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1LLVMUtil.html#a35b36394af726c679fe2c1b6051db7c4">isBinaryConstantExpr</a> (const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *val)</td></tr>
|
|
180
|
+
<tr class="separator:a35b36394af726c679fe2c1b6051db7c4"><td class="memSeparator" colspan="2"> </td></tr>
|
|
181
|
+
<tr class="memitem:a215cc9fd716798bbb7f96f5b64e01349"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1LLVMUtil.html#a215cc9fd716798bbb7f96f5b64e01349">isUnaryConstantExpr</a> (const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *val)</td></tr>
|
|
182
|
+
<tr class="separator:a215cc9fd716798bbb7f96f5b64e01349"><td class="memSeparator" colspan="2"> </td></tr>
|
|
183
|
+
<tr><td colspan="2"><div class="groupHeader"></div></td></tr>
|
|
184
|
+
<tr class="memitem:a09683d4d88a50fa621809c734465f94d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1LLVMUtil.html#a09683d4d88a50fa621809c734465f94d">getTypeSizeInBytes</a> (const <a class="el" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *type)</td></tr>
|
|
185
|
+
<tr class="memdesc:a09683d4d88a50fa621809c734465f94d"><td class="mdescLeft"> </td><td class="mdescRight">Helper method to get the size of the type from target data layout. <a href="#a09683d4d88a50fa621809c734465f94d">More...</a><br /></td></tr>
|
|
186
|
+
<tr class="separator:a09683d4d88a50fa621809c734465f94d"><td class="memSeparator" colspan="2"> </td></tr>
|
|
187
|
+
<tr class="memitem:a2b5fdf455c5dd40c0baa60185e5e41c6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1LLVMUtil.html#a2b5fdf455c5dd40c0baa60185e5e41c6">getTypeSizeInBytes</a> (const <a class="el" href="namespaceSVF.html#a2bf58575ac7d068e0f1a4cf953b9e6cb">StructType</a> *sty, <a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> field_index)</td></tr>
|
|
188
|
+
<tr class="separator:a2b5fdf455c5dd40c0baa60185e5e41c6"><td class="memSeparator" colspan="2"> </td></tr>
|
|
189
|
+
</table>
|
|
190
|
+
<h2 class="groupheader">Function Documentation</h2>
|
|
191
|
+
<a id="a5cbde00eef789f682df972ae71b44449"></a>
|
|
192
|
+
<h2 class="memtitle"><span class="permalink"><a href="#a5cbde00eef789f682df972ae71b44449">◆ </a></span>ArgInDeadFunction()</h2>
|
|
193
|
+
|
|
194
|
+
<div class="memitem">
|
|
195
|
+
<div class="memproto">
|
|
196
|
+
<table class="mlabels">
|
|
197
|
+
<tr>
|
|
198
|
+
<td class="mlabels-left">
|
|
199
|
+
<table class="memname">
|
|
200
|
+
<tr>
|
|
201
|
+
<td class="memname">bool SVF::LLVMUtil::ArgInDeadFunction </td>
|
|
202
|
+
<td>(</td>
|
|
203
|
+
<td class="paramtype">const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> * </td>
|
|
204
|
+
<td class="paramname"><em>val</em></td><td>)</td>
|
|
205
|
+
<td></td>
|
|
206
|
+
</tr>
|
|
207
|
+
</table>
|
|
208
|
+
</td>
|
|
209
|
+
<td class="mlabels-right">
|
|
210
|
+
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
|
|
211
|
+
</tr>
|
|
212
|
+
</table>
|
|
213
|
+
</div><div class="memdoc">
|
|
214
|
+
|
|
215
|
+
<p>whether this is an argument in dead function </p>
|
|
216
|
+
|
|
217
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00124">124</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
218
|
+
<div class="fragment"><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> {</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keywordflow">return</span> SVFUtil::isa<Argument>(val)</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  && <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ab775c1aeb5a4e2d18a96c6785d71cb41">isDeadFunction</a>(SVFUtil::cast<Argument>(val)->getParent());</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> }</div><div class="ttc" id="namespaceSVF_1_1LLVMUtil_html_ab775c1aeb5a4e2d18a96c6785d71cb41"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ab775c1aeb5a4e2d18a96c6785d71cb41">SVF::LLVMUtil::isDeadFunction</a></div><div class="ttdeci">bool isDeadFunction(const Function *fun)</div><div class="ttdoc">whether this is a function without any possible caller? </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00160">LLVMUtil.cpp:160</a></div></div>
|
|
219
|
+
</div><!-- fragment -->
|
|
220
|
+
</div>
|
|
221
|
+
</div>
|
|
222
|
+
<a id="ab34319e843527c98c1b34ce23ecb2d49"></a>
|
|
223
|
+
<h2 class="memtitle"><span class="permalink"><a href="#ab34319e843527c98c1b34ce23ecb2d49">◆ </a></span>ArgInNoCallerFunction()</h2>
|
|
224
|
+
|
|
225
|
+
<div class="memitem">
|
|
226
|
+
<div class="memproto">
|
|
227
|
+
<table class="mlabels">
|
|
228
|
+
<tr>
|
|
229
|
+
<td class="mlabels-left">
|
|
230
|
+
<table class="memname">
|
|
231
|
+
<tr>
|
|
232
|
+
<td class="memname">bool SVF::LLVMUtil::ArgInNoCallerFunction </td>
|
|
233
|
+
<td>(</td>
|
|
234
|
+
<td class="paramtype">const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> * </td>
|
|
235
|
+
<td class="paramname"><em>val</em></td><td>)</td>
|
|
236
|
+
<td></td>
|
|
237
|
+
</tr>
|
|
238
|
+
</table>
|
|
239
|
+
</td>
|
|
240
|
+
<td class="mlabels-right">
|
|
241
|
+
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
|
|
242
|
+
</tr>
|
|
243
|
+
</table>
|
|
244
|
+
</div><div class="memdoc">
|
|
245
|
+
|
|
246
|
+
<p>Return true if the argument in a function does not have a caller. </p>
|
|
247
|
+
|
|
248
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00152">152</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
249
|
+
<div class="fragment"><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> {</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="keywordflow">return</span> SVFUtil::isa<Argument>(val)</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  && <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a17cce1a11e1bfc342a9e3e79fe35deef">isNoCallerFunction</a>(SVFUtil::cast<Argument>(val)->getParent());</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> }</div><div class="ttc" id="namespaceSVF_1_1LLVMUtil_html_a17cce1a11e1bfc342a9e3e79fe35deef"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a17cce1a11e1bfc342a9e3e79fe35deef">SVF::LLVMUtil::isNoCallerFunction</a></div><div class="ttdeci">bool isNoCallerFunction(const Function *fun)</div><div class="ttdoc">Function does not have any possible caller in the call graph. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00146">LLVMUtil.h:146</a></div></div>
|
|
250
|
+
</div><!-- fragment -->
|
|
251
|
+
</div>
|
|
252
|
+
</div>
|
|
253
|
+
<a id="adad59a953dd81e213db71babbbc9df2f"></a>
|
|
254
|
+
<h2 class="memtitle"><span class="permalink"><a href="#adad59a953dd81e213db71babbbc9df2f">◆ </a></span>ArgInProgEntryFunction()</h2>
|
|
255
|
+
|
|
256
|
+
<div class="memitem">
|
|
257
|
+
<div class="memproto">
|
|
258
|
+
<table class="mlabels">
|
|
259
|
+
<tr>
|
|
260
|
+
<td class="mlabels-left">
|
|
261
|
+
<table class="memname">
|
|
262
|
+
<tr>
|
|
263
|
+
<td class="memname">bool SVF::LLVMUtil::ArgInProgEntryFunction </td>
|
|
264
|
+
<td>(</td>
|
|
265
|
+
<td class="paramtype">const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> * </td>
|
|
266
|
+
<td class="paramname"><em>val</em></td><td>)</td>
|
|
267
|
+
<td></td>
|
|
268
|
+
</tr>
|
|
269
|
+
</table>
|
|
270
|
+
</td>
|
|
271
|
+
<td class="mlabels-right">
|
|
272
|
+
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
|
|
273
|
+
</tr>
|
|
274
|
+
</table>
|
|
275
|
+
</div><div class="memdoc">
|
|
276
|
+
|
|
277
|
+
<p>Return true if this is an argument of a program entry function (e.g. main) </p>
|
|
278
|
+
|
|
279
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00132">132</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
280
|
+
<div class="fragment"><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> {</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="keywordflow">return</span> SVFUtil::isa<Argument>(val)</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  && <a class="code" href="namespaceSVF_1_1SVFUtil.html#a2c97c2b79b795465490512e267a9309b">SVFUtil::isProgEntryFunction</a>(SVFUtil::cast<Argument>(val)->getParent());</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> }</div><div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a2c97c2b79b795465490512e267a9309b"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a2c97c2b79b795465490512e267a9309b">SVF::SVFUtil::isProgEntryFunction</a></div><div class="ttdeci">bool isProgEntryFunction(const SVFFunction *fun)</div><div class="ttdoc">Program entry function e.g. main. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00417">SVFUtil.h:417</a></div></div>
|
|
281
|
+
</div><!-- fragment -->
|
|
282
|
+
</div>
|
|
283
|
+
</div>
|
|
284
|
+
<a id="a651b6a1cf3665277d2241220bb145aed"></a>
|
|
285
|
+
<h2 class="memtitle"><span class="permalink"><a href="#a651b6a1cf3665277d2241220bb145aed">◆ </a></span>functionDoesNotRet()</h2>
|
|
286
|
+
|
|
287
|
+
<div class="memitem">
|
|
288
|
+
<div class="memproto">
|
|
289
|
+
<table class="memname">
|
|
290
|
+
<tr>
|
|
291
|
+
<td class="memname">bool SVF::LLVMUtil::functionDoesNotRet </td>
|
|
292
|
+
<td>(</td>
|
|
293
|
+
<td class="paramtype">const <a class="el" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> * </td>
|
|
294
|
+
<td class="paramname"><em>fun</em></td><td>)</td>
|
|
295
|
+
<td></td>
|
|
296
|
+
</tr>
|
|
297
|
+
</table>
|
|
298
|
+
</div><div class="memdoc">
|
|
299
|
+
|
|
300
|
+
<p>Return true if the function has a return instruction reachable from function entry. </p>
|
|
301
|
+
<p>Return true if the function has a return instruction reachable from function entry </p>
|
|
302
|
+
|
|
303
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00123">123</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
304
|
+
<div class="fragment"><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> {</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> </div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  std::vector<const BasicBlock*> bbVec;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<const BasicBlock*></a> visited;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  bbVec.push_back(&fun->getEntryBlock());</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keywordflow">while</span>(!bbVec.empty())</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  {</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb = bbVec.back();</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  bbVec.pop_back();</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keywordflow">for</span> (BasicBlock::const_iterator it = bb->begin(), eit = bb->end();</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  it != eit; ++it)</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  {</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keywordflow">if</span>(SVFUtil::isa<ReturnInst>(*it))</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  }</div><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>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">succ_const_iterator</a> sit = succ_begin(bb), esit = succ_end(bb);</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  sit != esit; ++sit)</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  {</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* succbb = (*sit);</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keywordflow">if</span>(visited.find(succbb)==visited.end())</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  visited.insert(succbb);</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  bbVec.push_back(succbb);</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  }</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  }</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> <span class="comment">// if(isProgEntryFunction(fun)==false) {</span></div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> <span class="comment">// writeWrnMsg(fun->getName().str() + " does not have return");</span></div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> <span class="comment">// }</span></div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</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#l00071">BasicTypes.h:71</a></div></div>
|
|
305
|
+
<div class="ttc" id="namespaceSVF_html_a3436a988bf80c021cd8022fb445b66d5"><div class="ttname"><a href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">SVF::succ_const_iterator</a></div><div class="ttdeci">llvm::succ_const_iterator succ_const_iterator</div><div class="ttdoc">LLVM Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00119">BasicTypes.h:119</a></div></div>
|
|
306
|
+
<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#l00104">SVFBasicTypes.h:104</a></div></div>
|
|
307
|
+
</div><!-- fragment -->
|
|
308
|
+
</div>
|
|
309
|
+
</div>
|
|
310
|
+
<a id="ae617611b584e3d899984c376a6e91987"></a>
|
|
311
|
+
<h2 class="memtitle"><span class="permalink"><a href="#ae617611b584e3d899984c376a6e91987">◆ </a></span>getBBPredecessorNum()</h2>
|
|
312
|
+
|
|
313
|
+
<div class="memitem">
|
|
314
|
+
<div class="memproto">
|
|
315
|
+
<table class="memname">
|
|
316
|
+
<tr>
|
|
317
|
+
<td class="memname"><a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> SVF::LLVMUtil::getBBPredecessorNum </td>
|
|
318
|
+
<td>(</td>
|
|
319
|
+
<td class="paramtype">const <a class="el" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> * </td>
|
|
320
|
+
<td class="paramname"><em>BB</em></td><td>)</td>
|
|
321
|
+
<td></td>
|
|
322
|
+
</tr>
|
|
323
|
+
</table>
|
|
324
|
+
</div><div class="memdoc">
|
|
325
|
+
|
|
326
|
+
<p>Get num of BB's predecessors. </p>
|
|
327
|
+
<p>Get the num of BB's predecessors </p>
|
|
328
|
+
|
|
329
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00397">397</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
330
|
+
<div class="fragment"><div class="line"><a name="l00398"></a><span class="lineno"> 398</span> {</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> num = 0;</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  <span class="keywordflow">for</span> (<a class="code" href="SVF-FE_2BasicTypes_8h.html#a45136b941670180e9ba248bb4e52f09f">const_pred_iterator</a> it = pred_begin(BB), et = pred_end(BB); it != et; ++it)</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  num++;</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  <span class="keywordflow">return</span> num;</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</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#l00084">SVFBasicTypes.h:84</a></div></div>
|
|
331
|
+
<div class="ttc" id="SVF-FE_2BasicTypes_8h_html_a45136b941670180e9ba248bb4e52f09f"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#a45136b941670180e9ba248bb4e52f09f">const_pred_iterator</a></div><div class="ttdeci">llvm::const_pred_iterator const_pred_iterator</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00114">BasicTypes.h:114</a></div></div>
|
|
332
|
+
</div><!-- fragment -->
|
|
333
|
+
</div>
|
|
334
|
+
</div>
|
|
335
|
+
<a id="a87277ee77eceaf80922d54d46103c509"></a>
|
|
336
|
+
<h2 class="memtitle"><span class="permalink"><a href="#a87277ee77eceaf80922d54d46103c509">◆ </a></span>getBBPredecessorPos()</h2>
|
|
337
|
+
|
|
338
|
+
<div class="memitem">
|
|
339
|
+
<div class="memproto">
|
|
340
|
+
<table class="memname">
|
|
341
|
+
<tr>
|
|
342
|
+
<td class="memname"><a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> SVF::LLVMUtil::getBBPredecessorPos </td>
|
|
343
|
+
<td>(</td>
|
|
344
|
+
<td class="paramtype">const <a class="el" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> * </td>
|
|
345
|
+
<td class="paramname"><em>bb</em>, </td>
|
|
346
|
+
</tr>
|
|
347
|
+
<tr>
|
|
348
|
+
<td class="paramkey"></td>
|
|
349
|
+
<td></td>
|
|
350
|
+
<td class="paramtype">const <a class="el" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> * </td>
|
|
351
|
+
<td class="paramname"><em>succbb</em> </td>
|
|
352
|
+
</tr>
|
|
353
|
+
<tr>
|
|
354
|
+
<td></td>
|
|
355
|
+
<td>)</td>
|
|
356
|
+
<td></td><td></td>
|
|
357
|
+
</tr>
|
|
358
|
+
</table>
|
|
359
|
+
</div><div class="memdoc">
|
|
360
|
+
|
|
361
|
+
<p>Get basic block predecessor positin. </p>
|
|
362
|
+
<p>Return a position index from current bb to it successor bb </p>
|
|
363
|
+
|
|
364
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00374">374</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
365
|
+
<div class="fragment"><div class="line"><a name="l00375"></a><span class="lineno"> 375</span> {</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> pos = 0;</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  <span class="keywordflow">for</span> (<a class="code" href="SVF-FE_2BasicTypes_8h.html#a45136b941670180e9ba248bb4e52f09f">const_pred_iterator</a> it = pred_begin(succbb), et = pred_end(succbb); it != et; ++it, ++pos)</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  {</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  <span class="keywordflow">if</span>(*it==bb)</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  <span class="keywordflow">return</span> pos;</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  }</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  <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="l00383"></a><span class="lineno"> 383</span>  <span class="keywordflow">return</span> pos;</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</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>
|
|
366
|
+
<div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00084">SVFBasicTypes.h:84</a></div></div>
|
|
367
|
+
<div class="ttc" id="SVF-FE_2BasicTypes_8h_html_a45136b941670180e9ba248bb4e52f09f"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#a45136b941670180e9ba248bb4e52f09f">const_pred_iterator</a></div><div class="ttdeci">llvm::const_pred_iterator const_pred_iterator</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00114">BasicTypes.h:114</a></div></div>
|
|
368
|
+
</div><!-- fragment -->
|
|
369
|
+
</div>
|
|
370
|
+
</div>
|
|
371
|
+
<a id="a6d9205380948e1bd00708581a64301e1"></a>
|
|
372
|
+
<h2 class="memtitle"><span class="permalink"><a href="#a6d9205380948e1bd00708581a64301e1">◆ </a></span>getBBSuccessorNum()</h2>
|
|
373
|
+
|
|
374
|
+
<div class="memitem">
|
|
375
|
+
<div class="memproto">
|
|
376
|
+
<table class="memname">
|
|
377
|
+
<tr>
|
|
378
|
+
<td class="memname"><a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> SVF::LLVMUtil::getBBSuccessorNum </td>
|
|
379
|
+
<td>(</td>
|
|
380
|
+
<td class="paramtype">const <a class="el" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> * </td>
|
|
381
|
+
<td class="paramname"><em>BB</em></td><td>)</td>
|
|
382
|
+
<td></td>
|
|
383
|
+
</tr>
|
|
384
|
+
</table>
|
|
385
|
+
</div><div class="memdoc">
|
|
386
|
+
|
|
387
|
+
<p>Get num of BB's successors. </p>
|
|
388
|
+
<p>Get the num of BB's successors </p>
|
|
389
|
+
|
|
390
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00389">389</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
391
|
+
<div class="fragment"><div class="line"><a name="l00390"></a><span class="lineno"> 390</span> {</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  <span class="keywordflow">return</span> BB->getTerminator()->getNumSuccessors();</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span> }</div></div><!-- fragment -->
|
|
392
|
+
</div>
|
|
393
|
+
</div>
|
|
394
|
+
<a id="a5d911cede2f514e87b030e2a93919515"></a>
|
|
395
|
+
<h2 class="memtitle"><span class="permalink"><a href="#a5d911cede2f514e87b030e2a93919515">◆ </a></span>getBBSuccessorPos()</h2>
|
|
396
|
+
|
|
397
|
+
<div class="memitem">
|
|
398
|
+
<div class="memproto">
|
|
399
|
+
<table class="memname">
|
|
400
|
+
<tr>
|
|
401
|
+
<td class="memname"><a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> SVF::LLVMUtil::getBBSuccessorPos </td>
|
|
402
|
+
<td>(</td>
|
|
403
|
+
<td class="paramtype">const <a class="el" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> * </td>
|
|
404
|
+
<td class="paramname"><em>BB</em>, </td>
|
|
405
|
+
</tr>
|
|
406
|
+
<tr>
|
|
407
|
+
<td class="paramkey"></td>
|
|
408
|
+
<td></td>
|
|
409
|
+
<td class="paramtype">const <a class="el" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> * </td>
|
|
410
|
+
<td class="paramname"><em>Succ</em> </td>
|
|
411
|
+
</tr>
|
|
412
|
+
<tr>
|
|
413
|
+
<td></td>
|
|
414
|
+
<td>)</td>
|
|
415
|
+
<td></td><td></td>
|
|
416
|
+
</tr>
|
|
417
|
+
</table>
|
|
418
|
+
</div><div class="memdoc">
|
|
419
|
+
|
|
420
|
+
<p>Get basic block successor position. </p>
|
|
421
|
+
<p>Get position of a successor basic block </p>
|
|
422
|
+
|
|
423
|
+
<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>
|
|
424
|
+
<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> i = 0;</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</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="l00361"></a><span class="lineno"> 361</span>  {</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  <span class="keywordflow">if</span> (SuccBB == Succ)</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  <span class="keywordflow">return</span> i;</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  i++;</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  }</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  <a class="code" href="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="l00367"></a><span class="lineno"> 367</span>  <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</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#l00071">BasicTypes.h:71</a></div></div>
|
|
425
|
+
<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>
|
|
426
|
+
<div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00084">SVFBasicTypes.h:84</a></div></div>
|
|
427
|
+
</div><!-- fragment -->
|
|
428
|
+
</div>
|
|
429
|
+
</div>
|
|
430
|
+
<a id="a151fd7fb2b2ebe72af7c417defbb4f4d"></a>
|
|
431
|
+
<h2 class="memtitle"><span class="permalink"><a href="#a151fd7fb2b2ebe72af7c417defbb4f4d">◆ </a></span>getDataLayout()</h2>
|
|
432
|
+
|
|
433
|
+
<div class="memitem">
|
|
434
|
+
<div class="memproto">
|
|
435
|
+
<table class="mlabels">
|
|
436
|
+
<tr>
|
|
437
|
+
<td class="mlabels-left">
|
|
438
|
+
<table class="memname">
|
|
439
|
+
<tr>
|
|
440
|
+
<td class="memname">static <a class="el" href="SVF-FE_2BasicTypes_8h.html#aa81a27b9c6b2a354437417162220fb14">DataLayout</a>* SVF::LLVMUtil::getDataLayout </td>
|
|
441
|
+
<td>(</td>
|
|
442
|
+
<td class="paramtype"><a class="el" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a> * </td>
|
|
443
|
+
<td class="paramname"><em>mod</em></td><td>)</td>
|
|
444
|
+
<td></td>
|
|
445
|
+
</tr>
|
|
446
|
+
</table>
|
|
447
|
+
</td>
|
|
448
|
+
<td class="mlabels-right">
|
|
449
|
+
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
|
|
450
|
+
</tr>
|
|
451
|
+
</table>
|
|
452
|
+
</div><div class="memdoc">
|
|
453
|
+
|
|
454
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00280">280</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
455
|
+
<div class="fragment"><div class="line"><a name="l00281"></a><span class="lineno"> 281</span> {</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  <span class="keyword">static</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#aa81a27b9c6b2a354437417162220fb14">DataLayout</a> *dl = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  <span class="keywordflow">if</span> (dl == <span class="keyword">nullptr</span>) dl = <span class="keyword">new</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#aa81a27b9c6b2a354437417162220fb14">DataLayout</a>(mod);</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  <span class="keywordflow">return</span> dl;</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span> }</div><div class="ttc" id="SVF-FE_2BasicTypes_8h_html_aa81a27b9c6b2a354437417162220fb14"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#aa81a27b9c6b2a354437417162220fb14">DataLayout</a></div><div class="ttdeci">llvm::DataLayout DataLayout</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00051">BasicTypes.h:51</a></div></div>
|
|
456
|
+
</div><!-- fragment -->
|
|
457
|
+
</div>
|
|
458
|
+
</div>
|
|
459
|
+
<a id="aa0e78f2e1c9c04aee478a7ecbf354800"></a>
|
|
460
|
+
<h2 class="memtitle"><span class="permalink"><a href="#aa0e78f2e1c9c04aee478a7ecbf354800">◆ </a></span>getFunExitBB()</h2>
|
|
461
|
+
|
|
462
|
+
<div class="memitem">
|
|
463
|
+
<div class="memproto">
|
|
464
|
+
<table class="mlabels">
|
|
465
|
+
<tr>
|
|
466
|
+
<td class="mlabels-left">
|
|
467
|
+
<table class="memname">
|
|
468
|
+
<tr>
|
|
469
|
+
<td class="memname">const <a class="el" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* SVF::LLVMUtil::getFunExitBB </td>
|
|
470
|
+
<td>(</td>
|
|
471
|
+
<td class="paramtype">const <a class="el" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> * </td>
|
|
472
|
+
<td class="paramname"><em>fun</em></td><td>)</td>
|
|
473
|
+
<td></td>
|
|
474
|
+
</tr>
|
|
475
|
+
</table>
|
|
476
|
+
</td>
|
|
477
|
+
<td class="mlabels-right">
|
|
478
|
+
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
|
|
479
|
+
</tr>
|
|
480
|
+
</table>
|
|
481
|
+
</div><div class="memdoc">
|
|
482
|
+
<p>Get function exit basic block FIXME: this back() here is only valid when UnifyFunctionExitNodes pass is invoked </p>
|
|
483
|
+
|
|
484
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00167">167</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
485
|
+
<div class="fragment"><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> {</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="keywordflow">return</span> &fun->back();</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> }</div></div><!-- fragment -->
|
|
486
|
+
</div>
|
|
487
|
+
</div>
|
|
488
|
+
<a id="a6e741146121afbb7114aadf3146d403a"></a>
|
|
489
|
+
<h2 class="memtitle"><span class="permalink"><a href="#a6e741146121afbb7114aadf3146d403a">◆ </a></span>getFunReachableBBs()</h2>
|
|
490
|
+
|
|
491
|
+
<div class="memitem">
|
|
492
|
+
<div class="memproto">
|
|
493
|
+
<table class="memname">
|
|
494
|
+
<tr>
|
|
495
|
+
<td class="memname">void SVF::LLVMUtil::getFunReachableBBs </td>
|
|
496
|
+
<td>(</td>
|
|
497
|
+
<td class="paramtype">const <a class="el" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> * </td>
|
|
498
|
+
<td class="paramname"><em>fun</em>, </td>
|
|
499
|
+
</tr>
|
|
500
|
+
<tr>
|
|
501
|
+
<td class="paramkey"></td>
|
|
502
|
+
<td></td>
|
|
503
|
+
<td class="paramtype"><a class="el" href="namespaceSVF.html#aecbb42b8e9d17fa0189c50dda9fd5fdd">DominatorTree</a> * </td>
|
|
504
|
+
<td class="paramname"><em>dt</em>, </td>
|
|
505
|
+
</tr>
|
|
506
|
+
<tr>
|
|
507
|
+
<td class="paramkey"></td>
|
|
508
|
+
<td></td>
|
|
509
|
+
<td class="paramtype">std::vector< const <a class="el" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *> & </td>
|
|
510
|
+
<td class="paramname"><em>reachableBBs</em> </td>
|
|
511
|
+
</tr>
|
|
512
|
+
<tr>
|
|
513
|
+
<td></td>
|
|
514
|
+
<td>)</td>
|
|
515
|
+
<td></td><td></td>
|
|
516
|
+
</tr>
|
|
517
|
+
</table>
|
|
518
|
+
</div><div class="memdoc">
|
|
519
|
+
|
|
520
|
+
<p>Get reachable basic block from function entry. </p>
|
|
521
|
+
<p>Return reachable bbs from function entry </p>
|
|
522
|
+
|
|
523
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00094">94</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
524
|
+
<div class="fragment"><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> {</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<const BasicBlock*></a> visited;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  std::vector<const BasicBlock*> bbVec;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  bbVec.push_back(&fun->getEntryBlock());</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keywordflow">while</span>(!bbVec.empty())</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  {</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb = bbVec.back();</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  bbVec.pop_back();</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  reachableBBs.push_back(bb);</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF.html#a827d09974dc7bf0849f96823cc2fee89">DomTreeNode</a> *dtNode = dt->getNode(const_cast<BasicBlock*>(bb)))</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  {</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keywordflow">for</span> (DomTreeNode::iterator DI = dtNode->begin(), DE = dtNode->end();</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  DI != DE; ++DI)</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  {</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* succbb = (*DI)->getBlock();</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keywordflow">if</span>(visited.find(succbb)==visited.end())</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  visited.insert(succbb);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  bbVec.push_back(succbb);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  }</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  }</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  }</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> }</div><div class="ttc" id="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#l00071">BasicTypes.h:71</a></div></div>
|
|
525
|
+
<div class="ttc" id="namespaceSVF_html_a827d09974dc7bf0849f96823cc2fee89"><div class="ttname"><a href="namespaceSVF.html#a827d09974dc7bf0849f96823cc2fee89">SVF::DomTreeNode</a></div><div class="ttdeci">llvm::DomTreeNode DomTreeNode</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00112">BasicTypes.h:112</a></div></div>
|
|
526
|
+
<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#l00104">SVFBasicTypes.h:104</a></div></div>
|
|
527
|
+
</div><!-- fragment -->
|
|
528
|
+
</div>
|
|
529
|
+
</div>
|
|
530
|
+
<a id="a752d53b6b65d892d0e579aafe70083b4"></a>
|
|
531
|
+
<h2 class="memtitle"><span class="permalink"><a href="#a752d53b6b65d892d0e579aafe70083b4">◆ </a></span>getNextInsts()</h2>
|
|
532
|
+
|
|
533
|
+
<div class="memitem">
|
|
534
|
+
<div class="memproto">
|
|
535
|
+
<table class="memname">
|
|
536
|
+
<tr>
|
|
537
|
+
<td class="memname">void SVF::LLVMUtil::getNextInsts </td>
|
|
538
|
+
<td>(</td>
|
|
539
|
+
<td class="paramtype">const <a class="el" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> * </td>
|
|
540
|
+
<td class="paramname"><em>curInst</em>, </td>
|
|
541
|
+
</tr>
|
|
542
|
+
<tr>
|
|
543
|
+
<td class="paramkey"></td>
|
|
544
|
+
<td></td>
|
|
545
|
+
<td class="paramtype">std::vector< const <a class="el" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *> & </td>
|
|
546
|
+
<td class="paramname"><em>instList</em> </td>
|
|
547
|
+
</tr>
|
|
548
|
+
<tr>
|
|
549
|
+
<td></td>
|
|
550
|
+
<td>)</td>
|
|
551
|
+
<td></td><td></td>
|
|
552
|
+
</tr>
|
|
553
|
+
</table>
|
|
554
|
+
</div><div class="memdoc">
|
|
555
|
+
|
|
556
|
+
<p>Get the next instructions following control flow. </p>
|
|
557
|
+
|
|
558
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00250">250</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
559
|
+
<div class="fragment"><div class="line"><a name="l00251"></a><span class="lineno"> 251</span> {</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  <span class="keywordflow">if</span> (!curInst->isTerminator())</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  {</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* nextInst = curInst->getNextNode();</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#ab7f58caf27c30a1d414e06f60ca84d80">SVFUtil::isIntrinsicInst</a>(nextInst))</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a752d53b6b65d892d0e579aafe70083b4">getNextInsts</a>(nextInst, instList);</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  instList.push_back(nextInst);</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  }</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  {</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *BB = curInst->getParent();</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <span class="comment">// Visit all successors of BB in the CFG</span></div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">succ_const_iterator</a> it = succ_begin(BB), ie = succ_end(BB); it != ie; ++it)</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  {</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* nextInst = &((*it)->front());</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#ab7f58caf27c30a1d414e06f60ca84d80">SVFUtil::isIntrinsicInst</a>(nextInst))</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a752d53b6b65d892d0e579aafe70083b4">getNextInsts</a>(nextInst, instList);</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  instList.push_back(nextInst);</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  }</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  }</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span> }</div><div class="ttc" id="namespaceSVF_1_1SVFUtil_html_ab7f58caf27c30a1d414e06f60ca84d80"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#ab7f58caf27c30a1d414e06f60ca84d80">SVF::SVFUtil::isIntrinsicInst</a></div><div class="ttdeci">bool isIntrinsicInst(const Instruction *inst)</div><div class="ttdoc">Return true if it is an intrinsic instruction. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00181">SVFUtil.h:181</a></div></div>
|
|
560
|
+
<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#l00071">BasicTypes.h:71</a></div></div>
|
|
561
|
+
<div class="ttc" id="namespaceSVF_html_a3436a988bf80c021cd8022fb445b66d5"><div class="ttname"><a href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">SVF::succ_const_iterator</a></div><div class="ttdeci">llvm::succ_const_iterator succ_const_iterator</div><div class="ttdoc">LLVM Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00119">BasicTypes.h:119</a></div></div>
|
|
562
|
+
<div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00073">BasicTypes.h:73</a></div></div>
|
|
563
|
+
<div class="ttc" id="namespaceSVF_1_1LLVMUtil_html_a752d53b6b65d892d0e579aafe70083b4"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a752d53b6b65d892d0e579aafe70083b4">SVF::LLVMUtil::getNextInsts</a></div><div class="ttdeci">void getNextInsts(const Instruction *curInst, std::vector< const Instruction *> &instList)</div><div class="ttdoc">Get the next instructions following control flow. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00250">LLVMUtil.cpp:250</a></div></div>
|
|
564
|
+
</div><!-- fragment -->
|
|
565
|
+
</div>
|
|
566
|
+
</div>
|
|
567
|
+
<a id="af904cd58192dccb85572cfa95f5ea670"></a>
|
|
568
|
+
<h2 class="memtitle"><span class="permalink"><a href="#af904cd58192dccb85572cfa95f5ea670">◆ </a></span>getPrevInsts()</h2>
|
|
569
|
+
|
|
570
|
+
<div class="memitem">
|
|
571
|
+
<div class="memproto">
|
|
572
|
+
<table class="memname">
|
|
573
|
+
<tr>
|
|
574
|
+
<td class="memname">void SVF::LLVMUtil::getPrevInsts </td>
|
|
575
|
+
<td>(</td>
|
|
576
|
+
<td class="paramtype">const <a class="el" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> * </td>
|
|
577
|
+
<td class="paramname"><em>curInst</em>, </td>
|
|
578
|
+
</tr>
|
|
579
|
+
<tr>
|
|
580
|
+
<td class="paramkey"></td>
|
|
581
|
+
<td></td>
|
|
582
|
+
<td class="paramtype">std::vector< const <a class="el" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *> & </td>
|
|
583
|
+
<td class="paramname"><em>instList</em> </td>
|
|
584
|
+
</tr>
|
|
585
|
+
<tr>
|
|
586
|
+
<td></td>
|
|
587
|
+
<td>)</td>
|
|
588
|
+
<td></td><td></td>
|
|
589
|
+
</tr>
|
|
590
|
+
</table>
|
|
591
|
+
</div><div class="memdoc">
|
|
592
|
+
|
|
593
|
+
<p>Get the previous instructions following control flow. </p>
|
|
594
|
+
|
|
595
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00277">277</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
596
|
+
<div class="fragment"><div class="line"><a name="l00278"></a><span class="lineno"> 278</span> {</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="keywordflow">if</span> (curInst != &(curInst->getParent()->front()))</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="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* prevInst = curInst->getPrevNode();</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#ab7f58caf27c30a1d414e06f60ca84d80">SVFUtil::isIntrinsicInst</a>(prevInst))</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  <a class="code" href="namespaceSVF_1_1LLVMUtil.html#af904cd58192dccb85572cfa95f5ea670">getPrevInsts</a>(prevInst, instList);</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  instList.push_back(prevInst);</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  }</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  {</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *BB = curInst->getParent();</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  <span class="comment">// Visit all successors of BB in the CFG</span></div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <span class="keywordflow">for</span> (<a class="code" href="SVF-FE_2BasicTypes_8h.html#a45136b941670180e9ba248bb4e52f09f">const_pred_iterator</a> it = pred_begin(BB), ie = pred_end(BB); it != ie; ++it)</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="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* prevInst = &((*it)->back());</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#ab7f58caf27c30a1d414e06f60ca84d80">SVFUtil::isIntrinsicInst</a>(prevInst))</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  <a class="code" href="namespaceSVF_1_1LLVMUtil.html#af904cd58192dccb85572cfa95f5ea670">getPrevInsts</a>(prevInst, instList);</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  instList.push_back(prevInst);</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> }</div><div class="ttc" id="namespaceSVF_1_1LLVMUtil_html_af904cd58192dccb85572cfa95f5ea670"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#af904cd58192dccb85572cfa95f5ea670">SVF::LLVMUtil::getPrevInsts</a></div><div class="ttdeci">void getPrevInsts(const Instruction *curInst, std::vector< const Instruction *> &instList)</div><div class="ttdoc">Get the previous instructions following control flow. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00277">LLVMUtil.cpp:277</a></div></div>
|
|
597
|
+
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_ab7f58caf27c30a1d414e06f60ca84d80"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#ab7f58caf27c30a1d414e06f60ca84d80">SVF::SVFUtil::isIntrinsicInst</a></div><div class="ttdeci">bool isIntrinsicInst(const Instruction *inst)</div><div class="ttdoc">Return true if it is an intrinsic instruction. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00181">SVFUtil.h:181</a></div></div>
|
|
598
|
+
<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#l00071">BasicTypes.h:71</a></div></div>
|
|
599
|
+
<div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00073">BasicTypes.h:73</a></div></div>
|
|
600
|
+
<div class="ttc" id="SVF-FE_2BasicTypes_8h_html_a45136b941670180e9ba248bb4e52f09f"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#a45136b941670180e9ba248bb4e52f09f">const_pred_iterator</a></div><div class="ttdeci">llvm::const_pred_iterator const_pred_iterator</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00114">BasicTypes.h:114</a></div></div>
|
|
601
|
+
</div><!-- fragment -->
|
|
602
|
+
</div>
|
|
603
|
+
</div>
|
|
604
|
+
<a id="abba4111230f6009bbf50518ee36a9870"></a>
|
|
605
|
+
<h2 class="memtitle"><span class="permalink"><a href="#abba4111230f6009bbf50518ee36a9870">◆ </a></span>getPtrElementType()</h2>
|
|
606
|
+
|
|
607
|
+
<div class="memitem">
|
|
608
|
+
<div class="memproto">
|
|
609
|
+
<table class="mlabels">
|
|
610
|
+
<tr>
|
|
611
|
+
<td class="mlabels-left">
|
|
612
|
+
<table class="memname">
|
|
613
|
+
<tr>
|
|
614
|
+
<td class="memname">static <a class="el" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* SVF::LLVMUtil::getPtrElementType </td>
|
|
615
|
+
<td>(</td>
|
|
616
|
+
<td class="paramtype">const <a class="el" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a> * </td>
|
|
617
|
+
<td class="paramname"><em>pty</em></td><td>)</td>
|
|
618
|
+
<td></td>
|
|
619
|
+
</tr>
|
|
620
|
+
</table>
|
|
621
|
+
</td>
|
|
622
|
+
<td class="mlabels-right">
|
|
623
|
+
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
|
|
624
|
+
</tr>
|
|
625
|
+
</table>
|
|
626
|
+
</div><div class="memdoc">
|
|
627
|
+
|
|
628
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00073">73</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
629
|
+
<div class="fragment"><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> {</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="preprocessor">#if (LLVM_VERSION_MAJOR < 14)</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keywordflow">return</span> pty->getElementType();</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(!pty->isOpaque() && <span class="stringliteral">"Opaque Pointer is used, please recompile the source adding '-Xclang -no-opaque-pointer'"</span>);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keywordflow">return</span> pty->getNonOpaquePointerElementType();</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</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>
|
|
630
|
+
</div><!-- fragment -->
|
|
631
|
+
</div>
|
|
632
|
+
</div>
|
|
633
|
+
<a id="a3e94ca73410d21c1a852123e44961ff9"></a>
|
|
634
|
+
<h2 class="memtitle"><span class="permalink"><a href="#a3e94ca73410d21c1a852123e44961ff9">◆ </a></span>getRefTypeOfHeapAllocOrStatic() <span class="overload">[1/2]</span></h2>
|
|
635
|
+
|
|
636
|
+
<div class="memitem">
|
|
637
|
+
<div class="memproto">
|
|
638
|
+
<table class="mlabels">
|
|
639
|
+
<tr>
|
|
640
|
+
<td class="mlabels-left">
|
|
641
|
+
<table class="memname">
|
|
642
|
+
<tr>
|
|
643
|
+
<td class="memname">const <a class="el" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>* SVF::LLVMUtil::getRefTypeOfHeapAllocOrStatic </td>
|
|
644
|
+
<td>(</td>
|
|
645
|
+
<td class="paramtype">const <a class="el" href="classSVF_1_1CallSite.html">CallSite</a> </td>
|
|
646
|
+
<td class="paramname"><em>cs</em></td><td>)</td>
|
|
647
|
+
<td></td>
|
|
648
|
+
</tr>
|
|
649
|
+
</table>
|
|
650
|
+
</td>
|
|
651
|
+
<td class="mlabels-right">
|
|
652
|
+
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
|
|
653
|
+
</tr>
|
|
654
|
+
</table>
|
|
655
|
+
</div><div class="memdoc">
|
|
656
|
+
|
|
657
|
+
<p>Get the reference type of heap/static object from an allocation site. </p>
|
|
658
|
+
|
|
659
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00085">85</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
660
|
+
<div class="fragment"><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> {</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a> *refType = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="comment">// Case 1: heap object held by *argument, we should get its element type.</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#aedfa6e9216c6c788c26aef1967689b76">SVFUtil::isHeapAllocExtCallViaArg</a>(cs))</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  {</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keywordtype">int</span> argPos = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a73215bac62f1340a58f6c7f2ba9b0e7b">SVFUtil::getHeapAllocHoldingArgPosition</a>(cs);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *arg = cs.getArgument(argPos);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a> *argType = SVFUtil::dyn_cast<PointerType>(arg->getType()))</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  refType = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a><<a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>>(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#abba4111230f6009bbf50518ee36a9870">getPtrElementType</a>(argType));</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  }</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="comment">// Case 2: heap/static object held by return value.</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  {</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>((<a class="code" href="namespaceSVF_1_1SVFUtil.html#ae62938f722543d6d7fc201b685be1abf">SVFUtil::isStaticExtCall</a>(cs) || <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab2064cb70c76f399ce115f2621adea35">SVFUtil::isHeapAllocExtCallViaRet</a>(cs))</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  && <span class="stringliteral">"Must be heap alloc via ret, or static allocation site"</span>);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  refType = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a><<a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>>(cs.getType());</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  }</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(refType && <span class="stringliteral">"Allocated object must be held by a pointer-typed value."</span>);</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordflow">return</span> refType;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</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>
|
|
661
|
+
<div class="ttc" id="namespaceSVF_html_aa962cc1d782cc46553251e96b64a754b"><div class="ttname"><a href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">SVF::PointerType</a></div><div class="ttdeci">llvm::PointerType PointerType</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00089">BasicTypes.h:89</a></div></div>
|
|
662
|
+
<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="SVFUtil_8h_source.html#l00502">SVFUtil.h:502</a></div></div>
|
|
663
|
+
<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="SVFUtil_8h_source.html#l00513">SVFUtil.h:513</a></div></div>
|
|
664
|
+
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_ae62938f722543d6d7fc201b685be1abf"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#ae62938f722543d6d7fc201b685be1abf">SVF::SVFUtil::isStaticExtCall</a></div><div class="ttdeci">bool isStaticExtCall(const CallSite cs)</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00571">SVFUtil.h:571</a></div></div>
|
|
665
|
+
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a73215bac62f1340a58f6c7f2ba9b0e7b"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a73215bac62f1340a58f6c7f2ba9b0e7b">SVF::SVFUtil::getHeapAllocHoldingArgPosition</a></div><div class="ttdeci">int getHeapAllocHoldingArgPosition(const SVFFunction *fun)</div><div class="ttdoc">Get the position of argument that holds an allocated heap object. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00379">SVFUtil.h:379</a></div></div>
|
|
666
|
+
<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>
|
|
667
|
+
<div class="ttc" id="namespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00072">BasicTypes.h:72</a></div></div>
|
|
668
|
+
<div class="ttc" id="namespaceSVF_1_1LLVMUtil_html_abba4111230f6009bbf50518ee36a9870"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#abba4111230f6009bbf50518ee36a9870">SVF::LLVMUtil::getPtrElementType</a></div><div class="ttdeci">static Type * getPtrElementType(const PointerType *pty)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00073">LLVMUtil.h:73</a></div></div>
|
|
669
|
+
</div><!-- fragment -->
|
|
670
|
+
</div>
|
|
671
|
+
</div>
|
|
672
|
+
<a id="aa81614cdb6a2a912638d5dc980480af7"></a>
|
|
673
|
+
<h2 class="memtitle"><span class="permalink"><a href="#aa81614cdb6a2a912638d5dc980480af7">◆ </a></span>getRefTypeOfHeapAllocOrStatic() <span class="overload">[2/2]</span></h2>
|
|
674
|
+
|
|
675
|
+
<div class="memitem">
|
|
676
|
+
<div class="memproto">
|
|
677
|
+
<table class="mlabels">
|
|
678
|
+
<tr>
|
|
679
|
+
<td class="mlabels-left">
|
|
680
|
+
<table class="memname">
|
|
681
|
+
<tr>
|
|
682
|
+
<td class="memname">const <a class="el" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>* SVF::LLVMUtil::getRefTypeOfHeapAllocOrStatic </td>
|
|
683
|
+
<td>(</td>
|
|
684
|
+
<td class="paramtype">const <a class="el" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> * </td>
|
|
685
|
+
<td class="paramname"><em>inst</em></td><td>)</td>
|
|
686
|
+
<td></td>
|
|
687
|
+
</tr>
|
|
688
|
+
</table>
|
|
689
|
+
</td>
|
|
690
|
+
<td class="mlabels-right">
|
|
691
|
+
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
|
|
692
|
+
</tr>
|
|
693
|
+
</table>
|
|
694
|
+
</div><div class="memdoc">
|
|
695
|
+
|
|
696
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00107">107</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
697
|
+
<div class="fragment"><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> {</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  CallSite cs(const_cast<Instruction*>(inst));</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#aa81614cdb6a2a912638d5dc980480af7">getRefTypeOfHeapAllocOrStatic</a>(cs);</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> }</div><div class="ttc" id="namespaceSVF_1_1LLVMUtil_html_aa81614cdb6a2a912638d5dc980480af7"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#aa81614cdb6a2a912638d5dc980480af7">SVF::LLVMUtil::getRefTypeOfHeapAllocOrStatic</a></div><div class="ttdeci">const PointerType * getRefTypeOfHeapAllocOrStatic(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00107">LLVMUtil.h:107</a></div></div>
|
|
698
|
+
</div><!-- fragment -->
|
|
699
|
+
</div>
|
|
700
|
+
</div>
|
|
701
|
+
<a id="a2fff71a75bb595865e1ff32d1addda71"></a>
|
|
702
|
+
<h2 class="memtitle"><span class="permalink"><a href="#a2fff71a75bb595865e1ff32d1addda71">◆ </a></span>getTypeOfHeapAlloc()</h2>
|
|
703
|
+
|
|
704
|
+
<div class="memitem">
|
|
705
|
+
<div class="memproto">
|
|
706
|
+
<table class="memname">
|
|
707
|
+
<tr>
|
|
708
|
+
<td class="memname">const <a class="el" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> * SVF::LLVMUtil::getTypeOfHeapAlloc </td>
|
|
709
|
+
<td>(</td>
|
|
710
|
+
<td class="paramtype">const llvm::Instruction * </td>
|
|
711
|
+
<td class="paramname"><em>inst</em></td><td>)</td>
|
|
712
|
+
<td></td>
|
|
713
|
+
</tr>
|
|
714
|
+
</table>
|
|
715
|
+
</div><div class="memdoc">
|
|
716
|
+
|
|
717
|
+
<p>Get the type of the heap allocation. </p>
|
|
718
|
+
<p>Return the type of the object from a heap allocation </p>
|
|
719
|
+
|
|
720
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00326">326</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
721
|
+
<div class="fragment"><div class="line"><a name="l00327"></a><span class="lineno"> 327</span> {</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  <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="l00329"></a><span class="lineno"> 329</span> </div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#ab2064cb70c76f399ce115f2621adea35">SVFUtil::isHeapAllocExtCallViaRet</a>(inst))</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>  <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_1LLVMUtil.html#a837d19c740902c419206287bdb21273b">getUniqueUseViaCastInst</a>(inst))</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>  <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="l00335"></a><span class="lineno"> 335</span>  type = newTy;</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>  }</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#aedfa6e9216c6c788c26aef1967689b76">SVFUtil::isHeapAllocExtCallViaArg</a>(inst))</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>  <a class="code" href="classSVF_1_1CallSite.html">CallSite</a> cs = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a202de7ad2bea0311e2f75894c030e7a9">SVFUtil::getLLVMCallSite</a>(inst);</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  <span class="keywordtype">int</span> arg_pos = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a73215bac62f1340a58f6c7f2ba9b0e7b">SVFUtil::getHeapAllocHoldingArgPosition</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d">SVFUtil::getCallee</a>(cs));</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</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="l00343"></a><span class="lineno"> 343</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="l00344"></a><span class="lineno"> 344</span>  }</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  {</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</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="l00348"></a><span class="lineno"> 348</span>  }</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span> </div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  <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="l00351"></a><span class="lineno"> 351</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#abba4111230f6009bbf50518ee36a9870">getPtrElementType</a>(type);</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</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>
|
|
722
|
+
<div class="ttc" id="namespaceSVF_html_aa962cc1d782cc46553251e96b64a754b"><div class="ttname"><a href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">SVF::PointerType</a></div><div class="ttdeci">llvm::PointerType PointerType</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00089">BasicTypes.h:89</a></div></div>
|
|
723
|
+
<div class="ttc" id="namespaceSVF_1_1LLVMUtil_html_a837d19c740902c419206287bdb21273b"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a837d19c740902c419206287bdb21273b">SVF::LLVMUtil::getUniqueUseViaCastInst</a></div><div class="ttdeci">const Value * getUniqueUseViaCastInst(const Value *val)</div><div class="ttdoc">Return the bitcast instruction which is val&#39;s only use site, otherwise return nullptr. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00307">LLVMUtil.cpp:307</a></div></div>
|
|
724
|
+
<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#l00215">BasicTypes.h:215</a></div></div>
|
|
725
|
+
<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="SVFUtil_8h_source.html#l00502">SVFUtil.h:502</a></div></div>
|
|
726
|
+
<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="SVFUtil_8h_source.html#l00513">SVFUtil.h:513</a></div></div>
|
|
727
|
+
<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#l00281">SVFUtil.h:281</a></div></div>
|
|
728
|
+
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a73215bac62f1340a58f6c7f2ba9b0e7b"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a73215bac62f1340a58f6c7f2ba9b0e7b">SVF::SVFUtil::getHeapAllocHoldingArgPosition</a></div><div class="ttdeci">int getHeapAllocHoldingArgPosition(const SVFFunction *fun)</div><div class="ttdoc">Get the position of argument that holds an allocated heap object. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00379">SVFUtil.h:379</a></div></div>
|
|
729
|
+
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a202de7ad2bea0311e2f75894c030e7a9"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a202de7ad2bea0311e2f75894c030e7a9">SVF::SVFUtil::getLLVMCallSite</a></div><div class="ttdeci">CallSite getLLVMCallSite(const Instruction *inst)</div><div class="ttdoc">Return LLVM callsite given a instruction. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00217">SVFUtil.h:217</a></div></div>
|
|
730
|
+
<div class="ttc" id="classSVF_1_1CallSite_html"><div class="ttname"><a href="classSVF_1_1CallSite.html">SVF::CallSite</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00202">BasicTypes.h:202</a></div></div>
|
|
731
|
+
<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>
|
|
732
|
+
<div class="ttc" id="namespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00072">BasicTypes.h:72</a></div></div>
|
|
733
|
+
<div class="ttc" id="namespaceSVF_1_1LLVMUtil_html_abba4111230f6009bbf50518ee36a9870"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#abba4111230f6009bbf50518ee36a9870">SVF::LLVMUtil::getPtrElementType</a></div><div class="ttdeci">static Type * getPtrElementType(const PointerType *pty)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00073">LLVMUtil.h:73</a></div></div>
|
|
734
|
+
</div><!-- fragment -->
|
|
735
|
+
</div>
|
|
736
|
+
</div>
|
|
737
|
+
<a id="a09683d4d88a50fa621809c734465f94d"></a>
|
|
738
|
+
<h2 class="memtitle"><span class="permalink"><a href="#a09683d4d88a50fa621809c734465f94d">◆ </a></span>getTypeSizeInBytes() <span class="overload">[1/2]</span></h2>
|
|
739
|
+
|
|
740
|
+
<div class="memitem">
|
|
741
|
+
<div class="memproto">
|
|
742
|
+
<table class="memname">
|
|
743
|
+
<tr>
|
|
744
|
+
<td class="memname"><a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> SVF::LLVMUtil::getTypeSizeInBytes </td>
|
|
745
|
+
<td>(</td>
|
|
746
|
+
<td class="paramtype">const <a class="el" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> * </td>
|
|
747
|
+
<td class="paramname"><em>type</em></td><td>)</td>
|
|
748
|
+
<td></td>
|
|
749
|
+
</tr>
|
|
750
|
+
</table>
|
|
751
|
+
</div><div class="memdoc">
|
|
752
|
+
|
|
753
|
+
<p>Helper method to get the size of the type from target data layout. </p>
|
|
754
|
+
|
|
755
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00455">455</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
756
|
+
<div class="fragment"><div class="line"><a name="l00456"></a><span class="lineno"> 456</span> {</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span> </div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  <span class="comment">// if the type has size then simply return it, otherwise just return 0</span></div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  <span class="keywordflow">if</span>(type->isSized())</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a151fd7fb2b2ebe72af7c417defbb4f4d">getDataLayout</a>(LLVMModuleSet::getLLVMModuleSet()->getMainLLVMModule())->getTypeStoreSize(const_cast<Type*>(type));</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span> }</div><div class="ttc" id="namespaceSVF_1_1LLVMUtil_html_a151fd7fb2b2ebe72af7c417defbb4f4d"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a151fd7fb2b2ebe72af7c417defbb4f4d">SVF::LLVMUtil::getDataLayout</a></div><div class="ttdeci">static DataLayout * getDataLayout(Module *mod)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00280">LLVMUtil.h:280</a></div></div>
|
|
757
|
+
</div><!-- fragment -->
|
|
758
|
+
</div>
|
|
759
|
+
</div>
|
|
760
|
+
<a id="a2b5fdf455c5dd40c0baa60185e5e41c6"></a>
|
|
761
|
+
<h2 class="memtitle"><span class="permalink"><a href="#a2b5fdf455c5dd40c0baa60185e5e41c6">◆ </a></span>getTypeSizeInBytes() <span class="overload">[2/2]</span></h2>
|
|
762
|
+
|
|
763
|
+
<div class="memitem">
|
|
764
|
+
<div class="memproto">
|
|
765
|
+
<table class="memname">
|
|
766
|
+
<tr>
|
|
767
|
+
<td class="memname"><a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> SVF::LLVMUtil::getTypeSizeInBytes </td>
|
|
768
|
+
<td>(</td>
|
|
769
|
+
<td class="paramtype">const <a class="el" href="namespaceSVF.html#a2bf58575ac7d068e0f1a4cf953b9e6cb">StructType</a> * </td>
|
|
770
|
+
<td class="paramname"><em>sty</em>, </td>
|
|
771
|
+
</tr>
|
|
772
|
+
<tr>
|
|
773
|
+
<td class="paramkey"></td>
|
|
774
|
+
<td></td>
|
|
775
|
+
<td class="paramtype"><a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> </td>
|
|
776
|
+
<td class="paramname"><em>field_index</em> </td>
|
|
777
|
+
</tr>
|
|
778
|
+
<tr>
|
|
779
|
+
<td></td>
|
|
780
|
+
<td>)</td>
|
|
781
|
+
<td></td><td></td>
|
|
782
|
+
</tr>
|
|
783
|
+
</table>
|
|
784
|
+
</div><div class="memdoc">
|
|
785
|
+
<p>if this struct type does not have any element, i.e., opaque </p>
|
|
786
|
+
|
|
787
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00465">465</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
788
|
+
<div class="fragment"><div class="line"><a name="l00466"></a><span class="lineno"> 466</span> {</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span> </div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  <span class="keyword">const</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#aef8af3d6e4b75a3e3e108b636a48fbd3">StructLayout</a> *stTySL = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a151fd7fb2b2ebe72af7c417defbb4f4d">getDataLayout</a>(LLVMModuleSet::getLLVMModuleSet()->getMainLLVMModule())->getStructLayout( const_cast<StructType *>(sty) );</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  <span class="keywordflow">if</span>(sty->isOpaque())</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  <span class="keywordflow">return</span> stTySL->getElementOffset(field_idx);</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span> }</div><div class="ttc" id="SVF-FE_2BasicTypes_8h_html_aef8af3d6e4b75a3e3e108b636a48fbd3"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#aef8af3d6e4b75a3e3e108b636a48fbd3">StructLayout</a></div><div class="ttdeci">llvm::StructLayout StructLayout</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00048">BasicTypes.h:48</a></div></div>
|
|
789
|
+
<div class="ttc" id="namespaceSVF_1_1LLVMUtil_html_a151fd7fb2b2ebe72af7c417defbb4f4d"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a151fd7fb2b2ebe72af7c417defbb4f4d">SVF::LLVMUtil::getDataLayout</a></div><div class="ttdeci">static DataLayout * getDataLayout(Module *mod)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00280">LLVMUtil.h:280</a></div></div>
|
|
790
|
+
</div><!-- fragment -->
|
|
791
|
+
</div>
|
|
792
|
+
</div>
|
|
793
|
+
<a id="a837d19c740902c419206287bdb21273b"></a>
|
|
794
|
+
<h2 class="memtitle"><span class="permalink"><a href="#a837d19c740902c419206287bdb21273b">◆ </a></span>getUniqueUseViaCastInst()</h2>
|
|
795
|
+
|
|
796
|
+
<div class="memitem">
|
|
797
|
+
<div class="memproto">
|
|
798
|
+
<table class="memname">
|
|
799
|
+
<tr>
|
|
800
|
+
<td class="memname">const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> * SVF::LLVMUtil::getUniqueUseViaCastInst </td>
|
|
801
|
+
<td>(</td>
|
|
802
|
+
<td class="paramtype">const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> * </td>
|
|
803
|
+
<td class="paramname"><em>val</em></td><td>)</td>
|
|
804
|
+
<td></td>
|
|
805
|
+
</tr>
|
|
806
|
+
</table>
|
|
807
|
+
</div><div class="memdoc">
|
|
808
|
+
|
|
809
|
+
<p>Return the bitcast instruction which is val's only use site, otherwise return nullptr. </p>
|
|
810
|
+
<p>If type is void* (i8*) and val is only used at a bitcast instruction </p>
|
|
811
|
+
|
|
812
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00307">307</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
813
|
+
<div class="fragment"><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#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="l00310"></a><span class="lineno"> 310</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="l00312"></a><span class="lineno"> 312</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF.html#a3d9e7f32dc17fe8d40f8d6a011403b91">IntegerType</a> *IT = SVFUtil::dyn_cast<IntegerType>(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#abba4111230f6009bbf50518ee36a9870">getPtrElementType</a>(type)))</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> (IT->getBitWidth() == 8 && val->getNumUses()==1)</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  {</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  <span class="keyword">const</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#a9c01c67684e99545d8e0403321594977">Use</a> *u = &*val->use_begin();</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a><<a class="code" href="SVF-FE_2BasicTypes_8h.html#ab8cddf2ff868c0a9ae99483640c9ecef">BitCastInst</a>>(u->getUser());</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>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</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>
|
|
814
|
+
<div class="ttc" id="namespaceSVF_html_aa962cc1d782cc46553251e96b64a754b"><div class="ttname"><a href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">SVF::PointerType</a></div><div class="ttdeci">llvm::PointerType PointerType</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00089">BasicTypes.h:89</a></div></div>
|
|
815
|
+
<div class="ttc" id="SVF-FE_2BasicTypes_8h_html_ab8cddf2ff868c0a9ae99483640c9ecef"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#ab8cddf2ff868c0a9ae99483640c9ecef">BitCastInst</a></div><div class="ttdeci">llvm::BitCastInst BitCastInst</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00066">BasicTypes.h:66</a></div></div>
|
|
816
|
+
<div class="ttc" id="SVF-FE_2BasicTypes_8h_html_a9c01c67684e99545d8e0403321594977"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#a9c01c67684e99545d8e0403321594977">Use</a></div><div class="ttdeci">llvm::Use Use</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00029">BasicTypes.h:29</a></div></div>
|
|
817
|
+
<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>
|
|
818
|
+
<div class="ttc" id="namespaceSVF_1_1LLVMUtil_html_abba4111230f6009bbf50518ee36a9870"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#abba4111230f6009bbf50518ee36a9870">SVF::LLVMUtil::getPtrElementType</a></div><div class="ttdeci">static Type * getPtrElementType(const PointerType *pty)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00073">LLVMUtil.h:73</a></div></div>
|
|
819
|
+
<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#l00122">BasicTypes.h:122</a></div></div>
|
|
820
|
+
</div><!-- fragment -->
|
|
821
|
+
</div>
|
|
822
|
+
</div>
|
|
823
|
+
<a id="a35b36394af726c679fe2c1b6051db7c4"></a>
|
|
824
|
+
<h2 class="memtitle"><span class="permalink"><a href="#a35b36394af726c679fe2c1b6051db7c4">◆ </a></span>isBinaryConstantExpr()</h2>
|
|
825
|
+
|
|
826
|
+
<div class="memitem">
|
|
827
|
+
<div class="memproto">
|
|
828
|
+
<table class="mlabels">
|
|
829
|
+
<tr>
|
|
830
|
+
<td class="mlabels-left">
|
|
831
|
+
<table class="memname">
|
|
832
|
+
<tr>
|
|
833
|
+
<td class="memname">const <a class="el" href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a>* SVF::LLVMUtil::isBinaryConstantExpr </td>
|
|
834
|
+
<td>(</td>
|
|
835
|
+
<td class="paramtype">const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> * </td>
|
|
836
|
+
<td class="paramname"><em>val</em></td><td>)</td>
|
|
837
|
+
<td></td>
|
|
838
|
+
</tr>
|
|
839
|
+
</table>
|
|
840
|
+
</td>
|
|
841
|
+
<td class="mlabels-right">
|
|
842
|
+
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
|
|
843
|
+
</tr>
|
|
844
|
+
</table>
|
|
845
|
+
</div><div class="memdoc">
|
|
846
|
+
|
|
847
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00259">259</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
848
|
+
<div class="fragment"><div class="line"><a name="l00260"></a><span class="lineno"> 260</span> {</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a>* constExpr = SVFUtil::dyn_cast<ConstantExpr>(val))</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  {</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <span class="keywordflow">if</span>((constExpr->getOpcode() >= Instruction::BinaryOpsBegin) && (constExpr->getOpcode() <= Instruction::BinaryOpsEnd))</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <span class="keywordflow">return</span> constExpr;</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  }</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span> }</div><div class="ttc" id="SVF-FE_2BasicTypes_8h_html_a60115de303225d173fb935cf7619a2cb"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a></div><div class="ttdeci">llvm::ConstantExpr ConstantExpr</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00057">BasicTypes.h:57</a></div></div>
|
|
849
|
+
</div><!-- fragment -->
|
|
850
|
+
</div>
|
|
851
|
+
</div>
|
|
852
|
+
<a id="abf4e75ba6236136399d45c85be2328fe"></a>
|
|
853
|
+
<h2 class="memtitle"><span class="permalink"><a href="#abf4e75ba6236136399d45c85be2328fe">◆ </a></span>isBlackholeSym()</h2>
|
|
854
|
+
|
|
855
|
+
<div class="memitem">
|
|
856
|
+
<div class="memproto">
|
|
857
|
+
<table class="mlabels">
|
|
858
|
+
<tr>
|
|
859
|
+
<td class="mlabels-left">
|
|
860
|
+
<table class="memname">
|
|
861
|
+
<tr>
|
|
862
|
+
<td class="memname">bool SVF::LLVMUtil::isBlackholeSym </td>
|
|
863
|
+
<td>(</td>
|
|
864
|
+
<td class="paramtype">const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> * </td>
|
|
865
|
+
<td class="paramname"><em>val</em></td><td>)</td>
|
|
866
|
+
<td></td>
|
|
867
|
+
</tr>
|
|
868
|
+
</table>
|
|
869
|
+
</td>
|
|
870
|
+
<td class="mlabels-right">
|
|
871
|
+
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
|
|
872
|
+
</tr>
|
|
873
|
+
</table>
|
|
874
|
+
</div><div class="memdoc">
|
|
875
|
+
|
|
876
|
+
<p>Check whether this value is a black hole. </p>
|
|
877
|
+
|
|
878
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00048">48</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
879
|
+
<div class="fragment"><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> {</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordflow">return</span> (SVFUtil::isa<UndefValue>(val));</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> }</div></div><!-- fragment -->
|
|
880
|
+
</div>
|
|
881
|
+
</div>
|
|
882
|
+
<a id="af983b0e1fbd371d8672e8f03f63084fc"></a>
|
|
883
|
+
<h2 class="memtitle"><span class="permalink"><a href="#af983b0e1fbd371d8672e8f03f63084fc">◆ </a></span>isCastConstantExpr()</h2>
|
|
884
|
+
|
|
885
|
+
<div class="memitem">
|
|
886
|
+
<div class="memproto">
|
|
887
|
+
<table class="mlabels">
|
|
888
|
+
<tr>
|
|
889
|
+
<td class="mlabels-left">
|
|
890
|
+
<table class="memname">
|
|
891
|
+
<tr>
|
|
892
|
+
<td class="memname">const <a class="el" href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a>* SVF::LLVMUtil::isCastConstantExpr </td>
|
|
893
|
+
<td>(</td>
|
|
894
|
+
<td class="paramtype">const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> * </td>
|
|
895
|
+
<td class="paramname"><em>val</em></td><td>)</td>
|
|
896
|
+
<td></td>
|
|
897
|
+
</tr>
|
|
898
|
+
</table>
|
|
899
|
+
</td>
|
|
900
|
+
<td class="mlabels-right">
|
|
901
|
+
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
|
|
902
|
+
</tr>
|
|
903
|
+
</table>
|
|
904
|
+
</div><div class="memdoc">
|
|
905
|
+
|
|
906
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00215">215</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
907
|
+
<div class="fragment"><div class="line"><a name="l00216"></a><span class="lineno"> 216</span> {</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a>* constExpr = SVFUtil::dyn_cast<ConstantExpr>(val))</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  {</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <span class="keywordflow">if</span>(constExpr->getOpcode() == Instruction::BitCast)</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <span class="keywordflow">return</span> constExpr;</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  }</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span> }</div><div class="ttc" id="SVF-FE_2BasicTypes_8h_html_a60115de303225d173fb935cf7619a2cb"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a></div><div class="ttdeci">llvm::ConstantExpr ConstantExpr</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00057">BasicTypes.h:57</a></div></div>
|
|
908
|
+
</div><!-- fragment -->
|
|
909
|
+
</div>
|
|
910
|
+
</div>
|
|
911
|
+
<a id="aa0b3e34188f721ff7145e47cb607c79a"></a>
|
|
912
|
+
<h2 class="memtitle"><span class="permalink"><a href="#aa0b3e34188f721ff7145e47cb607c79a">◆ </a></span>isCmpConstantExpr()</h2>
|
|
913
|
+
|
|
914
|
+
<div class="memitem">
|
|
915
|
+
<div class="memproto">
|
|
916
|
+
<table class="mlabels">
|
|
917
|
+
<tr>
|
|
918
|
+
<td class="mlabels-left">
|
|
919
|
+
<table class="memname">
|
|
920
|
+
<tr>
|
|
921
|
+
<td class="memname">const <a class="el" href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a>* SVF::LLVMUtil::isCmpConstantExpr </td>
|
|
922
|
+
<td>(</td>
|
|
923
|
+
<td class="paramtype">const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> * </td>
|
|
924
|
+
<td class="paramname"><em>val</em></td><td>)</td>
|
|
925
|
+
<td></td>
|
|
926
|
+
</tr>
|
|
927
|
+
</table>
|
|
928
|
+
</td>
|
|
929
|
+
<td class="mlabels-right">
|
|
930
|
+
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
|
|
931
|
+
</tr>
|
|
932
|
+
</table>
|
|
933
|
+
</div><div class="memdoc">
|
|
934
|
+
|
|
935
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00249">249</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
936
|
+
<div class="fragment"><div class="line"><a name="l00250"></a><span class="lineno"> 250</span> {</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a>* constExpr = SVFUtil::dyn_cast<ConstantExpr>(val))</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  {</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <span class="keywordflow">if</span>(constExpr->getOpcode() == Instruction::ICmp || constExpr->getOpcode() == Instruction::FCmp)</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <span class="keywordflow">return</span> constExpr;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  }</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span> }</div><div class="ttc" id="SVF-FE_2BasicTypes_8h_html_a60115de303225d173fb935cf7619a2cb"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a></div><div class="ttdeci">llvm::ConstantExpr ConstantExpr</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00057">BasicTypes.h:57</a></div></div>
|
|
937
|
+
</div><!-- fragment -->
|
|
938
|
+
</div>
|
|
939
|
+
</div>
|
|
940
|
+
<a id="a2fd5c626b818ac22a9c845227e1461c4"></a>
|
|
941
|
+
<h2 class="memtitle"><span class="permalink"><a href="#a2fd5c626b818ac22a9c845227e1461c4">◆ </a></span>isConstantObjSym()</h2>
|
|
942
|
+
|
|
943
|
+
<div class="memitem">
|
|
944
|
+
<div class="memproto">
|
|
945
|
+
<table class="memname">
|
|
946
|
+
<tr>
|
|
947
|
+
<td class="memname">bool SVF::LLVMUtil::isConstantObjSym </td>
|
|
948
|
+
<td>(</td>
|
|
949
|
+
<td class="paramtype">const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> * </td>
|
|
950
|
+
<td class="paramname"><em>val</em></td><td>)</td>
|
|
951
|
+
<td></td>
|
|
952
|
+
</tr>
|
|
953
|
+
</table>
|
|
954
|
+
</div><div class="memdoc">
|
|
955
|
+
|
|
956
|
+
<p>Check whether this value points-to a constant object. </p>
|
|
957
|
+
<p>Check whether this value points-to a constant object </p>
|
|
958
|
+
|
|
959
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00060">60</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
960
|
+
<div class="fragment"><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> {</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* v = SVFUtil::dyn_cast<GlobalVariable>(val))</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  {</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1cppUtil.html#aeef0f5c6486379043a7d47b0635f2667">cppUtil::isValVtbl</a>(v))</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!v->hasInitializer())</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  {</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keywordflow">if</span>(v->isExternalLinkage(v->getLinkage()))</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  }</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  {</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <a class="code" href="classSVF_1_1StInfo.html">StInfo</a> *stInfo = SymbolTableInfo::SymbolInfo()->getStructInfo(v->getInitializer()->getType());</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keyword">const</span> std::vector<const Type*> &fields = stInfo-><a class="code" href="classSVF_1_1StInfo.html#a7fe5593e487a04e8f0eb28ca7bc31fe9">getFlattenFieldTypes</a>();</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordflow">for</span> (std::vector<const Type*>::const_iterator it = fields.begin(), eit = fields.end(); it != eit; ++it)</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  {</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *elemTy = *it;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(!SVFUtil::isa<FunctionType>(elemTy) && <span class="stringliteral">"Initializer of a global is a function?"</span>);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordflow">if</span> (SVFUtil::isa<PointerType>(elemTy))</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  }</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> </div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordflow">return</span> v->isConstant();</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  }</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  }</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a9e85d445e8b7b205134acd3874bba388">SVFUtil::isConstantData</a>(val);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> }</div><div class="ttc" id="namespaceSVF_html_a1d008c0666c145622b81d427be64c52d"><div class="ttname"><a href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">SVF::Type</a></div><div class="ttdeci">llvm::Type Type</div><div class="ttdoc">LLVM Basic classes. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00065">BasicTypes.h:65</a></div></div>
|
|
961
|
+
<div class="ttc" id="namespaceSVF_html_a09f5fa3bc44bf53612a085e3a611cc4e"><div class="ttname"><a href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">SVF::GlobalVariable</a></div><div class="ttdeci">llvm::GlobalVariable GlobalVariable</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00076">BasicTypes.h:76</a></div></div>
|
|
962
|
+
<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>
|
|
963
|
+
<div class="ttc" id="namespaceSVF_1_1cppUtil_html_aeef0f5c6486379043a7d47b0635f2667"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#aeef0f5c6486379043a7d47b0635f2667">SVF::cppUtil::isValVtbl</a></div><div class="ttdeci">bool isValVtbl(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#l00124">CPPUtil.cpp:124</a></div></div>
|
|
964
|
+
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a9e85d445e8b7b205134acd3874bba388"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a9e85d445e8b7b205134acd3874bba388">SVF::SVFUtil::isConstantData</a></div><div class="ttdeci">bool isConstantData(const Value *val)</div><div class="ttdoc">Return true if the value refers to constant data, e.g., i32 0. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00457">SVFUtil.h:457</a></div></div>
|
|
965
|
+
<div class="ttc" id="classSVF_1_1StInfo_html"><div class="ttname"><a href="classSVF_1_1StInfo.html">SVF::StInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00467">SymbolTableInfo.h:467</a></div></div>
|
|
966
|
+
<div class="ttc" id="classSVF_1_1StInfo_html_a7fe5593e487a04e8f0eb28ca7bc31fe9"><div class="ttname"><a href="classSVF_1_1StInfo.html#a7fe5593e487a04e8f0eb28ca7bc31fe9">SVF::StInfo::getFlattenFieldTypes</a></div><div class="ttdeci">std::vector< const Type * > & getFlattenFieldTypes()</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00521">SymbolTableInfo.h:521</a></div></div>
|
|
967
|
+
</div><!-- fragment -->
|
|
968
|
+
</div>
|
|
969
|
+
</div>
|
|
970
|
+
<a id="ab775c1aeb5a4e2d18a96c6785d71cb41"></a>
|
|
971
|
+
<h2 class="memtitle"><span class="permalink"><a href="#ab775c1aeb5a4e2d18a96c6785d71cb41">◆ </a></span>isDeadFunction()</h2>
|
|
972
|
+
|
|
973
|
+
<div class="memitem">
|
|
974
|
+
<div class="memproto">
|
|
975
|
+
<table class="memname">
|
|
976
|
+
<tr>
|
|
977
|
+
<td class="memname">bool SVF::LLVMUtil::isDeadFunction </td>
|
|
978
|
+
<td>(</td>
|
|
979
|
+
<td class="paramtype">const <a class="el" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> * </td>
|
|
980
|
+
<td class="paramname"><em>fun</em></td><td>)</td>
|
|
981
|
+
<td></td>
|
|
982
|
+
</tr>
|
|
983
|
+
</table>
|
|
984
|
+
</div><div class="memdoc">
|
|
985
|
+
|
|
986
|
+
<p>whether this is a function without any possible caller? </p>
|
|
987
|
+
<p>Method for dead function, which does not have any possible caller function address is not taken and never be used in call or invoke instruction</p>
|
|
988
|
+
<p>Return true if this is a function without any possible caller </p>
|
|
989
|
+
|
|
990
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00160">160</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
991
|
+
<div class="fragment"><div class="line"><a name="l00161"></a><span class="lineno"> 161</span> {</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="keywordflow">if</span>(fun->hasAddressTaken())</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a2c97c2b79b795465490512e267a9309b">SVFUtil::isProgEntryFunction</a>(fun))</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="keywordflow">for</span> (Value::const_user_iterator i = fun->user_begin(), e = fun->user_end(); i != e; ++i)</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  {</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a2e08ce822223842fa6a73fd659b1a526">SVFUtil::isCallSite</a>(*i))</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  }</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keywordflow">if</span> (LLVMModuleSet::getLLVMModuleSet()->hasDeclaration(fun))</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  {</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFModule.html#acfd1ffb4696136de493843786c799e6b">SVFModule::FunctionSetType</a> &decls = LLVMModuleSet::getLLVMModuleSet()->getDeclaration(fun);</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="keywordflow">for</span> (SVFModule::FunctionSetType::const_iterator it = decls.begin(),</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  eit = decls.end(); it != eit; ++it)</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  {</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *decl = (*it)->getLLVMFun();</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="keywordflow">if</span>(decl->hasAddressTaken())</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="keywordflow">for</span> (Value::const_user_iterator i = decl->user_begin(), e = decl->user_end(); i != e; ++i)</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  {</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a2e08ce822223842fa6a73fd659b1a526">SVFUtil::isCallSite</a>(*i))</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  }</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>  }</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span> }</div><div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a2e08ce822223842fa6a73fd659b1a526"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a2e08ce822223842fa6a73fd659b1a526">SVF::SVFUtil::isCallSite</a></div><div class="ttdeci">bool isCallSite(const Instruction *inst)</div><div class="ttdoc">Whether an instruction is a call or invoke instruction. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00196">SVFUtil.h:196</a></div></div>
|
|
992
|
+
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a2c97c2b79b795465490512e267a9309b"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a2c97c2b79b795465490512e267a9309b">SVF::SVFUtil::isProgEntryFunction</a></div><div class="ttdeci">bool isProgEntryFunction(const SVFFunction *fun)</div><div class="ttdoc">Program entry function e.g. main. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00417">SVFUtil.h:417</a></div></div>
|
|
993
|
+
<div class="ttc" id="namespaceSVF_html_a5faee14fa1dd41447bc73ac365fe33c1"><div class="ttname"><a href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a></div><div class="ttdeci">llvm::Function Function</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00070">BasicTypes.h:70</a></div></div>
|
|
994
|
+
<div class="ttc" id="classSVF_1_1SVFModule_html_acfd1ffb4696136de493843786c799e6b"><div class="ttname"><a href="classSVF_1_1SVFModule.html#acfd1ffb4696136de493843786c799e6b">SVF::SVFModule::FunctionSetType</a></div><div class="ttdeci">std::vector< const SVFFunction * > FunctionSetType</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00044">SVFModule.h:44</a></div></div>
|
|
995
|
+
</div><!-- fragment -->
|
|
996
|
+
</div>
|
|
997
|
+
</div>
|
|
998
|
+
<a id="ab5fc50624b5fe83b676b14bec4b99685"></a>
|
|
999
|
+
<h2 class="memtitle"><span class="permalink"><a href="#ab5fc50624b5fe83b676b14bec4b99685">◆ </a></span>isGepConstantExpr()</h2>
|
|
1000
|
+
|
|
1001
|
+
<div class="memitem">
|
|
1002
|
+
<div class="memproto">
|
|
1003
|
+
<table class="mlabels">
|
|
1004
|
+
<tr>
|
|
1005
|
+
<td class="mlabels-left">
|
|
1006
|
+
<table class="memname">
|
|
1007
|
+
<tr>
|
|
1008
|
+
<td class="memname">const <a class="el" href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a>* SVF::LLVMUtil::isGepConstantExpr </td>
|
|
1009
|
+
<td>(</td>
|
|
1010
|
+
<td class="paramtype">const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> * </td>
|
|
1011
|
+
<td class="paramname"><em>val</em></td><td>)</td>
|
|
1012
|
+
<td></td>
|
|
1013
|
+
</tr>
|
|
1014
|
+
</table>
|
|
1015
|
+
</td>
|
|
1016
|
+
<td class="mlabels-right">
|
|
1017
|
+
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
|
|
1018
|
+
</tr>
|
|
1019
|
+
</table>
|
|
1020
|
+
</div><div class="memdoc">
|
|
1021
|
+
|
|
1022
|
+
<p>Return corresponding constant expression, otherwise return nullptr. </p>
|
|
1023
|
+
|
|
1024
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00185">185</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
1025
|
+
<div class="fragment"><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> {</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a>* constExpr = SVFUtil::dyn_cast<ConstantExpr>(val))</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  {</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="keywordflow">if</span>(constExpr->getOpcode() == Instruction::GetElementPtr)</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <span class="keywordflow">return</span> constExpr;</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  }</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span> }</div><div class="ttc" id="SVF-FE_2BasicTypes_8h_html_a60115de303225d173fb935cf7619a2cb"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a></div><div class="ttdeci">llvm::ConstantExpr ConstantExpr</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00057">BasicTypes.h:57</a></div></div>
|
|
1026
|
+
</div><!-- fragment -->
|
|
1027
|
+
</div>
|
|
1028
|
+
</div>
|
|
1029
|
+
<a id="adfa4a4e6d13004d14137d9168bd32463"></a>
|
|
1030
|
+
<h2 class="memtitle"><span class="permalink"><a href="#adfa4a4e6d13004d14137d9168bd32463">◆ </a></span>isInt2PtrConstantExpr()</h2>
|
|
1031
|
+
|
|
1032
|
+
<div class="memitem">
|
|
1033
|
+
<div class="memproto">
|
|
1034
|
+
<table class="mlabels">
|
|
1035
|
+
<tr>
|
|
1036
|
+
<td class="mlabels-left">
|
|
1037
|
+
<table class="memname">
|
|
1038
|
+
<tr>
|
|
1039
|
+
<td class="memname">const <a class="el" href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a>* SVF::LLVMUtil::isInt2PtrConstantExpr </td>
|
|
1040
|
+
<td>(</td>
|
|
1041
|
+
<td class="paramtype">const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> * </td>
|
|
1042
|
+
<td class="paramname"><em>val</em></td><td>)</td>
|
|
1043
|
+
<td></td>
|
|
1044
|
+
</tr>
|
|
1045
|
+
</table>
|
|
1046
|
+
</td>
|
|
1047
|
+
<td class="mlabels-right">
|
|
1048
|
+
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
|
|
1049
|
+
</tr>
|
|
1050
|
+
</table>
|
|
1051
|
+
</div><div class="memdoc">
|
|
1052
|
+
|
|
1053
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00195">195</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
1054
|
+
<div class="fragment"><div class="line"><a name="l00196"></a><span class="lineno"> 196</span> {</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a>* constExpr = SVFUtil::dyn_cast<ConstantExpr>(val))</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  {</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="keywordflow">if</span>(constExpr->getOpcode() == Instruction::IntToPtr)</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <span class="keywordflow">return</span> constExpr;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  }</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span> }</div><div class="ttc" id="SVF-FE_2BasicTypes_8h_html_a60115de303225d173fb935cf7619a2cb"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a></div><div class="ttdeci">llvm::ConstantExpr ConstantExpr</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00057">BasicTypes.h:57</a></div></div>
|
|
1055
|
+
</div><!-- fragment -->
|
|
1056
|
+
</div>
|
|
1057
|
+
</div>
|
|
1058
|
+
<a id="ad8a8c32a09340f491fffffcb07dd7a41"></a>
|
|
1059
|
+
<h2 class="memtitle"><span class="permalink"><a href="#ad8a8c32a09340f491fffffcb07dd7a41">◆ </a></span>isIRFile()</h2>
|
|
1060
|
+
|
|
1061
|
+
<div class="memitem">
|
|
1062
|
+
<div class="memproto">
|
|
1063
|
+
<table class="memname">
|
|
1064
|
+
<tr>
|
|
1065
|
+
<td class="memname">bool SVF::LLVMUtil::isIRFile </td>
|
|
1066
|
+
<td>(</td>
|
|
1067
|
+
<td class="paramtype">const std::string & </td>
|
|
1068
|
+
<td class="paramname"><em>filename</em></td><td>)</td>
|
|
1069
|
+
<td></td>
|
|
1070
|
+
</tr>
|
|
1071
|
+
</table>
|
|
1072
|
+
</div><div class="memdoc">
|
|
1073
|
+
|
|
1074
|
+
<p>Check whether a file is an LLVM IR file. </p>
|
|
1075
|
+
|
|
1076
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00410">410</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
1077
|
+
<div class="fragment"><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>  llvm::ErrorOr<std::unique_ptr<llvm::MemoryBuffer>> FileOrErr = llvm::MemoryBuffer::getFileOrSTDIN(filename);</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  <span class="keywordflow">if</span> (FileOrErr.getError())</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  llvm::MemoryBufferRef Buffer = FileOrErr.get()->getMemBufferRef();</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *bufferStart =</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  (<span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *)Buffer.getBufferStart();</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *bufferEnd =</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  (<span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *)Buffer.getBufferEnd();</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  <span class="keywordflow">return</span> llvm::isBitcode(bufferStart, bufferEnd) ? true :</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  Buffer.getBuffer().startswith(<span class="stringliteral">"; ModuleID ="</span>);</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span> }</div></div><!-- fragment -->
|
|
1078
|
+
</div>
|
|
1079
|
+
</div>
|
|
1080
|
+
<a id="a17cce1a11e1bfc342a9e3e79fe35deef"></a>
|
|
1081
|
+
<h2 class="memtitle"><span class="permalink"><a href="#a17cce1a11e1bfc342a9e3e79fe35deef">◆ </a></span>isNoCallerFunction()</h2>
|
|
1082
|
+
|
|
1083
|
+
<div class="memitem">
|
|
1084
|
+
<div class="memproto">
|
|
1085
|
+
<table class="mlabels">
|
|
1086
|
+
<tr>
|
|
1087
|
+
<td class="mlabels-left">
|
|
1088
|
+
<table class="memname">
|
|
1089
|
+
<tr>
|
|
1090
|
+
<td class="memname">bool SVF::LLVMUtil::isNoCallerFunction </td>
|
|
1091
|
+
<td>(</td>
|
|
1092
|
+
<td class="paramtype">const <a class="el" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> * </td>
|
|
1093
|
+
<td class="paramname"><em>fun</em></td><td>)</td>
|
|
1094
|
+
<td></td>
|
|
1095
|
+
</tr>
|
|
1096
|
+
</table>
|
|
1097
|
+
</td>
|
|
1098
|
+
<td class="mlabels-right">
|
|
1099
|
+
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
|
|
1100
|
+
</tr>
|
|
1101
|
+
</table>
|
|
1102
|
+
</div><div class="memdoc">
|
|
1103
|
+
|
|
1104
|
+
<p>Function does not have any possible caller in the call graph. </p>
|
|
1105
|
+
<p>Return true if the function does not have a caller (either it is a main function or a dead function) </p>
|
|
1106
|
+
|
|
1107
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00146">146</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
1108
|
+
<div class="fragment"><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="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ab775c1aeb5a4e2d18a96c6785d71cb41">isDeadFunction</a>(fun) || <a class="code" href="namespaceSVF_1_1SVFUtil.html#a2c97c2b79b795465490512e267a9309b">SVFUtil::isProgEntryFunction</a>(fun);</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> }</div><div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a2c97c2b79b795465490512e267a9309b"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a2c97c2b79b795465490512e267a9309b">SVF::SVFUtil::isProgEntryFunction</a></div><div class="ttdeci">bool isProgEntryFunction(const SVFFunction *fun)</div><div class="ttdoc">Program entry function e.g. main. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00417">SVFUtil.h:417</a></div></div>
|
|
1109
|
+
<div class="ttc" id="namespaceSVF_1_1LLVMUtil_html_ab775c1aeb5a4e2d18a96c6785d71cb41"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ab775c1aeb5a4e2d18a96c6785d71cb41">SVF::LLVMUtil::isDeadFunction</a></div><div class="ttdeci">bool isDeadFunction(const Function *fun)</div><div class="ttdoc">whether this is a function without any possible caller? </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00160">LLVMUtil.cpp:160</a></div></div>
|
|
1110
|
+
</div><!-- fragment -->
|
|
1111
|
+
</div>
|
|
1112
|
+
</div>
|
|
1113
|
+
<a id="a847fb0c433b5d3611151636ca4bc5bc5"></a>
|
|
1114
|
+
<h2 class="memtitle"><span class="permalink"><a href="#a847fb0c433b5d3611151636ca4bc5bc5">◆ </a></span>isNullPtrSym()</h2>
|
|
1115
|
+
|
|
1116
|
+
<div class="memitem">
|
|
1117
|
+
<div class="memproto">
|
|
1118
|
+
<table class="mlabels">
|
|
1119
|
+
<tr>
|
|
1120
|
+
<td class="mlabels-left">
|
|
1121
|
+
<table class="memname">
|
|
1122
|
+
<tr>
|
|
1123
|
+
<td class="memname">bool SVF::LLVMUtil::isNullPtrSym </td>
|
|
1124
|
+
<td>(</td>
|
|
1125
|
+
<td class="paramtype">const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> * </td>
|
|
1126
|
+
<td class="paramname"><em>val</em></td><td>)</td>
|
|
1127
|
+
<td></td>
|
|
1128
|
+
</tr>
|
|
1129
|
+
</table>
|
|
1130
|
+
</td>
|
|
1131
|
+
<td class="mlabels-right">
|
|
1132
|
+
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
|
|
1133
|
+
</tr>
|
|
1134
|
+
</table>
|
|
1135
|
+
</div><div class="memdoc">
|
|
1136
|
+
|
|
1137
|
+
<p>Check whether this value is a black hole. </p>
|
|
1138
|
+
|
|
1139
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00054">54</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
1140
|
+
<div class="fragment"><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> {</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">Constant</a>* v = SVFUtil::dyn_cast<Constant>(val))</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  {</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordflow">return</span> v->isNullValue() && v->getType()->isPointerTy();</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  }</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> }</div><div class="ttc" id="namespaceSVF_html_a7e230c0cba2e3a7c2e5a5f2ee7d88af9"><div class="ttname"><a href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">SVF::Constant</a></div><div class="ttdeci">llvm::Constant Constant</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00094">BasicTypes.h:94</a></div></div>
|
|
1141
|
+
</div><!-- fragment -->
|
|
1142
|
+
</div>
|
|
1143
|
+
</div>
|
|
1144
|
+
<a id="aca11801ed6ef6ff8d2a1e85bc0fc5794"></a>
|
|
1145
|
+
<h2 class="memtitle"><span class="permalink"><a href="#aca11801ed6ef6ff8d2a1e85bc0fc5794">◆ </a></span>isObject()</h2>
|
|
1146
|
+
|
|
1147
|
+
<div class="memitem">
|
|
1148
|
+
<div class="memproto">
|
|
1149
|
+
<table class="memname">
|
|
1150
|
+
<tr>
|
|
1151
|
+
<td class="memname">bool SVF::LLVMUtil::isObject </td>
|
|
1152
|
+
<td>(</td>
|
|
1153
|
+
<td class="paramtype">const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> * </td>
|
|
1154
|
+
<td class="paramname"><em>ref</em></td><td>)</td>
|
|
1155
|
+
<td></td>
|
|
1156
|
+
</tr>
|
|
1157
|
+
</table>
|
|
1158
|
+
</div><div class="memdoc">
|
|
1159
|
+
|
|
1160
|
+
<p>Return true if this value refers to a object. </p>
|
|
1161
|
+
<p>A value represents an object if it is 1) function, 2) global 3) stack 4) heap </p>
|
|
1162
|
+
|
|
1163
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00042">42</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
1164
|
+
<div class="fragment"><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordtype">bool</span> createobj = <span class="keyword">false</span>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordflow">if</span> (SVFUtil::isa<Instruction>(ref) && <a class="code" href="namespaceSVF_1_1SVFUtil.html#ae62938f722543d6d7fc201b685be1abf">SVFUtil::isStaticExtCall</a>(SVFUtil::cast<Instruction>(ref)) )</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  createobj = <span class="keyword">true</span>;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordflow">if</span> (SVFUtil::isa<Instruction>(ref) && <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab2064cb70c76f399ce115f2621adea35">SVFUtil::isHeapAllocExtCallViaRet</a>(SVFUtil::cast<Instruction>(ref)))</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  createobj = <span class="keyword">true</span>;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordflow">if</span> (SVFUtil::isa<GlobalVariable>(ref))</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  createobj = <span class="keyword">true</span>;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keywordflow">if</span> (SVFUtil::isa<Function>(ref) || SVFUtil::isa<AllocaInst>(ref) )</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  createobj = <span class="keyword">true</span>;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordflow">return</span> createobj;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> }</div><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="SVFUtil_8h_source.html#l00513">SVFUtil.h:513</a></div></div>
|
|
1165
|
+
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_ae62938f722543d6d7fc201b685be1abf"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#ae62938f722543d6d7fc201b685be1abf">SVF::SVFUtil::isStaticExtCall</a></div><div class="ttdeci">bool isStaticExtCall(const CallSite cs)</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00571">SVFUtil.h:571</a></div></div>
|
|
1166
|
+
</div><!-- fragment -->
|
|
1167
|
+
</div>
|
|
1168
|
+
</div>
|
|
1169
|
+
<a id="a2834d135a2385efff783e6e22d2eff1f"></a>
|
|
1170
|
+
<h2 class="memtitle"><span class="permalink"><a href="#a2834d135a2385efff783e6e22d2eff1f">◆ </a></span>isPtr2IntConstantExpr()</h2>
|
|
1171
|
+
|
|
1172
|
+
<div class="memitem">
|
|
1173
|
+
<div class="memproto">
|
|
1174
|
+
<table class="mlabels">
|
|
1175
|
+
<tr>
|
|
1176
|
+
<td class="mlabels-left">
|
|
1177
|
+
<table class="memname">
|
|
1178
|
+
<tr>
|
|
1179
|
+
<td class="memname">const <a class="el" href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a>* SVF::LLVMUtil::isPtr2IntConstantExpr </td>
|
|
1180
|
+
<td>(</td>
|
|
1181
|
+
<td class="paramtype">const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> * </td>
|
|
1182
|
+
<td class="paramname"><em>val</em></td><td>)</td>
|
|
1183
|
+
<td></td>
|
|
1184
|
+
</tr>
|
|
1185
|
+
</table>
|
|
1186
|
+
</td>
|
|
1187
|
+
<td class="mlabels-right">
|
|
1188
|
+
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
|
|
1189
|
+
</tr>
|
|
1190
|
+
</table>
|
|
1191
|
+
</div><div class="memdoc">
|
|
1192
|
+
|
|
1193
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00205">205</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
1194
|
+
<div class="fragment"><div class="line"><a name="l00206"></a><span class="lineno"> 206</span> {</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a>* constExpr = SVFUtil::dyn_cast<ConstantExpr>(val))</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  {</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="keywordflow">if</span>(constExpr->getOpcode() == Instruction::PtrToInt)</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <span class="keywordflow">return</span> constExpr;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  }</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span> }</div><div class="ttc" id="SVF-FE_2BasicTypes_8h_html_a60115de303225d173fb935cf7619a2cb"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a></div><div class="ttdeci">llvm::ConstantExpr ConstantExpr</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00057">BasicTypes.h:57</a></div></div>
|
|
1195
|
+
</div><!-- fragment -->
|
|
1196
|
+
</div>
|
|
1197
|
+
</div>
|
|
1198
|
+
<a id="a0649699433c2fe299ecde41c93f3e4bf"></a>
|
|
1199
|
+
<h2 class="memtitle"><span class="permalink"><a href="#a0649699433c2fe299ecde41c93f3e4bf">◆ </a></span>isPtrInDeadFunction()</h2>
|
|
1200
|
+
|
|
1201
|
+
<div class="memitem">
|
|
1202
|
+
<div class="memproto">
|
|
1203
|
+
<table class="memname">
|
|
1204
|
+
<tr>
|
|
1205
|
+
<td class="memname">bool SVF::LLVMUtil::isPtrInDeadFunction </td>
|
|
1206
|
+
<td>(</td>
|
|
1207
|
+
<td class="paramtype">const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> * </td>
|
|
1208
|
+
<td class="paramname"><em>value</em></td><td>)</td>
|
|
1209
|
+
<td></td>
|
|
1210
|
+
</tr>
|
|
1211
|
+
</table>
|
|
1212
|
+
</div><div class="memdoc">
|
|
1213
|
+
|
|
1214
|
+
<p>Return true if this is value in a dead function (function without any caller) </p>
|
|
1215
|
+
<p>Return true if this is a value in a dead function (function without any caller) </p>
|
|
1216
|
+
|
|
1217
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00193">193</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
1218
|
+
<div class="fragment"><div class="line"><a name="l00194"></a><span class="lineno"> 194</span> {</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst = SVFUtil::dyn_cast<Instruction>(value))</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  {</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#ab775c1aeb5a4e2d18a96c6785d71cb41">isDeadFunction</a>(inst->getParent()->getParent()))</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  }</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a58cdfbc4160cae08745b67844ac29801">Argument</a>* arg = SVFUtil::dyn_cast<Argument>(value))</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  {</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#ab775c1aeb5a4e2d18a96c6785d71cb41">isDeadFunction</a>(arg->getParent()))</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  }</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span> }</div><div class="ttc" id="namespaceSVF_1_1LLVMUtil_html_ab775c1aeb5a4e2d18a96c6785d71cb41"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ab775c1aeb5a4e2d18a96c6785d71cb41">SVF::LLVMUtil::isDeadFunction</a></div><div class="ttdeci">bool isDeadFunction(const Function *fun)</div><div class="ttdoc">whether this is a function without any possible caller? </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00160">LLVMUtil.cpp:160</a></div></div>
|
|
1219
|
+
<div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00073">BasicTypes.h:73</a></div></div>
|
|
1220
|
+
<div class="ttc" id="namespaceSVF_html_a58cdfbc4160cae08745b67844ac29801"><div class="ttname"><a href="namespaceSVF.html#a58cdfbc4160cae08745b67844ac29801">SVF::Argument</a></div><div class="ttdeci">llvm::Argument Argument</div><div class="ttdoc">LLVM Aliases and constants. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00093">BasicTypes.h:93</a></div></div>
|
|
1221
|
+
</div><!-- fragment -->
|
|
1222
|
+
</div>
|
|
1223
|
+
</div>
|
|
1224
|
+
<a id="a832b1306f23e0f3db8cf5c0a35dc4561"></a>
|
|
1225
|
+
<h2 class="memtitle"><span class="permalink"><a href="#a832b1306f23e0f3db8cf5c0a35dc4561">◆ </a></span>isReturn()</h2>
|
|
1226
|
+
|
|
1227
|
+
<div class="memitem">
|
|
1228
|
+
<div class="memproto">
|
|
1229
|
+
<table class="mlabels">
|
|
1230
|
+
<tr>
|
|
1231
|
+
<td class="mlabels-left">
|
|
1232
|
+
<table class="memname">
|
|
1233
|
+
<tr>
|
|
1234
|
+
<td class="memname">bool SVF::LLVMUtil::isReturn </td>
|
|
1235
|
+
<td>(</td>
|
|
1236
|
+
<td class="paramtype">const <a class="el" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> * </td>
|
|
1237
|
+
<td class="paramname"><em>inst</em></td><td>)</td>
|
|
1238
|
+
<td></td>
|
|
1239
|
+
</tr>
|
|
1240
|
+
</table>
|
|
1241
|
+
</td>
|
|
1242
|
+
<td class="mlabels-right">
|
|
1243
|
+
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
|
|
1244
|
+
</tr>
|
|
1245
|
+
</table>
|
|
1246
|
+
</div><div class="memdoc">
|
|
1247
|
+
|
|
1248
|
+
<p>Whether an instruction is a return instruction. </p>
|
|
1249
|
+
|
|
1250
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00068">68</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
1251
|
+
<div class="fragment"><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> {</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keywordflow">return</span> SVFUtil::isa<ReturnInst>(inst);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> }</div></div><!-- fragment -->
|
|
1252
|
+
</div>
|
|
1253
|
+
</div>
|
|
1254
|
+
<a id="ae59b0dc7f29dbd2018e819f77465f66e"></a>
|
|
1255
|
+
<h2 class="memtitle"><span class="permalink"><a href="#ae59b0dc7f29dbd2018e819f77465f66e">◆ </a></span>isSelectConstantExpr()</h2>
|
|
1256
|
+
|
|
1257
|
+
<div class="memitem">
|
|
1258
|
+
<div class="memproto">
|
|
1259
|
+
<table class="mlabels">
|
|
1260
|
+
<tr>
|
|
1261
|
+
<td class="mlabels-left">
|
|
1262
|
+
<table class="memname">
|
|
1263
|
+
<tr>
|
|
1264
|
+
<td class="memname">const <a class="el" href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a>* SVF::LLVMUtil::isSelectConstantExpr </td>
|
|
1265
|
+
<td>(</td>
|
|
1266
|
+
<td class="paramtype">const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> * </td>
|
|
1267
|
+
<td class="paramname"><em>val</em></td><td>)</td>
|
|
1268
|
+
<td></td>
|
|
1269
|
+
</tr>
|
|
1270
|
+
</table>
|
|
1271
|
+
</td>
|
|
1272
|
+
<td class="mlabels-right">
|
|
1273
|
+
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
|
|
1274
|
+
</tr>
|
|
1275
|
+
</table>
|
|
1276
|
+
</div><div class="memdoc">
|
|
1277
|
+
|
|
1278
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00225">225</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
1279
|
+
<div class="fragment"><div class="line"><a name="l00226"></a><span class="lineno"> 226</span> {</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a>* constExpr = SVFUtil::dyn_cast<ConstantExpr>(val))</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  {</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <span class="keywordflow">if</span>(constExpr->getOpcode() == Instruction::Select)</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <span class="keywordflow">return</span> constExpr;</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  }</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span> }</div><div class="ttc" id="SVF-FE_2BasicTypes_8h_html_a60115de303225d173fb935cf7619a2cb"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a></div><div class="ttdeci">llvm::ConstantExpr ConstantExpr</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00057">BasicTypes.h:57</a></div></div>
|
|
1280
|
+
</div><!-- fragment -->
|
|
1281
|
+
</div>
|
|
1282
|
+
</div>
|
|
1283
|
+
<a id="a946a2b51b848c45c6c52f03581ee05b8"></a>
|
|
1284
|
+
<h2 class="memtitle"><span class="permalink"><a href="#a946a2b51b848c45c6c52f03581ee05b8">◆ </a></span>isTruncConstantExpr()</h2>
|
|
1285
|
+
|
|
1286
|
+
<div class="memitem">
|
|
1287
|
+
<div class="memproto">
|
|
1288
|
+
<table class="mlabels">
|
|
1289
|
+
<tr>
|
|
1290
|
+
<td class="mlabels-left">
|
|
1291
|
+
<table class="memname">
|
|
1292
|
+
<tr>
|
|
1293
|
+
<td class="memname">const <a class="el" href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a>* SVF::LLVMUtil::isTruncConstantExpr </td>
|
|
1294
|
+
<td>(</td>
|
|
1295
|
+
<td class="paramtype">const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> * </td>
|
|
1296
|
+
<td class="paramname"><em>val</em></td><td>)</td>
|
|
1297
|
+
<td></td>
|
|
1298
|
+
</tr>
|
|
1299
|
+
</table>
|
|
1300
|
+
</td>
|
|
1301
|
+
<td class="mlabels-right">
|
|
1302
|
+
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
|
|
1303
|
+
</tr>
|
|
1304
|
+
</table>
|
|
1305
|
+
</div><div class="memdoc">
|
|
1306
|
+
|
|
1307
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00235">235</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
1308
|
+
<div class="fragment"><div class="line"><a name="l00236"></a><span class="lineno"> 236</span> {</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a>* constExpr = SVFUtil::dyn_cast<ConstantExpr>(val))</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  {</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <span class="keywordflow">if</span>(constExpr->getOpcode() == Instruction::Trunc ||</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  constExpr->getOpcode() == Instruction::FPTrunc ||</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  constExpr->getOpcode() == Instruction::ZExt ||</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  constExpr->getOpcode() == Instruction::SExt ||</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  constExpr->getOpcode() == Instruction::FPExt)</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <span class="keywordflow">return</span> constExpr;</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  }</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span> }</div><div class="ttc" id="SVF-FE_2BasicTypes_8h_html_a60115de303225d173fb935cf7619a2cb"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a></div><div class="ttdeci">llvm::ConstantExpr ConstantExpr</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00057">BasicTypes.h:57</a></div></div>
|
|
1309
|
+
</div><!-- fragment -->
|
|
1310
|
+
</div>
|
|
1311
|
+
</div>
|
|
1312
|
+
<a id="a215cc9fd716798bbb7f96f5b64e01349"></a>
|
|
1313
|
+
<h2 class="memtitle"><span class="permalink"><a href="#a215cc9fd716798bbb7f96f5b64e01349">◆ </a></span>isUnaryConstantExpr()</h2>
|
|
1314
|
+
|
|
1315
|
+
<div class="memitem">
|
|
1316
|
+
<div class="memproto">
|
|
1317
|
+
<table class="mlabels">
|
|
1318
|
+
<tr>
|
|
1319
|
+
<td class="mlabels-left">
|
|
1320
|
+
<table class="memname">
|
|
1321
|
+
<tr>
|
|
1322
|
+
<td class="memname">const <a class="el" href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a>* SVF::LLVMUtil::isUnaryConstantExpr </td>
|
|
1323
|
+
<td>(</td>
|
|
1324
|
+
<td class="paramtype">const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> * </td>
|
|
1325
|
+
<td class="paramname"><em>val</em></td><td>)</td>
|
|
1326
|
+
<td></td>
|
|
1327
|
+
</tr>
|
|
1328
|
+
</table>
|
|
1329
|
+
</td>
|
|
1330
|
+
<td class="mlabels-right">
|
|
1331
|
+
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
|
|
1332
|
+
</tr>
|
|
1333
|
+
</table>
|
|
1334
|
+
</div><div class="memdoc">
|
|
1335
|
+
|
|
1336
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00269">269</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
1337
|
+
<div class="fragment"><div class="line"><a name="l00270"></a><span class="lineno"> 270</span> {</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a>* constExpr = SVFUtil::dyn_cast<ConstantExpr>(val))</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  {</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <span class="keywordflow">if</span>((constExpr->getOpcode() >= Instruction::UnaryOpsBegin) && (constExpr->getOpcode() <= Instruction::UnaryOpsEnd))</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <span class="keywordflow">return</span> constExpr;</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  }</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span> }</div><div class="ttc" id="SVF-FE_2BasicTypes_8h_html_a60115de303225d173fb935cf7619a2cb"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a></div><div class="ttdeci">llvm::ConstantExpr ConstantExpr</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00057">BasicTypes.h:57</a></div></div>
|
|
1338
|
+
</div><!-- fragment -->
|
|
1339
|
+
</div>
|
|
1340
|
+
</div>
|
|
1341
|
+
<a id="accdd44093d6d145dc92edeaaff3f5732"></a>
|
|
1342
|
+
<h2 class="memtitle"><span class="permalink"><a href="#accdd44093d6d145dc92edeaaff3f5732">◆ </a></span>processArguments()</h2>
|
|
1343
|
+
|
|
1344
|
+
<div class="memitem">
|
|
1345
|
+
<div class="memproto">
|
|
1346
|
+
<table class="memname">
|
|
1347
|
+
<tr>
|
|
1348
|
+
<td class="memname">void SVF::LLVMUtil::processArguments </td>
|
|
1349
|
+
<td>(</td>
|
|
1350
|
+
<td class="paramtype">int </td>
|
|
1351
|
+
<td class="paramname"><em>argc</em>, </td>
|
|
1352
|
+
</tr>
|
|
1353
|
+
<tr>
|
|
1354
|
+
<td class="paramkey"></td>
|
|
1355
|
+
<td></td>
|
|
1356
|
+
<td class="paramtype">char ** </td>
|
|
1357
|
+
<td class="paramname"><em>argv</em>, </td>
|
|
1358
|
+
</tr>
|
|
1359
|
+
<tr>
|
|
1360
|
+
<td class="paramkey"></td>
|
|
1361
|
+
<td></td>
|
|
1362
|
+
<td class="paramtype">int & </td>
|
|
1363
|
+
<td class="paramname"><em>arg_num</em>, </td>
|
|
1364
|
+
</tr>
|
|
1365
|
+
<tr>
|
|
1366
|
+
<td class="paramkey"></td>
|
|
1367
|
+
<td></td>
|
|
1368
|
+
<td class="paramtype">char ** </td>
|
|
1369
|
+
<td class="paramname"><em>arg_value</em>, </td>
|
|
1370
|
+
</tr>
|
|
1371
|
+
<tr>
|
|
1372
|
+
<td class="paramkey"></td>
|
|
1373
|
+
<td></td>
|
|
1374
|
+
<td class="paramtype">std::vector< std::string > & </td>
|
|
1375
|
+
<td class="paramname"><em>moduleNameVec</em> </td>
|
|
1376
|
+
</tr>
|
|
1377
|
+
<tr>
|
|
1378
|
+
<td></td>
|
|
1379
|
+
<td>)</td>
|
|
1380
|
+
<td></td><td></td>
|
|
1381
|
+
</tr>
|
|
1382
|
+
</table>
|
|
1383
|
+
</div><div class="memdoc">
|
|
1384
|
+
|
|
1385
|
+
<p>Parse argument for multi-module analysis. </p>
|
|
1386
|
+
<p>Get the names of all modules into a vector And process arguments </p>
|
|
1387
|
+
|
|
1388
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00427">427</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
1389
|
+
<div class="fragment"><div class="line"><a name="l00429"></a><span class="lineno"> 429</span> {</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  <span class="keywordtype">bool</span> first_ir_file = <span class="keyword">true</span>;</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < argc; ++i)</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  {</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  std::string argument(argv[i]);</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#ad8a8c32a09340f491fffffcb07dd7a41">LLVMUtil::isIRFile</a>(argument))</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  {</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  <span class="keywordflow">if</span> (find(moduleNameVec.begin(), moduleNameVec.end(), argument)</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  == moduleNameVec.end())</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  moduleNameVec.push_back(argument);</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  <span class="keywordflow">if</span> (first_ir_file)</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  {</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  arg_value[arg_num] = argv[i];</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  arg_num++;</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  first_ir_file = <span class="keyword">false</span>;</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  }</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  }</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  {</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  arg_value[arg_num] = argv[i];</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  arg_num++;</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  }</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  }</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span> }</div><div class="ttc" id="namespaceSVF_1_1LLVMUtil_html_ad8a8c32a09340f491fffffcb07dd7a41"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ad8a8c32a09340f491fffffcb07dd7a41">SVF::LLVMUtil::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#l00410">LLVMUtil.cpp:410</a></div></div>
|
|
1390
|
+
</div><!-- fragment -->
|
|
1391
|
+
</div>
|
|
1392
|
+
</div>
|
|
1393
|
+
<a id="a38ce45ae5f017c90115ce444b44d478c"></a>
|
|
1394
|
+
<h2 class="memtitle"><span class="permalink"><a href="#a38ce45ae5f017c90115ce444b44d478c">◆ </a></span>stripAllCasts()</h2>
|
|
1395
|
+
|
|
1396
|
+
<div class="memitem">
|
|
1397
|
+
<div class="memproto">
|
|
1398
|
+
<table class="memname">
|
|
1399
|
+
<tr>
|
|
1400
|
+
<td class="memname">const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> * SVF::LLVMUtil::stripAllCasts </td>
|
|
1401
|
+
<td>(</td>
|
|
1402
|
+
<td class="paramtype">const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> * </td>
|
|
1403
|
+
<td class="paramname"><em>val</em></td><td>)</td>
|
|
1404
|
+
<td></td>
|
|
1405
|
+
</tr>
|
|
1406
|
+
</table>
|
|
1407
|
+
</div><div class="memdoc">
|
|
1408
|
+
|
|
1409
|
+
<p>Strip off the all casts. </p>
|
|
1410
|
+
<p>Strip all casts </p>
|
|
1411
|
+
|
|
1412
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00226">226</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
1413
|
+
<div class="fragment"><div class="line"><a name="l00227"></a><span class="lineno"> 227</span> {</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <span class="keywordflow">while</span> (<span class="keyword">true</span>)</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  {</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#a20b13f90796ee748f58e6c5faa7c63da">CastInst</a> *ci = SVFUtil::dyn_cast<CastInst>(val))</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  {</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  val = ci->getOperand(0);</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  }</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a> *ce = SVFUtil::dyn_cast<ConstantExpr>(val))</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  {</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <span class="keywordflow">if</span>(ce->isCast())</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  val = ce->getOperand(0);</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <span class="keywordflow">return</span> val;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  }</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  {</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <span class="keywordflow">return</span> val;</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  }</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  }</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span> }</div><div class="ttc" id="SVF-FE_2BasicTypes_8h_html_a20b13f90796ee748f58e6c5faa7c63da"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#a20b13f90796ee748f58e6c5faa7c63da">CastInst</a></div><div class="ttdeci">llvm::CastInst CastInst</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00071">BasicTypes.h:71</a></div></div>
|
|
1414
|
+
<div class="ttc" id="SVF-FE_2BasicTypes_8h_html_a60115de303225d173fb935cf7619a2cb"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a></div><div class="ttdeci">llvm::ConstantExpr ConstantExpr</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00057">BasicTypes.h:57</a></div></div>
|
|
1415
|
+
</div><!-- fragment -->
|
|
1416
|
+
</div>
|
|
1417
|
+
</div>
|
|
1418
|
+
<a id="a07bd47ccfd02c5a2a6db26b537b2184f"></a>
|
|
1419
|
+
<h2 class="memtitle"><span class="permalink"><a href="#a07bd47ccfd02c5a2a6db26b537b2184f">◆ </a></span>stripConstantCasts()</h2>
|
|
1420
|
+
|
|
1421
|
+
<div class="memitem">
|
|
1422
|
+
<div class="memproto">
|
|
1423
|
+
<table class="memname">
|
|
1424
|
+
<tr>
|
|
1425
|
+
<td class="memname">const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> * SVF::LLVMUtil::stripConstantCasts </td>
|
|
1426
|
+
<td>(</td>
|
|
1427
|
+
<td class="paramtype">const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> * </td>
|
|
1428
|
+
<td class="paramname"><em>val</em></td><td>)</td>
|
|
1429
|
+
<td></td>
|
|
1430
|
+
</tr>
|
|
1431
|
+
</table>
|
|
1432
|
+
</div><div class="memdoc">
|
|
1433
|
+
|
|
1434
|
+
<p>Strip off the constant casts. </p>
|
|
1435
|
+
<p>Strip constant casts </p>
|
|
1436
|
+
|
|
1437
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00211">211</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
1438
|
+
<div class="fragment"><div class="line"><a name="l00212"></a><span class="lineno"> 212</span> {</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <span class="keywordflow">if</span> (SVFUtil::isa<GlobalValue>(val) || <a class="code" href="namespaceSVF_1_1LLVMUtil.html#adfa4a4e6d13004d14137d9168bd32463">isInt2PtrConstantExpr</a>(val))</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <span class="keywordflow">return</span> val;</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a> *CE = SVFUtil::dyn_cast<ConstantExpr>(val))</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  {</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <span class="keywordflow">if</span> (Instruction::isCast(CE->getOpcode()))</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a07bd47ccfd02c5a2a6db26b537b2184f">stripConstantCasts</a>(CE->getOperand(0));</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  }</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <span class="keywordflow">return</span> val;</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span> }</div><div class="ttc" id="SVF-FE_2BasicTypes_8h_html_a60115de303225d173fb935cf7619a2cb"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#a60115de303225d173fb935cf7619a2cb">ConstantExpr</a></div><div class="ttdeci">llvm::ConstantExpr ConstantExpr</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00057">BasicTypes.h:57</a></div></div>
|
|
1439
|
+
<div class="ttc" id="namespaceSVF_1_1LLVMUtil_html_a07bd47ccfd02c5a2a6db26b537b2184f"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a07bd47ccfd02c5a2a6db26b537b2184f">SVF::LLVMUtil::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#l00211">LLVMUtil.cpp:211</a></div></div>
|
|
1440
|
+
<div class="ttc" id="namespaceSVF_1_1LLVMUtil_html_adfa4a4e6d13004d14137d9168bd32463"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#adfa4a4e6d13004d14137d9168bd32463">SVF::LLVMUtil::isInt2PtrConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isInt2PtrConstantExpr(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00195">LLVMUtil.h:195</a></div></div>
|
|
1441
|
+
</div><!-- fragment -->
|
|
1442
|
+
</div>
|
|
1443
|
+
</div>
|
|
1444
|
+
</div><!-- contents -->
|
|
1445
|
+
<!-- start footer part -->
|
|
1446
|
+
<hr class="footer"/><address class="footer"><small>
|
|
1447
|
+
Generated by  <a href="http://www.doxygen.org/index.html">
|
|
1448
|
+
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
|
1449
|
+
</a> 1.8.13
|
|
1450
|
+
</small></address>
|
|
1451
|
+
</body>
|
|
1452
|
+
</html>
|