svf-tools 1.0.811 → 1.0.812
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/AccessPath_8cpp_source.html +159 -136
- package/SVF-doxygen/html/AccessPath_8h_source.html +45 -42
- package/SVF-doxygen/html/ConsG_8cpp_source.html +8 -8
- package/SVF-doxygen/html/ContextDDA_8cpp_source.html +1 -1
- package/SVF-doxygen/html/FlowDDA_8cpp_source.html +1 -1
- package/SVF-doxygen/html/FlowSensitive_8cpp_source.html +1 -1
- package/SVF-doxygen/html/ICFGEdge_8h_source.html +2 -2
- package/SVF-doxygen/html/ICFG_8cpp_source.html +2 -2
- package/SVF-doxygen/html/IRGraph_8cpp_source.html +2 -2
- package/SVF-doxygen/html/PAGBuilderFromFile_8cpp_source.html +2 -2
- package/SVF-doxygen/html/SVFFileSystem_8cpp_source.html +13 -13
- package/SVF-doxygen/html/SVFFileSystem_8h_source.html +11 -11
- package/SVF-doxygen/html/SVFIR2ConsExeState_8cpp_source.html +241 -240
- package/SVF-doxygen/html/SVFIR2ConsExeState_8h_source.html +10 -10
- package/SVF-doxygen/html/SVFIR2ItvExeState_8cpp_source.html +983 -964
- package/SVF-doxygen/html/SVFIR2ItvExeState_8h_source.html +155 -157
- package/SVF-doxygen/html/SVFIR2Relation_8cpp_source.html +33 -33
- package/SVF-doxygen/html/SVFIRBuilder_8cpp_source.html +4 -4
- package/SVF-doxygen/html/SVFIRBuilder_8h_source.html +11 -11
- package/SVF-doxygen/html/SVFIR_8cpp_source.html +14 -14
- package/SVF-doxygen/html/SVFIR_8h_source.html +11 -11
- package/SVF-doxygen/html/SVFStatements_8cpp_source.html +19 -19
- package/SVF-doxygen/html/SVFStatements_8h_source.html +829 -830
- package/SVF-doxygen/html/SaberCondAllocator_8cpp_source.html +7 -7
- package/SVF-doxygen/html/SaberCondAllocator_8h_source.html +2 -2
- package/SVF-doxygen/html/VFGNode_8h_source.html +7 -7
- package/SVF-doxygen/html/VFG_8cpp_source.html +15 -15
- package/SVF-doxygen/html/VFG_8h_source.html +10 -10
- package/SVF-doxygen/html/classSVF_1_1AccessPath-members.html +18 -17
- package/SVF-doxygen/html/classSVF_1_1AccessPath.html +206 -153
- package/SVF-doxygen/html/classSVF_1_1BinaryOPStmt.html +68 -68
- package/SVF-doxygen/html/classSVF_1_1BranchStmt.html +51 -51
- package/SVF-doxygen/html/classSVF_1_1BranchVFGNode.html +3 -3
- package/SVF-doxygen/html/classSVF_1_1CallPE.html +35 -35
- package/SVF-doxygen/html/classSVF_1_1CmpStmt.html +97 -97
- package/SVF-doxygen/html/classSVF_1_1ConstraintGraph.html +8 -8
- package/SVF-doxygen/html/classSVF_1_1ContextDDA.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1FlowDDA.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1FlowSensitive.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1GepStmt-members.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1GepStmt.html +37 -37
- package/SVF-doxygen/html/classSVF_1_1ICFG.html +2 -2
- package/SVF-doxygen/html/classSVF_1_1MultiOpndStmt.html +48 -48
- package/SVF-doxygen/html/classSVF_1_1PAGBuilderFromFile.html +2 -2
- package/SVF-doxygen/html/classSVF_1_1PhiStmt.html +46 -46
- package/SVF-doxygen/html/classSVF_1_1RetPE.html +35 -35
- package/SVF-doxygen/html/classSVF_1_1SVFIR.html +13 -13
- package/SVF-doxygen/html/classSVF_1_1SVFIR2ConsExeState.html +230 -229
- package/SVF-doxygen/html/classSVF_1_1SVFIR2ItvExeState-members.html +45 -46
- package/SVF-doxygen/html/classSVF_1_1SVFIR2ItvExeState.html +1008 -1049
- package/SVF-doxygen/html/classSVF_1_1SVFIRBuilder.html +4 -4
- package/SVF-doxygen/html/classSVF_1_1SVFIRReader.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1SVFIRWriter.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1SaberCondAllocator.html +7 -7
- package/SVF-doxygen/html/classSVF_1_1SelectStmt.html +38 -38
- package/SVF-doxygen/html/classSVF_1_1TDForkPE.html +22 -22
- package/SVF-doxygen/html/classSVF_1_1TDJoinPE.html +21 -21
- package/SVF-doxygen/html/classSVF_1_1UnaryOPStmt.html +44 -44
- package/SVF-doxygen/html/classSVF_1_1VFG.html +15 -15
- package/SVF-doxygen/html/functions_func_g.html +25 -23
- package/SVF-doxygen/html/functions_func_i.html +1 -1
- package/SVF-doxygen/html/functions_func_p.html +1 -1
- package/SVF-doxygen/html/functions_g.html +21 -19
- package/SVF-doxygen/html/functions_i.html +17 -14
- package/SVF-doxygen/html/functions_o.html +16 -17
- package/SVF-doxygen/html/functions_p.html +9 -9
- package/SVF-doxygen/html/functions_r.html +4 -2
- package/SVF-doxygen/html/functions_s.html +13 -17
- package/SVF-doxygen/html/functions_t.html +3 -3
- package/SVF-doxygen/html/functions_type_i.html +4 -4
- package/SVF-doxygen/html/functions_v.html +3 -3
- package/SVF-doxygen/html/functions_vars_i.html +3 -0
- package/SVF-doxygen/html/functions_vars_o.html +0 -3
- package/SVF-doxygen/html/functions_w.html +8 -8
- package/SVF-doxygen/html/search/all_10.js +7 -7
- package/SVF-doxygen/html/search/all_11.js +2 -2
- package/SVF-doxygen/html/search/all_12.js +9 -9
- package/SVF-doxygen/html/search/all_13.js +2 -2
- package/SVF-doxygen/html/search/all_15.js +2 -2
- package/SVF-doxygen/html/search/all_16.js +1 -1
- package/SVF-doxygen/html/search/all_7.js +678 -677
- package/SVF-doxygen/html/search/all_8.js +197 -197
- package/SVF-doxygen/html/search/all_9.js +612 -612
- package/SVF-doxygen/html/search/all_a.js +46 -46
- package/SVF-doxygen/html/search/all_b.js +26 -26
- package/SVF-doxygen/html/search/all_c.js +116 -116
- package/SVF-doxygen/html/search/all_d.js +196 -196
- package/SVF-doxygen/html/search/all_e.js +207 -207
- package/SVF-doxygen/html/search/all_f.js +15 -16
- package/SVF-doxygen/html/search/defines_0.js +3 -3
- package/SVF-doxygen/html/search/defines_1.js +2 -2
- package/SVF-doxygen/html/search/defines_2.js +30 -30
- package/SVF-doxygen/html/search/defines_3.js +21 -21
- package/SVF-doxygen/html/search/defines_4.js +2 -2
- package/SVF-doxygen/html/search/defines_5.js +4 -4
- package/SVF-doxygen/html/search/defines_6.js +2 -2
- package/SVF-doxygen/html/search/defines_7.js +5 -5
- package/SVF-doxygen/html/search/defines_8.js +11 -11
- package/SVF-doxygen/html/search/defines_9.js +9 -9
- package/SVF-doxygen/html/search/defines_a.js +2 -2
- package/SVF-doxygen/html/search/defines_b.js +1 -1
- package/SVF-doxygen/html/search/defines_c.js +3 -3
- package/SVF-doxygen/html/search/defines_d.js +2 -2
- package/SVF-doxygen/html/search/defines_e.js +7 -7
- package/SVF-doxygen/html/search/defines_f.js +3 -3
- package/SVF-doxygen/html/search/enums_0.js +3 -3
- package/SVF-doxygen/html/search/enums_1.js +2 -2
- package/SVF-doxygen/html/search/enums_10.js +1 -1
- package/SVF-doxygen/html/search/enums_11.js +1 -1
- package/SVF-doxygen/html/search/enums_2.js +8 -8
- package/SVF-doxygen/html/search/enums_3.js +1 -1
- package/SVF-doxygen/html/search/enums_4.js +3 -3
- package/SVF-doxygen/html/search/enums_5.js +1 -1
- package/SVF-doxygen/html/search/enums_6.js +2 -2
- package/SVF-doxygen/html/search/enums_7.js +2 -2
- package/SVF-doxygen/html/search/enums_8.js +4 -4
- package/SVF-doxygen/html/search/enums_9.js +1 -1
- package/SVF-doxygen/html/search/enums_a.js +1 -1
- package/SVF-doxygen/html/search/enums_b.js +7 -7
- package/SVF-doxygen/html/search/enums_c.js +1 -1
- package/SVF-doxygen/html/search/enums_d.js +4 -4
- package/SVF-doxygen/html/search/enums_e.js +2 -2
- package/SVF-doxygen/html/search/enums_f.js +4 -4
- package/SVF-doxygen/html/search/enumvalues_0.js +14 -14
- package/SVF-doxygen/html/search/enumvalues_1.js +14 -14
- package/SVF-doxygen/html/search/enumvalues_10.js +35 -35
- package/SVF-doxygen/html/search/enumvalues_11.js +3 -3
- package/SVF-doxygen/html/search/enumvalues_12.js +10 -10
- package/SVF-doxygen/html/search/enumvalues_13.js +1 -1
- package/SVF-doxygen/html/search/enumvalues_14.js +1 -1
- package/SVF-doxygen/html/search/enumvalues_15.js +3 -3
- package/SVF-doxygen/html/search/enumvalues_2.js +36 -36
- package/SVF-doxygen/html/search/enumvalues_3.js +13 -13
- package/SVF-doxygen/html/search/enumvalues_4.js +2 -2
- package/SVF-doxygen/html/search/enumvalues_5.js +47 -47
- package/SVF-doxygen/html/search/enumvalues_6.js +6 -6
- package/SVF-doxygen/html/search/enumvalues_7.js +9 -9
- package/SVF-doxygen/html/search/enumvalues_8.js +23 -23
- package/SVF-doxygen/html/search/enumvalues_9.js +6 -6
- package/SVF-doxygen/html/search/enumvalues_a.js +15 -15
- package/SVF-doxygen/html/search/enumvalues_b.js +11 -11
- package/SVF-doxygen/html/search/enumvalues_c.js +5 -5
- package/SVF-doxygen/html/search/enumvalues_d.js +18 -18
- package/SVF-doxygen/html/search/enumvalues_e.js +9 -9
- package/SVF-doxygen/html/search/enumvalues_f.js +45 -45
- package/SVF-doxygen/html/search/functions_10.js +140 -140
- package/SVF-doxygen/html/search/functions_11.js +138 -138
- package/SVF-doxygen/html/search/functions_12.js +279 -279
- package/SVF-doxygen/html/search/functions_13.js +59 -59
- package/SVF-doxygen/html/search/functions_14.js +39 -39
- package/SVF-doxygen/html/search/functions_15.js +71 -71
- package/SVF-doxygen/html/search/functions_16.js +32 -32
- package/SVF-doxygen/html/search/functions_17.js +3 -3
- package/SVF-doxygen/html/search/functions_18.js +172 -172
- package/SVF-doxygen/html/search/functions_7.js +634 -633
- package/SVF-doxygen/html/search/functions_8.js +149 -149
- package/SVF-doxygen/html/search/functions_9.js +428 -428
- package/SVF-doxygen/html/search/functions_a.js +30 -30
- package/SVF-doxygen/html/search/functions_b.js +2 -2
- package/SVF-doxygen/html/search/functions_c.js +26 -26
- package/SVF-doxygen/html/search/functions_d.js +77 -77
- package/SVF-doxygen/html/search/functions_e.js +35 -35
- package/SVF-doxygen/html/search/functions_f.js +56 -56
- package/SVF-doxygen/html/search/related_0.js +2 -2
- package/SVF-doxygen/html/search/related_1.js +2 -2
- package/SVF-doxygen/html/search/related_2.js +2 -2
- package/SVF-doxygen/html/search/related_3.js +2 -2
- package/SVF-doxygen/html/search/related_4.js +2 -2
- package/SVF-doxygen/html/search/related_5.js +1 -1
- package/SVF-doxygen/html/search/related_6.js +2 -2
- package/SVF-doxygen/html/search/related_7.js +4 -4
- package/SVF-doxygen/html/search/related_8.js +2 -2
- package/SVF-doxygen/html/search/related_9.js +4 -4
- package/SVF-doxygen/html/search/related_a.js +19 -19
- package/SVF-doxygen/html/search/related_b.js +4 -4
- package/SVF-doxygen/html/search/related_c.js +1 -1
- package/SVF-doxygen/html/search/related_d.js +12 -12
- package/SVF-doxygen/html/search/related_e.js +2 -2
- package/SVF-doxygen/html/search/related_f.js +2 -2
- package/SVF-doxygen/html/search/typedefs_0.js +18 -18
- package/SVF-doxygen/html/search/typedefs_1.js +26 -26
- package/SVF-doxygen/html/search/typedefs_10.js +61 -61
- package/SVF-doxygen/html/search/typedefs_11.js +13 -13
- package/SVF-doxygen/html/search/typedefs_12.js +11 -11
- package/SVF-doxygen/html/search/typedefs_13.js +34 -34
- package/SVF-doxygen/html/search/typedefs_14.js +8 -8
- package/SVF-doxygen/html/search/typedefs_2.js +129 -129
- package/SVF-doxygen/html/search/typedefs_3.js +39 -39
- package/SVF-doxygen/html/search/typedefs_4.js +17 -17
- package/SVF-doxygen/html/search/typedefs_5.js +41 -41
- package/SVF-doxygen/html/search/typedefs_6.js +55 -55
- package/SVF-doxygen/html/search/typedefs_7.js +44 -44
- package/SVF-doxygen/html/search/typedefs_8.js +1 -1
- package/SVF-doxygen/html/search/typedefs_9.js +6 -6
- package/SVF-doxygen/html/search/typedefs_a.js +29 -29
- package/SVF-doxygen/html/search/typedefs_b.js +29 -29
- package/SVF-doxygen/html/search/typedefs_c.js +41 -41
- package/SVF-doxygen/html/search/typedefs_d.js +14 -14
- package/SVF-doxygen/html/search/typedefs_e.js +52 -52
- package/SVF-doxygen/html/search/typedefs_f.js +14 -14
- package/SVF-doxygen/html/search/variables_0.js +151 -151
- package/SVF-doxygen/html/search/variables_1.js +75 -75
- package/SVF-doxygen/html/search/variables_10.js +97 -97
- package/SVF-doxygen/html/search/variables_11.js +44 -44
- package/SVF-doxygen/html/search/variables_12.js +92 -92
- package/SVF-doxygen/html/search/variables_13.js +75 -75
- package/SVF-doxygen/html/search/variables_14.js +14 -14
- package/SVF-doxygen/html/search/variables_15.js +48 -48
- package/SVF-doxygen/html/search/variables_16.js +9 -9
- package/SVF-doxygen/html/search/variables_17.js +1 -1
- package/SVF-doxygen/html/search/variables_18.js +2 -2
- package/SVF-doxygen/html/search/variables_2.js +38 -38
- package/SVF-doxygen/html/search/variables_3.js +142 -142
- package/SVF-doxygen/html/search/variables_4.js +55 -55
- package/SVF-doxygen/html/search/variables_5.js +37 -37
- package/SVF-doxygen/html/search/variables_6.js +66 -66
- package/SVF-doxygen/html/search/variables_7.js +33 -33
- package/SVF-doxygen/html/search/variables_8.js +7 -7
- package/SVF-doxygen/html/search/variables_9.js +78 -77
- package/SVF-doxygen/html/search/variables_a.js +4 -4
- package/SVF-doxygen/html/search/variables_b.js +10 -10
- package/SVF-doxygen/html/search/variables_c.js +45 -45
- package/SVF-doxygen/html/search/variables_d.js +56 -56
- package/SVF-doxygen/html/search/variables_e.js +123 -123
- package/SVF-doxygen/html/search/variables_f.js +29 -30
- package/SVF-doxygen/html/structSVF_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +2 -2
- package/SVF-doxygen/html/structstd_1_1hash_3_01SVF_1_1AccessPath_01_4.html +9 -9
- package/SVF-doxygen/html/svf-ex_8cpp.html +17 -17
- package/SVF-doxygen/html/svf-ex_8cpp_source.html +17 -17
- package/package.json +1 -1
- package/svf/include/AbstractExecution/SVFIR2ItvExeState.h +2 -5
- package/svf/include/MemoryModel/AccessPath.h +13 -11
- package/svf/include/SVFIR/SVFStatements.h +2 -3
- package/svf/lib/AbstractExecution/SVFIR2ConsExeState.cpp +2 -1
- package/svf/lib/AbstractExecution/SVFIR2ItvExeState.cpp +193 -195
- package/svf/lib/MemoryModel/AccessPath.cpp +39 -17
- package/svf/lib/SVFIR/SVFFileSystem.cpp +2 -2
|
@@ -109,13 +109,13 @@ $(function() {
|
|
|
109
109
|
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  </div>
|
|
110
110
|
<div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="classSVF_1_1AccessPath.html#a2358a8194b5e2c4bcbb5218dee7fcbcd"> 42</a></span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1AccessPath.html#a2358a8194b5e2c4bcbb5218dee7fcbcd">AccessPath::addOffsetVarAndGepTypePair</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* var, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* gepIterType)</div>
|
|
111
111
|
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span> {</div>
|
|
112
|
-
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span> 
|
|
112
|
+
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  idxOperandPairs.emplace_back(var, gepIterType);</div>
|
|
113
113
|
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
|
114
114
|
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span> }</div>
|
|
115
115
|
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  </div>
|
|
116
116
|
<div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="classSVF_1_1AccessPath.html#a403312192a96a9fd5e7d071481592a7f"> 49</a></span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1AccessPath.html#a403312192a96a9fd5e7d071481592a7f">AccessPath::isConstantOffset</a>()<span class="keyword"> const</span></div>
|
|
117
117
|
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="keyword"></span>{</div>
|
|
118
|
-
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it :
|
|
118
|
+
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it : idxOperandPairs)</div>
|
|
119
119
|
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  {</div>
|
|
120
120
|
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordflow">if</span>(SVFUtil::isa<SVFConstantInt>(it.first->getValue()) == <span class="keyword">false</span>)</div>
|
|
121
121
|
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
@@ -154,11 +154,11 @@ $(function() {
|
|
|
154
154
|
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  assert(isConstantOffset() && <span class="stringliteral">"not a constant offset"</span>);</div>
|
|
155
155
|
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  </div>
|
|
156
156
|
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <a class="code" href="namespaceSVF.html#a5c4820681ef340339ddded756eb82ae1">APOffset</a> totalConstOffset = 0;</div>
|
|
157
|
-
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i =
|
|
157
|
+
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = idxOperandPairs.size() - 1; i >= 0; i--)</div>
|
|
158
158
|
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  {</div>
|
|
159
159
|
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="comment">// (2) %arrayidx = getelementptr inbounds [10 x i8], [10 x i8]* %b, i64 0, i64 8</span></div>
|
|
160
|
-
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* value =
|
|
161
|
-
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> =
|
|
160
|
+
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* value = idxOperandPairs[i].first->getValue();</div>
|
|
161
|
+
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> = idxOperandPairs[i].second;</div>
|
|
162
162
|
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  assert(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> && <span class="stringliteral">"this GepStmt comes from ExternalAPI cannot call this api"</span>);</div>
|
|
163
163
|
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* type2 = <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>;</div>
|
|
164
164
|
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFArrayType.html">SVFArrayType</a>* arrType = SVFUtil::dyn_cast<SVFArrayType>(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>))</div>
|
|
@@ -189,131 +189,152 @@ $(function() {
|
|
|
189
189
|
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="keywordflow">return</span> totalConstOffset;</div>
|
|
190
190
|
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span> }</div>
|
|
191
191
|
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  </div>
|
|
192
|
-
<div class="line"><a name="
|
|
193
|
-
<div class="line"><a name="
|
|
194
|
-
<div class="line"><a name="
|
|
195
|
-
<div class="line"><a name="
|
|
196
|
-
<div class="line"><a name="
|
|
197
|
-
<div class="line"><a name="
|
|
198
|
-
<div class="line"><a name="
|
|
199
|
-
<div class="line"><a name="
|
|
200
|
-
<div class="line"><a name="
|
|
201
|
-
<div class="line"><a name="
|
|
202
|
-
<div class="line"><a name="
|
|
203
|
-
<div class="line"><a name="
|
|
204
|
-
<div class="line"><a name="
|
|
205
|
-
<div class="line"><a name="
|
|
206
|
-
<div class="line"><a name="
|
|
207
|
-
<div class="line"><a name="
|
|
208
|
-
<div class="line"><a name="
|
|
209
|
-
<div class="line"><a name="
|
|
210
|
-
<div class="line"><a name="
|
|
211
|
-
<div class="line"><a name="
|
|
212
|
-
<div class="line"><a name="
|
|
213
|
-
<div class="line"><a name="
|
|
214
|
-
<div class="line"><a name="
|
|
215
|
-
<div class="line"><a name="
|
|
216
|
-
<div class="line"><a name="
|
|
217
|
-
<div class="line"><a name="
|
|
218
|
-
<div class="line"><a name="
|
|
219
|
-
<div class="line"><a name="
|
|
220
|
-
<div class="line"><a name="
|
|
221
|
-
<div class="line"><a name="
|
|
222
|
-
<div class="line"><a name="
|
|
223
|
-
<div class="line"><a name="
|
|
224
|
-
<div class="line"><a name="
|
|
225
|
-
<div class="line"><a name="
|
|
226
|
-
<div class="line"><a name="
|
|
227
|
-
<div class="line"><a name="
|
|
228
|
-
<div class="line"><a name="
|
|
229
|
-
<div class="line"><a name="
|
|
230
|
-
<div class="line"><a name="
|
|
231
|
-
<div class="line"><a name="
|
|
232
|
-
<div class="line"><a name="
|
|
233
|
-
<div class="line"><a name="
|
|
234
|
-
<div class="line"><a name="
|
|
235
|
-
<div class="line"><a name="
|
|
236
|
-
<div class="line"><a name="
|
|
237
|
-
<div class="line"><a name="
|
|
238
|
-
<div class="line"><a name="
|
|
239
|
-
<div class="line"><a name="
|
|
240
|
-
<div class="line"><a name="
|
|
241
|
-
<div class="line"><a name="
|
|
242
|
-
<div class="line"><a name="
|
|
243
|
-
<div class="line"><a name="
|
|
244
|
-
<div class="line"><a name="
|
|
245
|
-
<div class="line"><a name="
|
|
246
|
-
<div class="line"><a name="
|
|
247
|
-
<div class="line"><a name="
|
|
248
|
-
<div class="line"><a name="
|
|
249
|
-
<div class="line"><a name="
|
|
250
|
-
<div class="line"><a name="
|
|
251
|
-
<div class="line"><a name="
|
|
252
|
-
<div class="line"><a name="
|
|
253
|
-
<div class="line"><a name="
|
|
254
|
-
<div class="line"><a name="
|
|
255
|
-
<div class="line"><a name="
|
|
256
|
-
<div class="line"><a name="
|
|
257
|
-
<div class="line"><a name="
|
|
258
|
-
<div class="line"><a name="
|
|
259
|
-
<div class="line"><a name="
|
|
260
|
-
<div class="line"><a name="
|
|
261
|
-
<div class="line"><a name="
|
|
262
|
-
<div class="line"><a name="
|
|
263
|
-
<div class="line"><a name="
|
|
264
|
-
<div class="line"><a name="
|
|
265
|
-
<div class="line"><a name="
|
|
266
|
-
<div class="line"><a name="
|
|
267
|
-
<div class="line"><a name="
|
|
268
|
-
<div class="line"><a name="
|
|
269
|
-
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <span class="keywordflow">return</span> (*it) < (*rhsIt);</div>
|
|
270
|
-
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  }</div>
|
|
192
|
+
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span> <span class="comment">// e.g. idxOperandVar: i32 2 idxOperandType: %struct.Student = type { i32, [i8 x 12], i32 }</span></div>
|
|
193
|
+
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span> <span class="comment">// we accumulate field 0 (i32) byte size (4 Bytes), and field 1 ([i8x12]) byte size (12 Bytes)</span></div>
|
|
194
|
+
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span> <span class="comment">// then the return byte offset is 16 Bytes.</span></div>
|
|
195
|
+
<div class="line"><a name="l00162"></a><span class="lineno"><a class="line" href="classSVF_1_1AccessPath.html#a1f279344b4061838d7b3498631bc907c"> 162</a></span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1AccessPath.html#a1f279344b4061838d7b3498631bc907c">AccessPath::getStructFieldOffset</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* idxOperandVar, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStructType.html">SVFStructType</a>* idxOperandType)<span class="keyword"> const</span></div>
|
|
196
|
+
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span> <span class="keyword"></span>{</div>
|
|
197
|
+
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* idxValue = idxOperandVar-><a class="code" href="classSVF_1_1SVFVar.html#ac2db6304ea5526fb446ae882983beeb0">getValue</a>();</div>
|
|
198
|
+
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> structByteOffset = 0;</div>
|
|
199
|
+
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFConstantInt.html">SVFConstantInt</a> *op = SVFUtil::dyn_cast<SVFConstantInt>(idxValue))</div>
|
|
200
|
+
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  {</div>
|
|
201
|
+
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> structField = 0; structField < (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>)op->getSExtValue(); ++structField)</div>
|
|
202
|
+
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  {</div>
|
|
203
|
+
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> flattenIdx = idxOperandType-><a class="code" href="classSVF_1_1SVFType.html#a05850c17c2dbe42e5602dc8c9a70f3bd">getTypeInfo</a>()-><a class="code" href="classSVF_1_1StInfo.html#aaf05447c20c9f90eea64ab6e88d6ab05">getFlattenedFieldIdxVec</a>()[structField];</div>
|
|
204
|
+
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  structByteOffset += idxOperandType-><a class="code" href="classSVF_1_1SVFType.html#a05850c17c2dbe42e5602dc8c9a70f3bd">getTypeInfo</a>()-><a class="code" href="classSVF_1_1StInfo.html#a055697f565cb9d73b41110090fe50159">getOriginalElemType</a>(flattenIdx)-><a class="code" href="classSVF_1_1SVFType.html#a95b8031f1e15d49c7d68628be1d05aae">getByteSize</a>();</div>
|
|
205
|
+
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  }</div>
|
|
206
|
+
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="keywordflow">return</span> structByteOffset;</div>
|
|
207
|
+
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  }</div>
|
|
208
|
+
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="keywordflow">else</span></div>
|
|
209
|
+
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  assert(<span class="keyword">false</span> && <span class="stringliteral">"struct type can only pair with constant idx"</span>);</div>
|
|
210
|
+
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span> }</div>
|
|
211
|
+
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  </div>
|
|
212
|
+
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  </div>
|
|
213
|
+
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span> <span class="comment">// struct inner{ int rollNumber; float percentage;};</span></div>
|
|
214
|
+
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span> <span class="comment">// struct Student { struct inner rollNumber; char studentName[10][3];}</span></div>
|
|
215
|
+
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span> <span class="comment">// char x = studentRecord[1].studentName[3][2];</span></div>
|
|
216
|
+
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  </div>
|
|
217
|
+
<div class="line"><a name="l00207"></a><span class="lineno"><a class="line" href="classSVF_1_1AccessPath.html#ae746362c42da05a641ae062658e40651"> 207</a></span> <a class="code" href="namespaceSVF.html#a5c4820681ef340339ddded756eb82ae1">APOffset</a> <a class="code" href="classSVF_1_1AccessPath.html#ae746362c42da05a641ae062658e40651">AccessPath::computeConstantOffset</a>()<span class="keyword"> const</span></div>
|
|
218
|
+
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span> <span class="keyword"></span>{</div>
|
|
219
|
+
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  </div>
|
|
220
|
+
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  assert(isConstantOffset() && <span class="stringliteral">"not a constant offset"</span>);</div>
|
|
221
|
+
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  </div>
|
|
222
|
+
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <span class="keywordflow">if</span>(idxOperandPairs.empty())</div>
|
|
223
|
+
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <span class="keywordflow">return</span> getConstantFieldIdx();</div>
|
|
224
|
+
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  </div>
|
|
225
|
+
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <a class="code" href="namespaceSVF.html#a5c4820681ef340339ddded756eb82ae1">APOffset</a> totalConstOffset = 0;</div>
|
|
226
|
+
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = idxOperandPairs.size() - 1; i >= 0; i--)</div>
|
|
227
|
+
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  {</div>
|
|
228
|
+
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* value = idxOperandPairs[i].first->getValue();</div>
|
|
229
|
+
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> = idxOperandPairs[i].second;</div>
|
|
230
|
+
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFConstantInt.html">SVFConstantInt</a>* op = SVFUtil::dyn_cast<SVFConstantInt>(value);</div>
|
|
231
|
+
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  assert(op && <span class="stringliteral">"not a constant offset?"</span>);</div>
|
|
232
|
+
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <span class="keywordflow">if</span>(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>==<span class="keyword">nullptr</span>)</div>
|
|
233
|
+
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  {</div>
|
|
234
|
+
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  totalConstOffset += op-><a class="code" href="classSVF_1_1SVFConstantInt.html#a73f04bdfc19261b65164b98787bc2ed4">getSExtValue</a>();</div>
|
|
235
|
+
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="keywordflow">continue</span>;</div>
|
|
236
|
+
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  }</div>
|
|
237
|
+
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  </div>
|
|
238
|
+
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFPointerType.html">SVFPointerType</a>* pty = SVFUtil::dyn_cast<SVFPointerType>(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>))</div>
|
|
239
|
+
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  totalConstOffset += op-><a class="code" href="classSVF_1_1SVFConstantInt.html#a73f04bdfc19261b65164b98787bc2ed4">getSExtValue</a>() * getElementNum(pty->getPtrElementType());</div>
|
|
240
|
+
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <span class="keywordflow">else</span></div>
|
|
241
|
+
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  {</div>
|
|
242
|
+
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <a class="code" href="namespaceSVF.html#a5c4820681ef340339ddded756eb82ae1">APOffset</a> <a class="code" href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a> = op-><a class="code" href="classSVF_1_1SVFConstantInt.html#a73f04bdfc19261b65164b98787bc2ed4">getSExtValue</a>();</div>
|
|
243
|
+
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <span class="keywordflow">if</span> (<a class="code" href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a> >= 0)</div>
|
|
244
|
+
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  {</div>
|
|
245
|
+
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> flattenOffset =</div>
|
|
246
|
+
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-><a class="code" href="classSVF_1_1SymbolTableInfo.html#a24df52313f8093bb651ae9da972cd663">getFlattenedElemIdx</a>(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>,</div>
|
|
247
|
+
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <a class="code" href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a>);</div>
|
|
248
|
+
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  totalConstOffset += flattenOffset;</div>
|
|
249
|
+
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  }</div>
|
|
250
|
+
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <span class="keywordflow">else</span></div>
|
|
251
|
+
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  totalConstOffset += <a class="code" href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a>;</div>
|
|
252
|
+
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  }</div>
|
|
253
|
+
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  }</div>
|
|
254
|
+
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <span class="keywordflow">return</span> totalConstOffset;</div>
|
|
255
|
+
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span> }</div>
|
|
256
|
+
<div class="line"><a name="l00249"></a><span class="lineno"><a class="line" href="classSVF_1_1AccessPath.html#a76222b6571e46e8a8bd5c8c597c8ffaf"> 249</a></span> <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> <a class="code" href="classSVF_1_1AccessPath.html#a76222b6571e46e8a8bd5c8c597c8ffaf">AccessPath::computeAllLocations</a>()<span class="keyword"> const</span></div>
|
|
257
|
+
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span> <span class="keyword"></span>{</div>
|
|
258
|
+
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> result;</div>
|
|
259
|
+
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  result.<a class="code" href="classSVF_1_1SparseBitVector.html#a61bd86909a141f9de873d92c0f904832">set</a>(getConstantFieldIdx());</div>
|
|
260
|
+
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <span class="keywordflow">return</span> result;</div>
|
|
261
|
+
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span> }</div>
|
|
262
|
+
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  </div>
|
|
263
|
+
<div class="line"><a name="l00256"></a><span class="lineno"><a class="line" href="classSVF_1_1AccessPath.html#a6591b6092a829b0c874754b649087aa2"> 256</a></span> <a class="code" href="classSVF_1_1AccessPath.html">AccessPath</a> <a class="code" href="classSVF_1_1AccessPath.html#a6591b6092a829b0c874754b649087aa2">AccessPath::operator+</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1AccessPath.html">AccessPath</a>& rhs)<span class="keyword"> const</span></div>
|
|
264
|
+
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span> <span class="keyword"></span>{</div>
|
|
265
|
+
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <a class="code" href="classSVF_1_1AccessPath.html">AccessPath</a> ap(rhs);</div>
|
|
266
|
+
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  ap.<a class="code" href="classSVF_1_1AccessPath.html#aa1747064a0833855a5848ebf4a4d65fa">fldIdx</a> += getConstantFieldIdx();</div>
|
|
267
|
+
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> &<a class="code" href="cJSON_8cpp.html#a009ef1d888ab6dbe77e6b42b0b39f1ae">p</a> : ap.<a class="code" href="classSVF_1_1AccessPath.html#a586c71842e3e4487921aa3384ce9d025">getIdxOperandPairVec</a>())</div>
|
|
268
|
+
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  ap.<a class="code" href="classSVF_1_1AccessPath.html#a2358a8194b5e2c4bcbb5218dee7fcbcd">addOffsetVarAndGepTypePair</a>(<a class="code" href="cJSON_8cpp.html#a009ef1d888ab6dbe77e6b42b0b39f1ae">p</a>.first, <a class="code" href="cJSON_8cpp.html#a009ef1d888ab6dbe77e6b42b0b39f1ae">p</a>.second);</div>
|
|
271
269
|
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  </div>
|
|
272
|
-
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span> 
|
|
273
|
-
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span> 
|
|
274
|
-
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span> 
|
|
275
|
-
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span> 
|
|
276
|
-
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span> 
|
|
277
|
-
<div class="line"><a name="l00268"></a><span class="lineno"
|
|
278
|
-
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span> 
|
|
279
|
-
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  <
|
|
280
|
-
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span> 
|
|
281
|
-
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span> 
|
|
282
|
-
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span> 
|
|
283
|
-
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <span class="keywordflow">if</span> (
|
|
284
|
-
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  <span class="keywordflow">return</span>
|
|
285
|
-
<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  <span class="keywordflow">else</span
|
|
286
|
-
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span> 
|
|
287
|
-
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span> 
|
|
288
|
-
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span> 
|
|
289
|
-
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span> 
|
|
290
|
-
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span> 
|
|
291
|
-
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span> 
|
|
292
|
-
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span> 
|
|
293
|
-
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span> 
|
|
294
|
-
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span> 
|
|
295
|
-
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span> 
|
|
296
|
-
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span> }</div>
|
|
297
|
-
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span> 
|
|
298
|
-
<div class="line"><a name="
|
|
299
|
-
<div class="line"><a name="
|
|
300
|
-
<div class="line"><a name="
|
|
301
|
-
<div class="line"><a name="
|
|
302
|
-
<div class="line"><a name="
|
|
303
|
-
<div class="line"><a name="
|
|
304
|
-
<div class="line"><a name="
|
|
305
|
-
<div class="line"><a name="
|
|
306
|
-
<div class="line"><a name="
|
|
307
|
-
<div class="line"><a name="
|
|
308
|
-
<div class="line"><a name="
|
|
309
|
-
<div class="line"><a name="
|
|
310
|
-
<div class="line"><a name="
|
|
311
|
-
<div class="line"><a name="
|
|
270
|
+
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <span class="keywordflow">return</span> ap;</div>
|
|
271
|
+
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span> }</div>
|
|
272
|
+
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  </div>
|
|
273
|
+
<div class="line"><a name="l00266"></a><span class="lineno"><a class="line" href="classSVF_1_1AccessPath.html#ae0f38a5f473af89678db2755667c3421"> 266</a></span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1AccessPath.html#ae0f38a5f473af89678db2755667c3421">AccessPath::operator< </a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1AccessPath.html">AccessPath</a>& rhs)<span class="keyword"> const</span></div>
|
|
274
|
+
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span> <span class="keyword"></span>{</div>
|
|
275
|
+
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <span class="keywordflow">if</span> (fldIdx != rhs.<a class="code" href="classSVF_1_1AccessPath.html#aa1747064a0833855a5848ebf4a4d65fa">fldIdx</a>)</div>
|
|
276
|
+
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  <span class="keywordflow">return</span> (fldIdx < rhs.<a class="code" href="classSVF_1_1AccessPath.html#aa1747064a0833855a5848ebf4a4d65fa">fldIdx</a>);</div>
|
|
277
|
+
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  <span class="keywordflow">else</span></div>
|
|
278
|
+
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  {</div>
|
|
279
|
+
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1AccessPath.html#a04ca154a70f40999a6a28c505bfd942d">IdxOperandPairs</a>& pairVec = getIdxOperandPairVec();</div>
|
|
280
|
+
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1AccessPath.html#a04ca154a70f40999a6a28c505bfd942d">IdxOperandPairs</a>& rhsPairVec = rhs.<a class="code" href="classSVF_1_1AccessPath.html#a586c71842e3e4487921aa3384ce9d025">getIdxOperandPairVec</a>();</div>
|
|
281
|
+
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <span class="keywordflow">if</span> (pairVec.size() != rhsPairVec.size())</div>
|
|
282
|
+
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  <span class="keywordflow">return</span> (pairVec.size() < rhsPairVec.size());</div>
|
|
283
|
+
<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  <span class="keywordflow">else</span></div>
|
|
284
|
+
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  {</div>
|
|
285
|
+
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  IdxOperandPairs::const_iterator it = pairVec.begin();</div>
|
|
286
|
+
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  IdxOperandPairs::const_iterator rhsIt = rhsPairVec.begin();</div>
|
|
287
|
+
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  <span class="keywordflow">for</span> (; it != pairVec.end() && rhsIt != rhsPairVec.end(); ++it, ++rhsIt)</div>
|
|
288
|
+
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  {</div>
|
|
289
|
+
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  <span class="keywordflow">return</span> (*it) < (*rhsIt);</div>
|
|
290
|
+
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  }</div>
|
|
291
|
+
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  </div>
|
|
292
|
+
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
293
|
+
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  }</div>
|
|
294
|
+
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  }</div>
|
|
295
|
+
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span> }</div>
|
|
296
|
+
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  </div>
|
|
297
|
+
<div class="line"><a name="l00290"></a><span class="lineno"><a class="line" href="classSVF_1_1AccessPath.html#a98b8b3428479259fbafd9e527ecc09bb"> 290</a></span> <a class="code" href="classSVF_1_1AccessPath.html#aabb6c9600fac408f36b9fde013597245">SVF::AccessPath::LSRelation</a> <a class="code" href="classSVF_1_1AccessPath.html#a98b8b3428479259fbafd9e527ecc09bb">AccessPath::checkRelation</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1AccessPath.html">AccessPath</a>& LHS, <span class="keyword">const</span> <a class="code" href="classSVF_1_1AccessPath.html">AccessPath</a>& RHS)</div>
|
|
298
|
+
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span> {</div>
|
|
299
|
+
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> lhsLocations = LHS.<a class="code" href="classSVF_1_1AccessPath.html#a76222b6571e46e8a8bd5c8c597c8ffaf">computeAllLocations</a>();</div>
|
|
300
|
+
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> rhsLocations = RHS.<a class="code" href="classSVF_1_1AccessPath.html#a76222b6571e46e8a8bd5c8c597c8ffaf">computeAllLocations</a>();</div>
|
|
301
|
+
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  <span class="keywordflow">if</span> (lhsLocations.<a class="code" href="classSVF_1_1SparseBitVector.html#a16756e0545fd3d50ab89f45a2e83bb79">intersects</a>(rhsLocations))</div>
|
|
302
|
+
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  {</div>
|
|
303
|
+
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  <span class="keywordflow">if</span> (lhsLocations == rhsLocations)</div>
|
|
304
|
+
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  <span class="keywordflow">return</span> Same;</div>
|
|
305
|
+
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhsLocations.<a class="code" href="classSVF_1_1SparseBitVector.html#abbd0e0cf759fad7858224ed8a63aade8">contains</a>(rhsLocations))</div>
|
|
306
|
+
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  <span class="keywordflow">return</span> Superset;</div>
|
|
307
|
+
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (rhsLocations.<a class="code" href="classSVF_1_1SparseBitVector.html#abbd0e0cf759fad7858224ed8a63aade8">contains</a>(lhsLocations))</div>
|
|
308
|
+
<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  <span class="keywordflow">return</span> Subset;</div>
|
|
309
|
+
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  <span class="keywordflow">else</span></div>
|
|
310
|
+
<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  <span class="keywordflow">return</span> Overlap;</div>
|
|
312
311
|
<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  }</div>
|
|
313
|
-
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span> 
|
|
314
|
-
<div class="line"><a name="l00306"></a><span class="lineno"> 306</span> 
|
|
315
|
-
<div class="line"><a name="l00307"></a><span class="lineno"> 307</span> 
|
|
312
|
+
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  <span class="keywordflow">else</span></div>
|
|
313
|
+
<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  {</div>
|
|
314
|
+
<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  <span class="keywordflow">return</span> NonOverlap;</div>
|
|
315
|
+
<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  }</div>
|
|
316
|
+
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span> }</div>
|
|
317
|
+
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  </div>
|
|
318
|
+
<div class="line"><a name="l00312"></a><span class="lineno"><a class="line" href="classSVF_1_1AccessPath.html#a4519477605a58d5821d05951a88abcd0"> 312</a></span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1AccessPath.html#a4519477605a58d5821d05951a88abcd0">AccessPath::dump</a>()<span class="keyword"> const</span></div>
|
|
319
|
+
<div class="line"><a name="l00313"></a><span class="lineno"> 313</span> <span class="keyword"></span>{</div>
|
|
320
|
+
<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div>
|
|
321
|
+
<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  std::stringstream rawstr(str);</div>
|
|
322
|
+
<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  </div>
|
|
323
|
+
<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  rawstr << <span class="stringliteral">"AccessPath\tField_Index: "</span> << getConstantFieldIdx();</div>
|
|
324
|
+
<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  rawstr << <span class="stringliteral">",\tNum-Stride: {"</span>;</div>
|
|
325
|
+
<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1AccessPath.html#a04ca154a70f40999a6a28c505bfd942d">IdxOperandPairs</a>& vec = getIdxOperandPairVec();</div>
|
|
326
|
+
<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  IdxOperandPairs::const_iterator it = vec.begin();</div>
|
|
327
|
+
<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  IdxOperandPairs::const_iterator eit = vec.end();</div>
|
|
328
|
+
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  <span class="keywordflow">for</span> (; it != eit; ++it)</div>
|
|
329
|
+
<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  {</div>
|
|
330
|
+
<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* ty = it->second;</div>
|
|
331
|
+
<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  rawstr << <span class="stringliteral">" (Svf var: "</span> << it->first-><a class="code" href="classSVF_1_1SVFType.html#a9035ac13134de4647d63507cd80ca3d6">toString</a>() << <span class="stringliteral">", Iter type: "</span> << *ty << <span class="stringliteral">")"</span>;</div>
|
|
332
|
+
<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  }</div>
|
|
333
|
+
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  rawstr << <span class="stringliteral">" }\n"</span>;</div>
|
|
334
|
+
<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  <span class="keywordflow">return</span> rawstr.str();</div>
|
|
335
|
+
<div class="line"><a name="l00329"></a><span class="lineno"> 329</span> }</div>
|
|
316
336
|
</div><!-- fragment --></div><!-- contents -->
|
|
337
|
+
<div class="ttc" id="aclassSVF_1_1AccessPath_html_a1f279344b4061838d7b3498631bc907c"><div class="ttname"><a href="classSVF_1_1AccessPath.html#a1f279344b4061838d7b3498631bc907c">SVF::AccessPath::getStructFieldOffset</a></div><div class="ttdeci">u32_t getStructFieldOffset(const SVFVar *idxOperandVar, const SVFStructType *idxOperandType) const</div><div class="ttdoc">Return byte offset from the beginning of the structure to the field where it is located for struct ty...</div><div class="ttdef"><b>Definition:</b> <a href="AccessPath_8cpp_source.html#l00162">AccessPath.cpp:162</a></div></div>
|
|
317
338
|
<div class="ttc" id="anamespaceSVF_html_a5c4820681ef340339ddded756eb82ae1"><div class="ttname"><a href="namespaceSVF.html#a5c4820681ef340339ddded756eb82ae1">SVF::APOffset</a></div><div class="ttdeci">s64_t APOffset</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00061">SVFType.h:61</a></div></div>
|
|
318
339
|
<div class="ttc" id="aclassSVF_1_1SparseBitVector_html_a16756e0545fd3d50ab89f45a2e83bb79"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html#a16756e0545fd3d50ab89f45a2e83bb79">SVF::SparseBitVector::intersects</a></div><div class="ttdeci">bool intersects(const SparseBitVector< ElementSize > *RHS) const</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l01031">SparseBitVector.h:1031</a></div></div>
|
|
319
340
|
<div class="ttc" id="aclassSVF_1_1SVFType_html_a95b8031f1e15d49c7d68628be1d05aae"><div class="ttname"><a href="classSVF_1_1SVFType.html#a95b8031f1e15d49c7d68628be1d05aae">SVF::SVFType::getByteSize</a></div><div class="ttdeci">u32_t getByteSize() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00323">SVFType.h:323</a></div></div>
|
|
@@ -322,17 +343,17 @@ $(function() {
|
|
|
322
343
|
<div class="ttc" id="aclassSVF_1_1SVFPointerType_html"><div class="ttname"><a href="classSVF_1_1SVFPointerType.html">SVF::SVFPointerType</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00351">SVFType.h:351</a></div></div>
|
|
323
344
|
<div class="ttc" id="anamespaceSVF_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="BasicTypes_8h_source.html#l00065">BasicTypes.h:65</a></div></div>
|
|
324
345
|
<div class="ttc" id="aclassSVF_1_1SparseBitVector_html_a61bd86909a141f9de873d92c0f904832"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html#a61bd86909a141f9de873d92c0f904832">SVF::SparseBitVector::set</a></div><div class="ttdeci">void set(unsigned Idx)</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l00747">SparseBitVector.h:747</a></div></div>
|
|
325
|
-
<div class="ttc" id="aclassSVF_1_1AccessPath_html_ac60f994cda4747717028aa6c0f9c6f92"><div class="ttname"><a href="classSVF_1_1AccessPath.html#ac60f994cda4747717028aa6c0f9c6f92">SVF::AccessPath::IdxVarAndGepTypePairs</a></div><div class="ttdeci">std::vector< IdxVarAndGepTypePair > IdxVarAndGepTypePairs</div><div class="ttdef"><b>Definition:</b> <a href="AccessPath_8h_source.html#l00065">AccessPath.h:65</a></div></div>
|
|
326
346
|
<div class="ttc" id="aAccessPath_8h_html"><div class="ttname"><a href="AccessPath_8h.html">AccessPath.h</a></div></div>
|
|
327
|
-
<div class="ttc" id="aclassSVF_1_1AccessPath_html_ae0f38a5f473af89678db2755667c3421"><div class="ttname"><a href="classSVF_1_1AccessPath.html#ae0f38a5f473af89678db2755667c3421">SVF::AccessPath::operator<</a></div><div class="ttdeci">bool operator<(const AccessPath &rhs) const</div><div class="ttdef"><b>Definition:</b> <a href="AccessPath_8cpp_source.html#
|
|
347
|
+
<div class="ttc" id="aclassSVF_1_1AccessPath_html_ae0f38a5f473af89678db2755667c3421"><div class="ttname"><a href="classSVF_1_1AccessPath.html#ae0f38a5f473af89678db2755667c3421">SVF::AccessPath::operator<</a></div><div class="ttdeci">bool operator<(const AccessPath &rhs) const</div><div class="ttdef"><b>Definition:</b> <a href="AccessPath_8cpp_source.html#l00266">AccessPath.cpp:266</a></div></div>
|
|
328
348
|
<div class="ttc" id="aclassSVF_1_1AccessPath_html_a2358a8194b5e2c4bcbb5218dee7fcbcd"><div class="ttname"><a href="classSVF_1_1AccessPath.html#a2358a8194b5e2c4bcbb5218dee7fcbcd">SVF::AccessPath::addOffsetVarAndGepTypePair</a></div><div class="ttdeci">bool addOffsetVarAndGepTypePair(const SVFVar *var, const SVFType *gepIterType)</div><div class="ttdef"><b>Definition:</b> <a href="AccessPath_8cpp_source.html#l00042">AccessPath.cpp:42</a></div></div>
|
|
349
|
+
<div class="ttc" id="aclassSVF_1_1SVFVar_html_ac2db6304ea5526fb446ae882983beeb0"><div class="ttname"><a href="classSVF_1_1SVFVar.html#ac2db6304ea5526fb446ae882983beeb0">SVF::SVFVar::getValue</a></div><div class="ttdeci">const SVFValue * getValue() const</div><div class="ttdoc">Get/has methods of the components.</div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00094">SVFVariables.h:94</a></div></div>
|
|
329
350
|
<div class="ttc" id="aclassSVF_1_1SparseBitVector_html"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html">SVF::SparseBitVector</a></div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l00459">SparseBitVector.h:459</a></div></div>
|
|
330
|
-
<div class="ttc" id="aclassSVF_1_1AccessPath_html_a76222b6571e46e8a8bd5c8c597c8ffaf"><div class="ttname"><a href="classSVF_1_1AccessPath.html#a76222b6571e46e8a8bd5c8c597c8ffaf">SVF::AccessPath::computeAllLocations</a></div><div class="ttdeci">NodeBS computeAllLocations() const</div><div class="ttdoc">Compute all possible locations according to offset and number-stride pairs.</div><div class="ttdef"><b>Definition:</b> <a href="AccessPath_8cpp_source.html#
|
|
351
|
+
<div class="ttc" id="aclassSVF_1_1AccessPath_html_a76222b6571e46e8a8bd5c8c597c8ffaf"><div class="ttname"><a href="classSVF_1_1AccessPath.html#a76222b6571e46e8a8bd5c8c597c8ffaf">SVF::AccessPath::computeAllLocations</a></div><div class="ttdeci">NodeBS computeAllLocations() const</div><div class="ttdoc">Compute all possible locations according to offset and number-stride pairs.</div><div class="ttdef"><b>Definition:</b> <a href="AccessPath_8cpp_source.html#l00249">AccessPath.cpp:249</a></div></div>
|
|
331
352
|
<div class="ttc" id="aclassSVF_1_1AccessPath_html_a3c98f0c5f07109f9da0a8a897aa51d18"><div class="ttname"><a href="classSVF_1_1AccessPath.html#a3c98f0c5f07109f9da0a8a897aa51d18">SVF::AccessPath::getElementNum</a></div><div class="ttdeci">u32_t getElementNum(const SVFType *type) const</div><div class="ttdoc">Return element number of a type.</div><div class="ttdef"><b>Definition:</b> <a href="AccessPath_8cpp_source.html#l00063">AccessPath.cpp:63</a></div></div>
|
|
332
353
|
<div class="ttc" id="aSVFUtil_8h_html"><div class="ttname"><a href="SVFUtil_8h.html">SVFUtil.h</a></div></div>
|
|
333
354
|
<div class="ttc" id="aOptions_8h_html"><div class="ttname"><a href="Options_8h.html">Options.h</a></div></div>
|
|
334
355
|
<div class="ttc" id="aclassSVF_1_1SymbolTableInfo_html_a24df52313f8093bb651ae9da972cd663"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a24df52313f8093bb651ae9da972cd663">SVF::SymbolTableInfo::getFlattenedElemIdx</a></div><div class="ttdeci">u32_t getFlattenedElemIdx(const SVFType *T, u32_t origId)</div><div class="ttdoc">Flattened element idx of an array or struct by considering stride.</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00181">SymbolTableInfo.cpp:181</a></div></div>
|
|
335
|
-
<div class="ttc" id="aclassSVF_1_1AccessPath_html_a98b8b3428479259fbafd9e527ecc09bb"><div class="ttname"><a href="classSVF_1_1AccessPath.html#a98b8b3428479259fbafd9e527ecc09bb">SVF::AccessPath::checkRelation</a></div><div class="ttdeci">LSRelation checkRelation(const AccessPath &LHS, const AccessPath &RHS)</div><div class="ttdoc">Check relations of two location sets.</div><div class="ttdef"><b>Definition:</b> <a href="AccessPath_8cpp_source.html#
|
|
356
|
+
<div class="ttc" id="aclassSVF_1_1AccessPath_html_a98b8b3428479259fbafd9e527ecc09bb"><div class="ttname"><a href="classSVF_1_1AccessPath.html#a98b8b3428479259fbafd9e527ecc09bb">SVF::AccessPath::checkRelation</a></div><div class="ttdeci">LSRelation checkRelation(const AccessPath &LHS, const AccessPath &RHS)</div><div class="ttdoc">Check relations of two location sets.</div><div class="ttdef"><b>Definition:</b> <a href="AccessPath_8cpp_source.html#l00290">AccessPath.cpp:290</a></div></div>
|
|
336
357
|
<div class="ttc" id="aclassSVF_1_1SVFValue_html"><div class="ttname"><a href="classSVF_1_1SVFValue.html">SVF::SVFValue</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00177">SVFValue.h:177</a></div></div>
|
|
337
358
|
<div class="ttc" id="acJSON_8h_html_ad4c68ea99a26b0a98ad9a79982960458"><div class="ttname"><a href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">string</a></div><div class="ttdeci">const char *const string</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00172">cJSON.h:172</a></div></div>
|
|
338
359
|
<div class="ttc" id="aclassSVF_1_1SVFArrayType_html"><div class="ttname"><a href="classSVF_1_1SVFArrayType.html">SVF::SVFArrayType</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00469">SVFType.h:469</a></div></div>
|
|
@@ -340,19 +361,21 @@ $(function() {
|
|
|
340
361
|
<div class="ttc" id="acJSON_8cpp_html_a3f9a0d3265a6254722587175dac3e4dc"><div class="ttname"><a href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a></div><div class="ttdeci">newitem type</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l02739">cJSON.cpp:2739</a></div></div>
|
|
341
362
|
<div class="ttc" id="aclassSVF_1_1SVFType_html"><div class="ttname"><a href="classSVF_1_1SVFType.html">SVF::SVFType</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00242">SVFType.h:242</a></div></div>
|
|
342
363
|
<div class="ttc" id="aclassSVF_1_1SVFStructType_html"><div class="ttname"><a href="classSVF_1_1SVFStructType.html">SVF::SVFStructType</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00436">SVFType.h:436</a></div></div>
|
|
343
|
-
<div class="ttc" id="aclassSVF_1_1AccessPath_html_ae746362c42da05a641ae062658e40651"><div class="ttname"><a href="classSVF_1_1AccessPath.html#ae746362c42da05a641ae062658e40651">SVF::AccessPath::computeConstantOffset</a></div><div class="ttdeci">APOffset computeConstantOffset() const</div><div class="ttdoc">For example,.</div><div class="ttdef"><b>Definition:</b> <a href="AccessPath_8cpp_source.html#
|
|
364
|
+
<div class="ttc" id="aclassSVF_1_1AccessPath_html_ae746362c42da05a641ae062658e40651"><div class="ttname"><a href="classSVF_1_1AccessPath.html#ae746362c42da05a641ae062658e40651">SVF::AccessPath::computeConstantOffset</a></div><div class="ttdeci">APOffset computeConstantOffset() const</div><div class="ttdoc">For example,.</div><div class="ttdef"><b>Definition:</b> <a href="AccessPath_8cpp_source.html#l00207">AccessPath.cpp:207</a></div></div>
|
|
344
365
|
<div class="ttc" id="aclassSVF_1_1SVFConstantInt_html"><div class="ttname"><a href="classSVF_1_1SVFConstantInt.html">SVF::SVFConstantInt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00966">SVFValue.h:966</a></div></div>
|
|
345
366
|
<div class="ttc" id="aclassSVF_1_1SVFVar_html"><div class="ttname"><a href="classSVF_1_1SVFVar.html">SVF::SVFVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00045">SVFVariables.h:45</a></div></div>
|
|
346
367
|
<div class="ttc" id="aclassSVF_1_1SVFType_html_a9035ac13134de4647d63507cd80ca3d6"><div class="ttname"><a href="classSVF_1_1SVFType.html#a9035ac13134de4647d63507cd80ca3d6">SVF::SVFType::toString</a></div><div class="ttdeci">std::string toString() const</div></div>
|
|
368
|
+
<div class="ttc" id="aclassSVF_1_1AccessPath_html_a04ca154a70f40999a6a28c505bfd942d"><div class="ttname"><a href="classSVF_1_1AccessPath.html#a04ca154a70f40999a6a28c505bfd942d">SVF::AccessPath::IdxOperandPairs</a></div><div class="ttdeci">std::vector< IdxOperandPair > IdxOperandPairs</div><div class="ttdef"><b>Definition:</b> <a href="AccessPath_8h_source.html#l00065">AccessPath.h:65</a></div></div>
|
|
347
369
|
<div class="ttc" id="aclassSVF_1_1SymbolTableInfo_html_a267169023fc4f8dd66b145f7231fec11"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SVF::SymbolTableInfo::SymbolInfo</a></div><div class="ttdeci">static SymbolTableInfo * SymbolInfo()</div><div class="ttdoc">Singleton design here to make sure we only have one instance during any analysis.</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00081">SymbolTableInfo.cpp:81</a></div></div>
|
|
370
|
+
<div class="ttc" id="aclassSVF_1_1AccessPath_html_a586c71842e3e4487921aa3384ce9d025"><div class="ttname"><a href="classSVF_1_1AccessPath.html#a586c71842e3e4487921aa3384ce9d025">SVF::AccessPath::getIdxOperandPairVec</a></div><div class="ttdeci">const IdxOperandPairs & getIdxOperandPairVec() const</div><div class="ttdef"><b>Definition:</b> <a href="AccessPath_8h_source.html#l00106">AccessPath.h:106</a></div></div>
|
|
371
|
+
<div class="ttc" id="aclassSVF_1_1StInfo_html_aaf05447c20c9f90eea64ab6e88d6ab05"><div class="ttname"><a href="classSVF_1_1StInfo.html#aaf05447c20c9f90eea64ab6e88d6ab05">SVF::StInfo::getFlattenedFieldIdxVec</a></div><div class="ttdeci">std::vector< u32_t > & getFlattenedFieldIdxVec()</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00180">SVFType.h:180</a></div></div>
|
|
348
372
|
<div class="ttc" id="aclassSVF_1_1SVFType_html_a05850c17c2dbe42e5602dc8c9a70f3bd"><div class="ttname"><a href="classSVF_1_1SVFType.html#a05850c17c2dbe42e5602dc8c9a70f3bd">SVF::SVFType::getTypeInfo</a></div><div class="ttdeci">StInfo * getTypeInfo()</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00309">SVFType.h:309</a></div></div>
|
|
349
|
-
<div class="ttc" id="aclassSVF_1_1AccessPath_html_a6591b6092a829b0c874754b649087aa2"><div class="ttname"><a href="classSVF_1_1AccessPath.html#a6591b6092a829b0c874754b649087aa2">SVF::AccessPath::operator+</a></div><div class="ttdeci">AccessPath operator+(const AccessPath &rhs) const</div><div class="ttdoc">Overload operators.</div><div class="ttdef"><b>Definition:</b> <a href="AccessPath_8cpp_source.html#
|
|
373
|
+
<div class="ttc" id="aclassSVF_1_1AccessPath_html_a6591b6092a829b0c874754b649087aa2"><div class="ttname"><a href="classSVF_1_1AccessPath.html#a6591b6092a829b0c874754b649087aa2">SVF::AccessPath::operator+</a></div><div class="ttdeci">AccessPath operator+(const AccessPath &rhs) const</div><div class="ttdoc">Overload operators.</div><div class="ttdef"><b>Definition:</b> <a href="AccessPath_8cpp_source.html#l00256">AccessPath.cpp:256</a></div></div>
|
|
350
374
|
<div class="ttc" id="acJSON_8cpp_html_a95bf816579e97b6f33bdb5e25ed6d5de"><div class="ttname"><a href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a></div><div class="ttdeci">buffer offset</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l01113">cJSON.cpp:1113</a></div></div>
|
|
351
375
|
<div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_aed0b0b9f035057552a6a82154fd88e61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVF::SVFUtil::outs</a></div><div class="ttdeci">std::ostream & outs()</div><div class="ttdoc">Overwrite llvm::outs()</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00050">SVFUtil.h:50</a></div></div>
|
|
352
376
|
<div class="ttc" id="aclassSVF_1_1AccessPath_html_a403312192a96a9fd5e7d071481592a7f"><div class="ttname"><a href="classSVF_1_1AccessPath.html#a403312192a96a9fd5e7d071481592a7f">SVF::AccessPath::isConstantOffset</a></div><div class="ttdeci">bool isConstantOffset() const</div><div class="ttdoc">Return TRUE if this is a constant location set.</div><div class="ttdef"><b>Definition:</b> <a href="AccessPath_8cpp_source.html#l00049">AccessPath.cpp:49</a></div></div>
|
|
353
|
-
<div class="ttc" id="
|
|
354
|
-
<div class="ttc" id="
|
|
355
|
-
<div class="ttc" id="aclassSVF_1_1AccessPath_html_a4519477605a58d5821d05951a88abcd0"><div class="ttname"><a href="classSVF_1_1AccessPath.html#a4519477605a58d5821d05951a88abcd0">SVF::AccessPath::dump</a></div><div class="ttdeci">std::string dump() const</div><div class="ttdoc">Dump location set.</div><div class="ttdef"><b>Definition:</b> <a href="AccessPath_8cpp_source.html#l00290">AccessPath.cpp:290</a></div></div>
|
|
377
|
+
<div class="ttc" id="aclassSVF_1_1AccessPath_html_aa1747064a0833855a5848ebf4a4d65fa"><div class="ttname"><a href="classSVF_1_1AccessPath.html#aa1747064a0833855a5848ebf4a4d65fa">SVF::AccessPath::fldIdx</a></div><div class="ttdeci">APOffset fldIdx</div><div class="ttdoc">Accumulated Constant Offsets.</div><div class="ttdef"><b>Definition:</b> <a href="AccessPath_8h_source.html#l00168">AccessPath.h:168</a></div></div>
|
|
378
|
+
<div class="ttc" id="aclassSVF_1_1AccessPath_html_a4519477605a58d5821d05951a88abcd0"><div class="ttname"><a href="classSVF_1_1AccessPath.html#a4519477605a58d5821d05951a88abcd0">SVF::AccessPath::dump</a></div><div class="ttdeci">std::string dump() const</div><div class="ttdoc">Dump location set.</div><div class="ttdef"><b>Definition:</b> <a href="AccessPath_8cpp_source.html#l00312">AccessPath.cpp:312</a></div></div>
|
|
356
379
|
<div class="ttc" id="aclassSVF_1_1Options_html_aaab923c093730b1670a54f09340b1bd5"><div class="ttname"><a href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">SVF::Options::MaxFieldLimit</a></div><div class="ttdeci">static const Option< u32_t > MaxFieldLimit</div><div class="ttdoc">Maximum number of field derivations for an object.</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00038">Options.h:38</a></div></div>
|
|
357
380
|
<div class="ttc" id="aclassSVF_1_1AccessPath_html_aabb6c9600fac408f36b9fde013597245"><div class="ttname"><a href="classSVF_1_1AccessPath.html#aabb6c9600fac408f36b9fde013597245">SVF::AccessPath::LSRelation</a></div><div class="ttdeci">LSRelation</div><div class="ttdef"><b>Definition:</b> <a href="AccessPath_8h_source.html#l00059">AccessPath.h:59</a></div></div>
|
|
358
381
|
<div class="ttc" id="aclassSVF_1_1StInfo_html_a055697f565cb9d73b41110090fe50159"><div class="ttname"><a href="classSVF_1_1StInfo.html#a055697f565cb9d73b41110090fe50159">SVF::StInfo::getOriginalElemType</a></div><div class="ttdeci">const SVFType * getOriginalElemType(u32_t fldIdx) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8cpp_source.html#l00026">SVFValue.cpp:26</a></div></div>
|