svf-tools 1.0.611 → 1.0.613
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/SVFIR2ItvExeState_8cpp.html +1 -0
- package/SVF-doxygen/html/html/SVFIR2ItvExeState_8cpp_source.html +21 -19
- package/SVF-doxygen/html/html/SVFIR2ItvExeState_8h_source.html +28 -28
- package/SVF-doxygen/html/html/SVFIR2Relation_8cpp.html +80 -0
- package/SVF-doxygen/html/html/SVFIR2Relation_8cpp_source.html +115 -0
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR2ItvExeState-members.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR2ItvExeState.html +170 -88
- package/SVF-doxygen/html/html/dir_90956dbb2b4fce09f1890e5e77e2f49b.html +2 -0
- package/SVF-doxygen/html/html/files.html +1 -0
- package/SVF-doxygen/html/html/functions_func_t.html +9 -9
- package/SVF-doxygen/html/html/functions_t.html +9 -9
- package/SVF-doxygen/html/html/search/all_12.js +1 -0
- package/SVF-doxygen/html/html/search/all_13.js +9 -9
- package/SVF-doxygen/html/html/search/files_e.js +1 -0
- package/SVF-doxygen/html/html/search/functions_12.js +9 -9
- package/lib/AbstractExecution/SVFIR2ItvExeState.cpp +7 -1
- package/lib/AbstractExecution/SVFIR2Relation.cpp +192 -0
- package/package.json +1 -1
|
@@ -0,0 +1,115 @@
|
|
|
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: /home/runner/work/SVF/SVF/lib/AbstractExecution/SVFIR2Relation.cpp Source File</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="dir_97aefd0d527b934f1d99a682da8fe6a9.html">lib</a></li><li class="navelem"><a class="el" href="dir_90956dbb2b4fce09f1890e5e77e2f49b.html">AbstractExecution</a></li> </ul>
|
|
62
|
+
</div>
|
|
63
|
+
</div><!-- top -->
|
|
64
|
+
<div class="header">
|
|
65
|
+
<div class="headertitle">
|
|
66
|
+
<div class="title">SVFIR2Relation.cpp</div> </div>
|
|
67
|
+
</div><!--header-->
|
|
68
|
+
<div class="contents">
|
|
69
|
+
<a href="SVFIR2Relation_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// Created by Xiao on 2022/8/18.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">//</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> </div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="preprocessor">#include "<a class="code" href="SVFIR2ItvExeState_8h.html">AbstractExecution/SVFIR2ItvExeState.h</a>"</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> </div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="keyword">using namespace </span><a class="code" href="namespaceSVF.html">SVF</a>;</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="keyword">using namespace </span><a class="code" href="namespaceSVFUtil.html">SVFUtil</a>;</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> </div><div class="line"><a name="l00010"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR2ItvExeState.html#aca887785abc037c61cca1eaad9613339"> 10</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#aca887785abc037c61cca1eaad9613339">SVFIR2ItvExeState::translateBinaryRel</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html">BinaryOPStmt</a> *binary)</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> {</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>  <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> op0 = binary-><a class="code" href="classSVF_1_1MultiOpndStmt.html#a5c6efcc023e90ef2e618586091958c59">getOpVarID</a>(0);</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>  <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> op1 = binary-><a class="code" href="classSVF_1_1MultiOpndStmt.html#a5c6efcc023e90ef2e618586091958c59">getOpVarID</a>(1);</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>  <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> res = binary-><a class="code" href="classSVF_1_1MultiOpndStmt.html#a71a530eb9fa9f7e273e471b4a75a039e">getResID</a>();</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>  <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a> &rel_res = _relEs[res];</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a> &rel_value0 = _relEs.toZ3Expr(op0);</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a> &rel_value1 = _relEs.toZ3Expr(op1);</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>  <span class="keywordflow">switch</span> (binary-><a class="code" href="classSVF_1_1BinaryOPStmt.html#ad0a7c5e87355d7a83176343322db448f">getOpcode</a>())</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>  {</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>  <span class="keywordflow">case</span> BinaryOperator::Add:</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>  {</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>  rel_res = rel_value0 + rel_value1;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  }</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  <span class="keywordflow">case</span> BinaryOperator::Sub:</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  {</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  rel_res = rel_value0 - rel_value1;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  }</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keywordflow">case</span> BinaryOperator::Mul:</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  {</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  rel_res = rel_value0 * rel_value1;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  }</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keywordflow">case</span> BinaryOperator::SDiv:</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  rel_res = rel_value0 / rel_value1;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  }</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordflow">case</span> BinaryOperator::SRem:</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keywordflow">case</span> BinaryOperator::Xor:</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordflow">case</span> BinaryOperator::And:</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordflow">case</span> BinaryOperator::Or:</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordflow">case</span> BinaryOperator::AShr:</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordflow">case</span> BinaryOperator::Shl:</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keywordflow">default</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>  assert(<span class="keyword">false</span> && <span class="stringliteral">"implement this part"</span>);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  abort();</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  }</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> }</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR2ItvExeState.html#a89e3c835e16459e8b90e4a67127fa5da"> 60</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#a89e3c835e16459e8b90e4a67127fa5da">SVFIR2ItvExeState::translateCmpRel</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CmpStmt.html">CmpStmt</a> *cmp)</div><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>  <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> op0 = cmp-><a class="code" href="classSVF_1_1MultiOpndStmt.html#a5c6efcc023e90ef2e618586091958c59">getOpVarID</a>(0);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> op1 = cmp-><a class="code" href="classSVF_1_1MultiOpndStmt.html#a5c6efcc023e90ef2e618586091958c59">getOpVarID</a>(1);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> res_id = cmp-><a class="code" href="classSVF_1_1MultiOpndStmt.html#a71a530eb9fa9f7e273e471b4a75a039e">getResID</a>();</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> predicate = cmp-><a class="code" href="classSVF_1_1CmpStmt.html#aa6a21fb1cfbc263bb38651176c495632">getPredicate</a>();</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a> &rel_res = _relEs[res_id];</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a> &rel_value0 = _relEs.toZ3Expr(op0);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a> &rel_value1 = _relEs.toZ3Expr(op1);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keywordflow">switch</span> (predicate)</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  {</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keywordflow">case</span> CmpInst::ICMP_EQ:</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>  rel_res = ite(rel_value0 == rel_value1, 1, 0);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  }</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keywordflow">case</span> CmpInst::ICMP_NE:</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  rel_res = ite(rel_value0 != rel_value1, 1, 0);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  }</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordflow">case</span> CmpInst::ICMP_UGT:</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keywordflow">case</span> CmpInst::ICMP_SGT:</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>  rel_res = ite(rel_value0 > rel_value1, 1, 0);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordflow">break</span>;</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>  <span class="keywordflow">case</span> CmpInst::ICMP_UGE:</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keywordflow">case</span> CmpInst::ICMP_SGE:</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  {</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  rel_res = ite(rel_value0 >= rel_value1, 1, 0);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  }</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keywordflow">case</span> CmpInst::ICMP_ULT:</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keywordflow">case</span> CmpInst::ICMP_SLT:</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>  rel_res = ite(rel_value0 < rel_value1, 1, 0);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordflow">break</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>  <span class="keywordflow">case</span> CmpInst::ICMP_ULE:</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keywordflow">case</span> CmpInst::ICMP_SLE:</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  {</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  rel_res = ite(rel_value0 <= rel_value1, 1, 0);</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  }</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  assert(<span class="keyword">false</span> && <span class="stringliteral">"implement this part"</span>);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  abort();</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> }</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> </div><div class="line"><a name="l00111"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR2ItvExeState.html#a3d9eeed61b6ef79b65c5c52c9ae82c04"> 111</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#a3d9eeed61b6ef79b65c5c52c9ae82c04">SVFIR2ItvExeState::translateLoadRel</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a> *load)</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> {</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> rhs = load-><a class="code" href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d">getRHSVarID</a>();</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> lhs = load-><a class="code" href="classSVF_1_1AssignStmt.html#a98f731be7be9bc8e7fd09f5c2204c840">getLHSVarID</a>();</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  _relEs[lhs] = _relEs.load(<a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a>((<span class="keywordtype">int</span>) _es[rhs].lb().getNumeral()));</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"><a class="line" href="classSVF_1_1SVFIR2ItvExeState.html#ac57d2a609c1159b4f653965eadce58cc"> 118</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#ac57d2a609c1159b4f653965eadce58cc">SVFIR2ItvExeState::translateStoreRel</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1StoreStmt.html">StoreStmt</a> *store)</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> {</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> rhs = store-><a class="code" href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d">getRHSVarID</a>();</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> lhs = store-><a class="code" href="classSVF_1_1AssignStmt.html#a98f731be7be9bc8e7fd09f5c2204c840">getLHSVarID</a>();</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  assert(_es[lhs].is_numeral() && <span class="stringliteral">"loc not numeral?"</span>);</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  _relEs.store(<a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a>((<span class="keywordtype">int</span>) _es[lhs].lb().getNumeral()), _relEs.toZ3Expr(rhs));</div><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> </div><div class="line"><a name="l00127"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR2ItvExeState.html#a9a971203ef834c8e8591fc745ae5a17d"> 127</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#a9a971203ef834c8e8591fc745ae5a17d">SVFIR2ItvExeState::translateCopyRel</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CopyStmt.html">CopyStmt</a> *<a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a>)</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> {</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> rhs = copy-><a class="code" href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d">getRHSVarID</a>();</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> lhs = copy-><a class="code" href="classSVF_1_1AssignStmt.html#a98f731be7be9bc8e7fd09f5c2204c840">getLHSVarID</a>();</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  _relEs[lhs] = _relEs.toZ3Expr(rhs);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> }</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> </div><div class="line"><a name="l00134"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR2ItvExeState.html#a4a5e92df30da02bdb396fc6daad591fb"> 134</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#a4a5e92df30da02bdb396fc6daad591fb">SVFIR2ItvExeState::translateSelectRel</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SelectStmt.html">SelectStmt</a> *select)</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>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> res = select-><a class="code" href="classSVF_1_1MultiOpndStmt.html#a71a530eb9fa9f7e273e471b4a75a039e">getResID</a>();</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> tval = select-><a class="code" href="classSVF_1_1SelectStmt.html#a537c03b08444da34c26b9e989bb0e568">getTrueValue</a>()-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> fval = select-><a class="code" href="classSVF_1_1SelectStmt.html#af64d7855e352a0afb5d2e98a8622a4ad">getFalseValue</a>()-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> cond = select-><a class="code" href="classSVF_1_1SelectStmt.html#ad4c3e9529176478bb726279a76050e8c">getCondition</a>()-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keywordflow">if</span> (_es[cond].is_numeral())</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  {</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  _relEs[res] = _es[cond].is_zero() ? _relEs.toZ3Expr(fval) : _relEs.toZ3Expr(tval);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  }</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  {</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> </div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  }</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span> }</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> </div><div class="line"><a name="l00150"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR2ItvExeState.html#af7b5bc422efbdfdf2f440209a695bded"> 150</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#af7b5bc422efbdfdf2f440209a695bded">SVFIR2ItvExeState::translatePhiRel</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PhiStmt.html">PhiStmt</a> *phi, <span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a> *srcNode,</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="keyword">const</span> std::vector<const ICFGEdge *> &path)</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> {</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> res = phi-><a class="code" href="classSVF_1_1MultiOpndStmt.html#a71a530eb9fa9f7e273e471b4a75a039e">getResID</a>();</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  std::unordered_map<const ICFGNode *, NodeID> candidate_ids;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i < phi-><a class="code" href="classSVF_1_1MultiOpndStmt.html#af300571886b7aa2d84b0a70851c99bc3">getOpVarNum</a>(); i++)</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  {</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  candidate_ids[phi-><a class="code" href="classSVF_1_1PhiStmt.html#a0b97394bc1946c0185d2c11fbc2181f4">getOpICFGNode</a>(i)] = phi-><a class="code" href="classSVF_1_1MultiOpndStmt.html#a5c6efcc023e90ef2e618586091958c59">getOpVarID</a>(i);</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  }</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = path.end() - 1; it != path.begin(); --it)</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  {</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="keyword">auto</span> cur_node = (*it)->getDstNode();</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="keywordflow">if</span> (candidate_ids.find(cur_node) != candidate_ids.end())</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  {</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keywordflow">if</span> (_es.getVarToVal().find(res) == _es.getVarToVal().end())</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  {</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  _relEs[res] = _relEs.toZ3Expr(candidate_ids[cur_node]);</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">else</span></div><div class="line"><a name="l00169"></a><span class="lineno"> 169</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>  }</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  }</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  }</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  assert(<span class="keyword">false</span> && <span class="stringliteral">"predecessor ICFGNode of this PhiStmt not found?"</span>);</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> }</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span> </div><div class="line"><a name="l00178"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR2ItvExeState.html#a2b03588d7d74af8818ddac6596a0f384"> 178</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#a2b03588d7d74af8818ddac6596a0f384">SVFIR2ItvExeState::translateCallRel</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallPE.html">CallPE</a> *callPE)</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span> {</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> rhs = callPE-><a class="code" href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d">getRHSVarID</a>();</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> lhs = callPE-><a class="code" href="classSVF_1_1AssignStmt.html#a98f731be7be9bc8e7fd09f5c2204c840">getLHSVarID</a>();</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  _relEs[lhs] = _relEs.toZ3Expr(rhs);</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> }</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> </div><div class="line"><a name="l00185"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR2ItvExeState.html#a8a20d2bafff92a5b8983a1566ed598d6"> 185</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#a8a20d2bafff92a5b8983a1566ed598d6">SVFIR2ItvExeState::translateRetRel</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1RetPE.html">RetPE</a> *retPE)</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>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> lhs = retPE-><a class="code" href="classSVF_1_1AssignStmt.html#a98f731be7be9bc8e7fd09f5c2204c840">getLHSVarID</a>();</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> rhs = retPE-><a class="code" href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d">getRHSVarID</a>();</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  _relEs[lhs] = _relEs.toZ3Expr(rhs);</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> }</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> </div><div class="ttc" id="classSVF_1_1RetPE_html"><div class="ttname"><a href="classSVF_1_1RetPE.html">SVF::RetPE</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00545">SVFStatements.h:545</a></div></div>
|
|
70
|
+
<div class="ttc" id="classSVF_1_1SVFIR2ItvExeState_html_af7b5bc422efbdfdf2f440209a695bded"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html#af7b5bc422efbdfdf2f440209a695bded">SVF::SVFIR2ItvExeState::translatePhiRel</a></div><div class="ttdeci">void translatePhiRel(const PhiStmt *phi, const ICFGNode *srcNode, const std::vector< const ICFGEdge *> &path)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2Relation_8cpp_source.html#l00150">SVFIR2Relation.cpp:150</a></div></div>
|
|
71
|
+
<div class="ttc" id="namespaceSVF_html_a350ae9bf8606bdfe23c8679681b969dc"><div class="ttname"><a href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="include_2MTA_2MTAResultValidator_8h_source.html#l00020">MTAResultValidator.h:20</a></div></div>
|
|
72
|
+
<div class="ttc" id="classSVF_1_1SVFIR2ItvExeState_html_a8a20d2bafff92a5b8983a1566ed598d6"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html#a8a20d2bafff92a5b8983a1566ed598d6">SVF::SVFIR2ItvExeState::translateRetRel</a></div><div class="ttdeci">void translateRetRel(const RetPE *retPE)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2Relation_8cpp_source.html#l00185">SVFIR2Relation.cpp:185</a></div></div>
|
|
73
|
+
<div class="ttc" id="classSVF_1_1SelectStmt_html_af64d7855e352a0afb5d2e98a8622a4ad"><div class="ttname"><a href="classSVF_1_1SelectStmt.html#af64d7855e352a0afb5d2e98a8622a4ad">SVF::SelectStmt::getFalseValue</a></div><div class="ttdeci">const SVFVar * getFalseValue() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00785">SVFStatements.h:785</a></div></div>
|
|
74
|
+
<div class="ttc" id="classSVF_1_1CmpStmt_html_aa6a21fb1cfbc263bb38651176c495632"><div class="ttname"><a href="classSVF_1_1CmpStmt.html#aa6a21fb1cfbc263bb38651176c495632">SVF::CmpStmt::getPredicate</a></div><div class="ttdeci">u32_t getPredicate() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00829">SVFStatements.h:829</a></div></div>
|
|
75
|
+
<div class="ttc" id="classSVF_1_1SVFIR2ItvExeState_html_a2b03588d7d74af8818ddac6596a0f384"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html#a2b03588d7d74af8818ddac6596a0f384">SVF::SVFIR2ItvExeState::translateCallRel</a></div><div class="ttdeci">void translateCallRel(const CallPE *callPE)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2Relation_8cpp_source.html#l00178">SVFIR2Relation.cpp:178</a></div></div>
|
|
76
|
+
<div class="ttc" id="classSVF_1_1SVFIR2ItvExeState_html_a3d9eeed61b6ef79b65c5c52c9ae82c04"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html#a3d9eeed61b6ef79b65c5c52c9ae82c04">SVF::SVFIR2ItvExeState::translateLoadRel</a></div><div class="ttdeci">void translateLoadRel(const LoadStmt *load)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2Relation_8cpp_source.html#l00111">SVFIR2Relation.cpp:111</a></div></div>
|
|
77
|
+
<div class="ttc" id="classSVF_1_1AssignStmt_html_a4cec89489e82c60c287cae3327f3f01d"><div class="ttname"><a href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d">SVF::AssignStmt::getRHSVarID</a></div><div class="ttdeci">NodeID getRHSVarID() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00261">SVFStatements.h:261</a></div></div>
|
|
78
|
+
<div class="ttc" id="classSVF_1_1Z3Expr_html"><div class="ttname"><a href="classSVF_1_1Z3Expr.html">SVF::Z3Expr</a></div><div class="ttdef"><b>Definition:</b> <a href="Z3Expr_8h_source.html#l00038">Z3Expr.h:38</a></div></div>
|
|
79
|
+
<div class="ttc" id="classSVF_1_1SVFIR2ItvExeState_html_a89e3c835e16459e8b90e4a67127fa5da"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html#a89e3c835e16459e8b90e4a67127fa5da">SVF::SVFIR2ItvExeState::translateCmpRel</a></div><div class="ttdeci">void translateCmpRel(const CmpStmt *cmp)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2Relation_8cpp_source.html#l00060">SVFIR2Relation.cpp:60</a></div></div>
|
|
80
|
+
<div class="ttc" id="classSVF_1_1ICFGNode_html"><div class="ttname"><a href="classSVF_1_1ICFGNode.html">SVF::ICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00054">ICFGNode.h:54</a></div></div>
|
|
81
|
+
<div class="ttc" id="classSVF_1_1SelectStmt_html_ad4c3e9529176478bb726279a76050e8c"><div class="ttname"><a href="classSVF_1_1SelectStmt.html#ad4c3e9529176478bb726279a76050e8c">SVF::SelectStmt::getCondition</a></div><div class="ttdeci">const SVFVar * getCondition() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00777">SVFStatements.h:777</a></div></div>
|
|
82
|
+
<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="SVFType_8h_source.html#l00050">SVFType.h:50</a></div></div>
|
|
83
|
+
<div class="ttc" id="SVFIR2ItvExeState_8h_html"><div class="ttname"><a href="SVFIR2ItvExeState_8h.html">SVFIR2ItvExeState.h</a></div></div>
|
|
84
|
+
<div class="ttc" id="classSVF_1_1CallPE_html"><div class="ttname"><a href="classSVF_1_1CallPE.html">SVF::CallPE</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00488">SVFStatements.h:488</a></div></div>
|
|
85
|
+
<div class="ttc" id="classSVF_1_1SVFIR2ItvExeState_html_aca887785abc037c61cca1eaad9613339"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html#aca887785abc037c61cca1eaad9613339">SVF::SVFIR2ItvExeState::translateBinaryRel</a></div><div class="ttdeci">void translateBinaryRel(const BinaryOPStmt *binary)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2Relation_8cpp_source.html#l00010">SVFIR2Relation.cpp:10</a></div></div>
|
|
86
|
+
<div class="ttc" id="classSVF_1_1BinaryOPStmt_html_ad0a7c5e87355d7a83176343322db448f"><div class="ttname"><a href="classSVF_1_1BinaryOPStmt.html#ad0a7c5e87355d7a83176343322db448f">SVF::BinaryOPStmt::getOpcode</a></div><div class="ttdeci">u32_t getOpcode() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00876">SVFStatements.h:876</a></div></div>
|
|
87
|
+
<div class="ttc" id="namespaceSVFUtil_html"><div class="ttname"><a href="namespaceSVFUtil.html">SVFUtil</a></div></div>
|
|
88
|
+
<div class="ttc" id="classSVF_1_1LoadStmt_html"><div class="ttname"><a href="classSVF_1_1LoadStmt.html">SVF::LoadStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00383">SVFStatements.h:383</a></div></div>
|
|
89
|
+
<div class="ttc" id="classSVF_1_1PhiStmt_html"><div class="ttname"><a href="classSVF_1_1PhiStmt.html">SVF::PhiStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00681">SVFStatements.h:681</a></div></div>
|
|
90
|
+
<div class="ttc" id="classSVF_1_1AssignStmt_html_a98f731be7be9bc8e7fd09f5c2204c840"><div class="ttname"><a href="classSVF_1_1AssignStmt.html#a98f731be7be9bc8e7fd09f5c2204c840">SVF::AssignStmt::getLHSVarID</a></div><div class="ttdeci">NodeID getLHSVarID() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00265">SVFStatements.h:265</a></div></div>
|
|
91
|
+
<div class="ttc" id="classSVF_1_1PhiStmt_html_a0b97394bc1946c0185d2c11fbc2181f4"><div class="ttname"><a href="classSVF_1_1PhiStmt.html#a0b97394bc1946c0185d2c11fbc2181f4">SVF::PhiStmt::getOpICFGNode</a></div><div class="ttdeci">const ICFGNode * getOpICFGNode(u32_t op_idx) const</div><div class="ttdoc">Return the corresponding ICFGNode of this operand. </div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00726">SVFStatements.h:726</a></div></div>
|
|
92
|
+
<div class="ttc" id="classSVF_1_1MultiOpndStmt_html_af300571886b7aa2d84b0a70851c99bc3"><div class="ttname"><a href="classSVF_1_1MultiOpndStmt.html#af300571886b7aa2d84b0a70851c99bc3">SVF::MultiOpndStmt::getOpVarNum</a></div><div class="ttdeci">u32_t getOpVarNum() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00658">SVFStatements.h:658</a></div></div>
|
|
93
|
+
<div class="ttc" id="classSVF_1_1CmpStmt_html"><div class="ttname"><a href="classSVF_1_1CmpStmt.html">SVF::CmpStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00794">SVFStatements.h:794</a></div></div>
|
|
94
|
+
<div class="ttc" id="namespaceSVF_html"><div class="ttname"><a href="namespaceSVF.html">SVF</a></div><div class="ttdoc">for isBitcode </div><div class="ttdef"><b>Definition:</b> <a href="AbstractValue_8h_source.html#l00037">AbstractValue.h:37</a></div></div>
|
|
95
|
+
<div class="ttc" id="classSVF_1_1SVFIR2ItvExeState_html_a9a971203ef834c8e8591fc745ae5a17d"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html#a9a971203ef834c8e8591fc745ae5a17d">SVF::SVFIR2ItvExeState::translateCopyRel</a></div><div class="ttdeci">void translateCopyRel(const CopyStmt *copy)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2Relation_8cpp_source.html#l00127">SVFIR2Relation.cpp:127</a></div></div>
|
|
96
|
+
<div class="ttc" id="classSVF_1_1GenericNode_html_ac3e55ef37aefb411ea4c87b1aa3b1895"><div class="ttname"><a href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">SVF::GenericNode::getId</a></div><div class="ttdeci">NodeID getId() const</div><div class="ttdoc">Get ID. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00171">GenericGraph.h:171</a></div></div>
|
|
97
|
+
<div class="ttc" id="classSVF_1_1SelectStmt_html_a537c03b08444da34c26b9e989bb0e568"><div class="ttname"><a href="classSVF_1_1SelectStmt.html#a537c03b08444da34c26b9e989bb0e568">SVF::SelectStmt::getTrueValue</a></div><div class="ttdeci">const SVFVar * getTrueValue() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00781">SVFStatements.h:781</a></div></div>
|
|
98
|
+
<div class="ttc" id="classSVF_1_1StoreStmt_html"><div class="ttname"><a href="classSVF_1_1StoreStmt.html">SVF::StoreStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00346">SVFStatements.h:346</a></div></div>
|
|
99
|
+
<div class="ttc" id="cJSON_8cpp_html_a7669ee67a0563250c1efaa24d130e1ac"><div class="ttname"><a href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a></div><div class="ttdeci">copy</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l00414">cJSON.cpp:414</a></div></div>
|
|
100
|
+
<div class="ttc" id="classSVF_1_1MultiOpndStmt_html_a71a530eb9fa9f7e273e471b4a75a039e"><div class="ttname"><a href="classSVF_1_1MultiOpndStmt.html#a71a530eb9fa9f7e273e471b4a75a039e">SVF::MultiOpndStmt::getResID</a></div><div class="ttdeci">NodeID getResID() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8cpp_source.html#l00287">SVFStatements.cpp:287</a></div></div>
|
|
101
|
+
<div class="ttc" id="classSVF_1_1SVFIR2ItvExeState_html_ac57d2a609c1159b4f653965eadce58cc"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html#ac57d2a609c1159b4f653965eadce58cc">SVF::SVFIR2ItvExeState::translateStoreRel</a></div><div class="ttdeci">void translateStoreRel(const StoreStmt *store)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2Relation_8cpp_source.html#l00118">SVFIR2Relation.cpp:118</a></div></div>
|
|
102
|
+
<div class="ttc" id="classSVF_1_1BinaryOPStmt_html"><div class="ttname"><a href="classSVF_1_1BinaryOPStmt.html">SVF::BinaryOPStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00841">SVFStatements.h:841</a></div></div>
|
|
103
|
+
<div class="ttc" id="classSVF_1_1SelectStmt_html"><div class="ttname"><a href="classSVF_1_1SelectStmt.html">SVF::SelectStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00741">SVFStatements.h:741</a></div></div>
|
|
104
|
+
<div class="ttc" id="classSVF_1_1SVFIR2ItvExeState_html_a4a5e92df30da02bdb396fc6daad591fb"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html#a4a5e92df30da02bdb396fc6daad591fb">SVF::SVFIR2ItvExeState::translateSelectRel</a></div><div class="ttdeci">void translateSelectRel(const SelectStmt *select)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2Relation_8cpp_source.html#l00134">SVFIR2Relation.cpp:134</a></div></div>
|
|
105
|
+
<div class="ttc" id="classSVF_1_1CopyStmt_html"><div class="ttname"><a href="classSVF_1_1CopyStmt.html">SVF::CopyStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00312">SVFStatements.h:312</a></div></div>
|
|
106
|
+
<div class="ttc" id="classSVF_1_1MultiOpndStmt_html_a5c6efcc023e90ef2e618586091958c59"><div class="ttname"><a href="classSVF_1_1MultiOpndStmt.html#a5c6efcc023e90ef2e618586091958c59">SVF::MultiOpndStmt::getOpVarID</a></div><div class="ttdeci">NodeID getOpVarID(u32_t pos) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8cpp_source.html#l00282">SVFStatements.cpp:282</a></div></div>
|
|
107
|
+
</div><!-- fragment --></div><!-- contents -->
|
|
108
|
+
<!-- start footer part -->
|
|
109
|
+
<hr class="footer"/><address class="footer"><small>
|
|
110
|
+
Generated by  <a href="http://www.doxygen.org/index.html">
|
|
111
|
+
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
|
112
|
+
</a> 1.8.13
|
|
113
|
+
</small></address>
|
|
114
|
+
</body>
|
|
115
|
+
</html>
|
|
@@ -96,24 +96,24 @@ $(function() {
|
|
|
96
96
|
<tr class="even"><td class="entry"><a class="el" href="classSVF_1_1SVFIR2ItvExeState.html#a3c9285321cc0c4e1c46a31be9433192f">SVFIR2ItvExeState</a>(SVFIR *ir)</td><td class="entry"><a class="el" href="classSVF_1_1SVFIR2ItvExeState.html">SVF::SVFIR2ItvExeState</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
|
97
97
|
<tr><td class="entry"><a class="el" href="classSVF_1_1SVFIR2ItvExeState.html#af7f42ee51b03b1aaaee18f10eec0c2b9">translateAddr</a>(const AddrStmt *addr)</td><td class="entry"><a class="el" href="classSVF_1_1SVFIR2ItvExeState.html">SVF::SVFIR2ItvExeState</a></td><td class="entry"></td></tr>
|
|
98
98
|
<tr class="even"><td class="entry"><a class="el" href="classSVF_1_1SVFIR2ItvExeState.html#a449ee8f244120866037c7f6d2ee5fc13">translateBinary</a>(const BinaryOPStmt *binary)</td><td class="entry"><a class="el" href="classSVF_1_1SVFIR2ItvExeState.html">SVF::SVFIR2ItvExeState</a></td><td class="entry"></td></tr>
|
|
99
|
-
<tr><td class="entry"><a class="el" href="classSVF_1_1SVFIR2ItvExeState.html#
|
|
99
|
+
<tr><td class="entry"><a class="el" href="classSVF_1_1SVFIR2ItvExeState.html#aca887785abc037c61cca1eaad9613339">translateBinaryRel</a>(const BinaryOPStmt *binary)</td><td class="entry"><a class="el" href="classSVF_1_1SVFIR2ItvExeState.html">SVF::SVFIR2ItvExeState</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
|
|
100
100
|
<tr class="even"><td class="entry"><a class="el" href="classSVF_1_1SVFIR2ItvExeState.html#adb82778157e0f5e7a2ea4d803bcd07ad">translateCall</a>(const CallPE *callPE)</td><td class="entry"><a class="el" href="classSVF_1_1SVFIR2ItvExeState.html">SVF::SVFIR2ItvExeState</a></td><td class="entry"></td></tr>
|
|
101
|
-
<tr><td class="entry"><a class="el" href="classSVF_1_1SVFIR2ItvExeState.html#
|
|
101
|
+
<tr><td class="entry"><a class="el" href="classSVF_1_1SVFIR2ItvExeState.html#a2b03588d7d74af8818ddac6596a0f384">translateCallRel</a>(const CallPE *callPE)</td><td class="entry"><a class="el" href="classSVF_1_1SVFIR2ItvExeState.html">SVF::SVFIR2ItvExeState</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
|
|
102
102
|
<tr class="even"><td class="entry"><a class="el" href="classSVF_1_1SVFIR2ItvExeState.html#aac5cc8767eb750bf121f1897788dee24">translateCmp</a>(const CmpStmt *cmp)</td><td class="entry"><a class="el" href="classSVF_1_1SVFIR2ItvExeState.html">SVF::SVFIR2ItvExeState</a></td><td class="entry"></td></tr>
|
|
103
|
-
<tr><td class="entry"><a class="el" href="classSVF_1_1SVFIR2ItvExeState.html#
|
|
103
|
+
<tr><td class="entry"><a class="el" href="classSVF_1_1SVFIR2ItvExeState.html#a89e3c835e16459e8b90e4a67127fa5da">translateCmpRel</a>(const CmpStmt *cmp)</td><td class="entry"><a class="el" href="classSVF_1_1SVFIR2ItvExeState.html">SVF::SVFIR2ItvExeState</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
|
|
104
104
|
<tr class="even"><td class="entry"><a class="el" href="classSVF_1_1SVFIR2ItvExeState.html#afcf2f81101f1b9580d82b5c2efb83999">translateCopy</a>(const CopyStmt *copy)</td><td class="entry"><a class="el" href="classSVF_1_1SVFIR2ItvExeState.html">SVF::SVFIR2ItvExeState</a></td><td class="entry"></td></tr>
|
|
105
|
-
<tr><td class="entry"><a class="el" href="classSVF_1_1SVFIR2ItvExeState.html#
|
|
105
|
+
<tr><td class="entry"><a class="el" href="classSVF_1_1SVFIR2ItvExeState.html#a9a971203ef834c8e8591fc745ae5a17d">translateCopyRel</a>(const CopyStmt *copy)</td><td class="entry"><a class="el" href="classSVF_1_1SVFIR2ItvExeState.html">SVF::SVFIR2ItvExeState</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
|
|
106
106
|
<tr class="even"><td class="entry"><a class="el" href="classSVF_1_1SVFIR2ItvExeState.html#aa274b5b4e18c28ec8035ca1b073aacfc">translateGep</a>(const GepStmt *gep)</td><td class="entry"><a class="el" href="classSVF_1_1SVFIR2ItvExeState.html">SVF::SVFIR2ItvExeState</a></td><td class="entry"></td></tr>
|
|
107
107
|
<tr><td class="entry"><a class="el" href="classSVF_1_1SVFIR2ItvExeState.html#a8f2a564370d9b9fb05e139c45eeaba68">translateLoad</a>(const LoadStmt *load)</td><td class="entry"><a class="el" href="classSVF_1_1SVFIR2ItvExeState.html">SVF::SVFIR2ItvExeState</a></td><td class="entry"></td></tr>
|
|
108
|
-
<tr class="even"><td class="entry"><a class="el" href="classSVF_1_1SVFIR2ItvExeState.html#
|
|
108
|
+
<tr class="even"><td class="entry"><a class="el" href="classSVF_1_1SVFIR2ItvExeState.html#a3d9eeed61b6ef79b65c5c52c9ae82c04">translateLoadRel</a>(const LoadStmt *load)</td><td class="entry"><a class="el" href="classSVF_1_1SVFIR2ItvExeState.html">SVF::SVFIR2ItvExeState</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
|
|
109
109
|
<tr><td class="entry"><a class="el" href="classSVF_1_1SVFIR2ItvExeState.html#ae00e5398cbeb9aa1cfc464da4250a91e">translatePhi</a>(const PhiStmt *phi)</td><td class="entry"><a class="el" href="classSVF_1_1SVFIR2ItvExeState.html">SVF::SVFIR2ItvExeState</a></td><td class="entry"></td></tr>
|
|
110
|
-
<tr class="even"><td class="entry"><a class="el" href="classSVF_1_1SVFIR2ItvExeState.html#
|
|
110
|
+
<tr class="even"><td class="entry"><a class="el" href="classSVF_1_1SVFIR2ItvExeState.html#af7b5bc422efbdfdf2f440209a695bded">translatePhiRel</a>(const PhiStmt *phi, const ICFGNode *srcNode, const std::vector< const ICFGEdge *> &path)</td><td class="entry"><a class="el" href="classSVF_1_1SVFIR2ItvExeState.html">SVF::SVFIR2ItvExeState</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
|
|
111
111
|
<tr><td class="entry"><a class="el" href="classSVF_1_1SVFIR2ItvExeState.html#a31e299f91eed29d1a8db3b884d57d1dc">translateRet</a>(const RetPE *retPE)</td><td class="entry"><a class="el" href="classSVF_1_1SVFIR2ItvExeState.html">SVF::SVFIR2ItvExeState</a></td><td class="entry"></td></tr>
|
|
112
|
-
<tr class="even"><td class="entry"><a class="el" href="classSVF_1_1SVFIR2ItvExeState.html#
|
|
112
|
+
<tr class="even"><td class="entry"><a class="el" href="classSVF_1_1SVFIR2ItvExeState.html#a8a20d2bafff92a5b8983a1566ed598d6">translateRetRel</a>(const RetPE *retPE)</td><td class="entry"><a class="el" href="classSVF_1_1SVFIR2ItvExeState.html">SVF::SVFIR2ItvExeState</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
|
|
113
113
|
<tr><td class="entry"><a class="el" href="classSVF_1_1SVFIR2ItvExeState.html#a604126e59364cb56b44a88cae5afbfb8">translateSelect</a>(const SelectStmt *select)</td><td class="entry"><a class="el" href="classSVF_1_1SVFIR2ItvExeState.html">SVF::SVFIR2ItvExeState</a></td><td class="entry"></td></tr>
|
|
114
|
-
<tr class="even"><td class="entry"><a class="el" href="classSVF_1_1SVFIR2ItvExeState.html#
|
|
114
|
+
<tr class="even"><td class="entry"><a class="el" href="classSVF_1_1SVFIR2ItvExeState.html#a4a5e92df30da02bdb396fc6daad591fb">translateSelectRel</a>(const SelectStmt *select)</td><td class="entry"><a class="el" href="classSVF_1_1SVFIR2ItvExeState.html">SVF::SVFIR2ItvExeState</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
|
|
115
115
|
<tr><td class="entry"><a class="el" href="classSVF_1_1SVFIR2ItvExeState.html#aed2e41879bae8389c49e69356b7aaac5">translateStore</a>(const StoreStmt *store)</td><td class="entry"><a class="el" href="classSVF_1_1SVFIR2ItvExeState.html">SVF::SVFIR2ItvExeState</a></td><td class="entry"></td></tr>
|
|
116
|
-
<tr class="even"><td class="entry"><a class="el" href="classSVF_1_1SVFIR2ItvExeState.html#
|
|
116
|
+
<tr class="even"><td class="entry"><a class="el" href="classSVF_1_1SVFIR2ItvExeState.html#ac57d2a609c1159b4f653965eadce58cc">translateStoreRel</a>(const StoreStmt *store)</td><td class="entry"><a class="el" href="classSVF_1_1SVFIR2ItvExeState.html">SVF::SVFIR2ItvExeState</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
|
|
117
117
|
<tr><td class="entry"><a class="el" href="classSVF_1_1SVFIR2ItvExeState.html#a2b6de5a37851f83ed3fa8f69145148a8">VAddrs</a> typedef</td><td class="entry"><a class="el" href="classSVF_1_1SVFIR2ItvExeState.html">SVF::SVFIR2ItvExeState</a></td><td class="entry"></td></tr>
|
|
118
118
|
</table></div><!-- contents -->
|
|
119
119
|
<!-- start footer part -->
|