svf-tools 1.0.796 → 1.0.798
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 +157 -153
- package/SVF-doxygen/html/AccessPath_8h_source.html +6 -6
- package/SVF-doxygen/html/SVFStatements_8h_source.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1AccessPath.html +151 -141
- package/SVF-doxygen/html/classSVF_1_1GepStmt.html +1 -1
- package/SVF-doxygen/html/globals_func_t.html +1 -1
- package/SVF-doxygen/html/globals_t.html +1 -1
- package/SVF-doxygen/html/search/all_13.js +1 -1
- package/SVF-doxygen/html/search/functions_13.js +1 -1
- package/SVF-doxygen/html/svf-ex_8cpp.html +109 -106
- package/SVF-doxygen/html/svf-ex_8cpp_source.html +108 -106
- package/package.json +1 -1
- package/svf/lib/MemoryModel/AccessPath.cpp +23 -2
- package/svf-llvm/tools/Example/svf-ex.cpp +7 -4
|
@@ -398,26 +398,26 @@ Friends</h2></td></tr>
|
|
|
398
398
|
|
|
399
399
|
<p>Check relations of two location sets. </p>
|
|
400
400
|
|
|
401
|
-
<p class="definition">Definition at line <a class="el" href="AccessPath_8cpp_source.html#
|
|
402
|
-
<div class="fragment"><div class="line"><a name="
|
|
403
|
-
<div class="line"><a name="
|
|
404
|
-
<div class="line"><a name="
|
|
405
|
-
<div class="line"><a name="
|
|
406
|
-
<div class="line"><a name="
|
|
407
|
-
<div class="line"><a name="
|
|
408
|
-
<div class="line"><a name="
|
|
409
|
-
<div class="line"><a name="
|
|
410
|
-
<div class="line"><a name="
|
|
411
|
-
<div class="line"><a name="
|
|
412
|
-
<div class="line"><a name="
|
|
413
|
-
<div class="line"><a name="
|
|
414
|
-
<div class="line"><a name="
|
|
415
|
-
<div class="line"><a name="
|
|
416
|
-
<div class="line"><a name="
|
|
417
|
-
<div class="line"><a name="
|
|
418
|
-
<div class="line"><a name="
|
|
419
|
-
<div class="line"><a name="
|
|
420
|
-
<div class="line"><a name="
|
|
401
|
+
<p class="definition">Definition at line <a class="el" href="AccessPath_8cpp_source.html#l00262">262</a> of file <a class="el" href="AccessPath_8cpp_source.html">AccessPath.cpp</a>.</p>
|
|
402
|
+
<div class="fragment"><div class="line"><a name="l00263"></a><span class="lineno"> 263</span> {</div>
|
|
403
|
+
<div class="line"><a name="l00264"></a><span class="lineno"> 264</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>
|
|
404
|
+
<div class="line"><a name="l00265"></a><span class="lineno"> 265</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>
|
|
405
|
+
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  <span class="keywordflow">if</span> (lhsLocations.<a class="code" href="classSVF_1_1SparseBitVector.html#a16756e0545fd3d50ab89f45a2e83bb79">intersects</a>(rhsLocations))</div>
|
|
406
|
+
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  {</div>
|
|
407
|
+
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <span class="keywordflow">if</span> (lhsLocations == rhsLocations)</div>
|
|
408
|
+
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1AccessPath.html#aabb6c9600fac408f36b9fde013597245ab1ba3a42758473e5ff427ba36147a56a">Same</a>;</div>
|
|
409
|
+
<div class="line"><a name="l00270"></a><span class="lineno"> 270</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>
|
|
410
|
+
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1AccessPath.html#aabb6c9600fac408f36b9fde013597245a52a64f855e6233e88b319cf2f3442f14">Superset</a>;</div>
|
|
411
|
+
<div class="line"><a name="l00272"></a><span class="lineno"> 272</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>
|
|
412
|
+
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1AccessPath.html#aabb6c9600fac408f36b9fde013597245a45bfb1e14fd39a700dba1243afe022e4">Subset</a>;</div>
|
|
413
|
+
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <span class="keywordflow">else</span></div>
|
|
414
|
+
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1AccessPath.html#aabb6c9600fac408f36b9fde013597245afbdf7000b827f7d8590e5f0997e0d59a">Overlap</a>;</div>
|
|
415
|
+
<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  }</div>
|
|
416
|
+
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  <span class="keywordflow">else</span></div>
|
|
417
|
+
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  {</div>
|
|
418
|
+
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1AccessPath.html#aabb6c9600fac408f36b9fde013597245acb3c4a3f685068e391025eb01ebf061d">NonOverlap</a>;</div>
|
|
419
|
+
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  }</div>
|
|
420
|
+
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span> }</div>
|
|
421
421
|
</div><!-- fragment -->
|
|
422
422
|
</div>
|
|
423
423
|
</div>
|
|
@@ -447,12 +447,12 @@ Friends</h2></td></tr>
|
|
|
447
447
|
<p>Compute all possible locations according to offset and number-stride pairs. </p>
|
|
448
448
|
<p>Compute all possible locations according to offset and number-stride pairs. </p>
|
|
449
449
|
|
|
450
|
-
<p class="definition">Definition at line <a class="el" href="AccessPath_8cpp_source.html#
|
|
451
|
-
<div class="fragment"><div class="line"><a name="
|
|
452
|
-
<div class="line"><a name="
|
|
453
|
-
<div class="line"><a name="
|
|
454
|
-
<div class="line"><a name="
|
|
455
|
-
<div class="line"><a name="
|
|
450
|
+
<p class="definition">Definition at line <a class="el" href="AccessPath_8cpp_source.html#l00221">221</a> of file <a class="el" href="AccessPath_8cpp_source.html">AccessPath.cpp</a>.</p>
|
|
451
|
+
<div class="fragment"><div class="line"><a name="l00222"></a><span class="lineno"> 222</span> {</div>
|
|
452
|
+
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> result;</div>
|
|
453
|
+
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  result.<a class="code" href="classSVF_1_1SparseBitVector.html#a61bd86909a141f9de873d92c0f904832">set</a>(<a class="code" href="classSVF_1_1AccessPath.html#a68e49bb797a84ea035ea338549f2e054">getConstantFieldIdx</a>());</div>
|
|
454
|
+
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="keywordflow">return</span> result;</div>
|
|
455
|
+
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span> }</div>
|
|
456
456
|
</div><!-- fragment -->
|
|
457
457
|
</div>
|
|
458
458
|
</div>
|
|
@@ -474,6 +474,12 @@ Friends</h2></td></tr>
|
|
|
474
474
|
<dl class="section return"><dt>Returns</dt><dd>APOffset representing the computed total constant byte offset. e.g. GepStmt* gep = [i32*4], 2 APOffset byteOffset = gep->accumulateConstantByteOffset(); byteOffset should be 8 since i32 is 4 bytes and index is 2.</dd></dl>
|
|
475
475
|
<p>Return accumulated constant offset</p>
|
|
476
476
|
<p>"value" is the offset variable (must be a constant) "type" is the location where we want to compute offset Given a vector and elem byte size: [(value1,type1), (value2,type2), (value3,type3)], bytesize totalConstByteOffset = ByteOffset(value1,type1) * ByteOffset(value2,type2) + ByteOffset(value3,type3) For a pointer type (e.g., t1 is PointerType), we will retrieve the pointee type and times the offset, i.e., getElementNum(t1) X off1 </p>
|
|
477
|
+
<p>For example, there is struct DEST{int a, char b[10], int c[5]} (1) c = getelementptr inbounds struct.DEST, struct.DEST* arr, i32 0, i32 2</p>
|
|
478
|
+
<p>for (1) offsetVarAndGepTypePairs.size() = 2 i = 0, type: struct.DEST*, PtrType, op = 0 i = 1, type: struct.DEST, StructType, op = 2 for (2) offsetVarAndGepTypePairs.size() = 2 i = 0, type: [10 x i8]*, PtrType, op = 0 i = 1, type: [10 x i8], ArrType, op = 8</p>
|
|
479
|
+
<p>for (2) i = 1, arrType: [10 x i8], type2 = i8</p>
|
|
480
|
+
<p>for (1) i = 0, ptrType: struct.DEST*, type2: struct.DEST for (2) i = 0, ptrType: [10 x i8]*, type2 = [10 x i8]</p>
|
|
481
|
+
<p>for (1) structType: struct.DEST structField = 0, type2: int structField = 1, type2: char[10] structField = 2, type2: int[5]</p>
|
|
482
|
+
<p>for (2) i = 0, op: 0, type: [10 x i8]*(Ptr), type2: [10 x i8](Arr) i = 1, op: 8, type: [10 x i8](Arr), type2: i8</p>
|
|
477
483
|
|
|
478
484
|
<p class="definition">Definition at line <a class="el" href="AccessPath_8cpp_source.html#l00097">97</a> of file <a class="el" href="AccessPath_8cpp_source.html">AccessPath.cpp</a>.</p>
|
|
479
485
|
<div class="fragment"><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> {</div>
|
|
@@ -482,31 +488,35 @@ Friends</h2></td></tr>
|
|
|
482
488
|
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <a class="code" href="namespaceSVF.html#a5c4820681ef340339ddded756eb82ae1">APOffset</a> totalConstOffset = 0;</div>
|
|
483
489
|
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = <a class="code" href="classSVF_1_1AccessPath.html#aa9f0a1290083a9b077c6065cad054163">offsetVarAndGepTypePairs</a>.size() - 1; i >= 0; i--)</div>
|
|
484
490
|
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  {</div>
|
|
485
|
-
<div class="line"><a name="
|
|
486
|
-
<div class="line"><a name="
|
|
487
|
-
<div class="line"><a name="
|
|
488
|
-
<div class="line"><a name="
|
|
489
|
-
<div class="line"><a name="
|
|
490
|
-
<div class="line"><a name="
|
|
491
|
-
<div class="line"><a name="
|
|
492
|
-
<div class="line"><a name="
|
|
493
|
-
<div class="line"><a name="
|
|
494
|
-
<div class="line"><a name="
|
|
495
|
-
<div class="line"><a name="
|
|
496
|
-
<div class="line"><a name="
|
|
497
|
-
<div class="line"><a name="
|
|
498
|
-
<div class="line"><a name="
|
|
499
|
-
<div class="line"><a name="
|
|
500
|
-
<div class="line"><a name="
|
|
501
|
-
<div class="line"><a name="
|
|
502
|
-
<div class="line"><a name="
|
|
503
|
-
<div class="line"><a name="
|
|
504
|
-
<div class="line"><a name="
|
|
505
|
-
<div class="line"><a name="
|
|
506
|
-
<div class="line"><a name="
|
|
507
|
-
<div class="line"><a name="
|
|
508
|
-
<div class="line"><a name="
|
|
509
|
-
<div class="line"><a name="
|
|
491
|
+
<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>
|
|
492
|
+
<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 = <a class="code" href="classSVF_1_1AccessPath.html#aa9f0a1290083a9b077c6065cad054163">offsetVarAndGepTypePairs</a>[i].first->getValue();</div>
|
|
493
|
+
<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> = <a class="code" href="classSVF_1_1AccessPath.html#aa9f0a1290083a9b077c6065cad054163">offsetVarAndGepTypePairs</a>[i].second;</div>
|
|
494
|
+
<div class="line"><a name="l00115"></a><span class="lineno"> 115</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>
|
|
495
|
+
<div class="line"><a name="l00116"></a><span class="lineno"> 116</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>
|
|
496
|
+
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  {</div>
|
|
497
|
+
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  type2 = arrType->getTypeOfElement();</div>
|
|
498
|
+
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  }</div>
|
|
499
|
+
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFPointerType.html">SVFPointerType</a>* ptrType = SVFUtil::dyn_cast<SVFPointerType>(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>))</div>
|
|
500
|
+
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  {</div>
|
|
501
|
+
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  type2 = ptrType->getPtrElementType();</div>
|
|
502
|
+
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  }</div>
|
|
503
|
+
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  </div>
|
|
504
|
+
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFConstantInt.html">SVFConstantInt</a>* op = SVFUtil::dyn_cast<SVFConstantInt>(value);</div>
|
|
505
|
+
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStructType.html">SVFStructType</a>* structType = SVFUtil::dyn_cast<SVFStructType>(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>))</div>
|
|
506
|
+
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  {</div>
|
|
507
|
+
<div class="line"><a name="l00135"></a><span class="lineno"> 135</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-><a class="code" href="classSVF_1_1SVFConstantInt.html#a73f04bdfc19261b65164b98787bc2ed4">getSExtValue</a>(); ++structField)</div>
|
|
508
|
+
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  {</div>
|
|
509
|
+
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  type2 = structType-><a class="code" href="classSVF_1_1SVFType.html#a05850c17c2dbe42e5602dc8c9a70f3bd">getTypeInfo</a>()-><a class="code" href="classSVF_1_1StInfo.html#a055697f565cb9d73b41110090fe50159">getOriginalElemType</a>(structField);</div>
|
|
510
|
+
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  totalConstOffset += type2-><a class="code" href="classSVF_1_1SVFType.html#a0091b8b186ad359a1b54ac7e0ee1e5d0">getLLVMByteSize</a>();</div>
|
|
511
|
+
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  }</div>
|
|
512
|
+
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  }</div>
|
|
513
|
+
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="keywordflow">else</span></div>
|
|
514
|
+
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  {</div>
|
|
515
|
+
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  totalConstOffset += op-><a class="code" href="classSVF_1_1SVFConstantInt.html#a73f04bdfc19261b65164b98787bc2ed4">getSExtValue</a>() * type2-><a class="code" href="classSVF_1_1SVFType.html#a0091b8b186ad359a1b54ac7e0ee1e5d0">getLLVMByteSize</a>();</div>
|
|
516
|
+
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  }</div>
|
|
517
|
+
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  }</div>
|
|
518
|
+
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keywordflow">return</span> totalConstOffset;</div>
|
|
519
|
+
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span> }</div>
|
|
510
520
|
</div><!-- fragment -->
|
|
511
521
|
</div>
|
|
512
522
|
</div>
|
|
@@ -530,45 +540,45 @@ Friends</h2></td></tr>
|
|
|
530
540
|
<p>Return accumulated constant offset</p>
|
|
531
541
|
<p>"value" is the offset variable (must be a constant) "type" is the location where we want to compute offset Given a vector: [(value1,type1), (value2,type2), (value3,type3)] totalConstOffset = flattenOffset(value1,type1) * flattenOffset(value2,type2) + flattenOffset(value3,type3) For a pointer type (e.g., t1 is PointerType), we will retrieve the pointee type and times the offset, i.e., getElementNum(t1) X off1 %5 = getelementptr inbounds struct.Student, struct.Student* %4, i64 1 value1: i64 1 type1: struct.Student* computeConstantOffset = 32 %6 = getelementptr inbounds struct.Student, struct.Student* %5, i32 0, i32 1 value1: i32 0 type1: struct.Student* value2: i32 1 type2: struct.Student = type { struct.inner, [10 x [3 x i8]] } computeConstantOffset = 2 %7 = getelementptr inbounds [10 x [3 x i8]], [10 x [3 x i8]]* %6, i64 0, i64 3 value1: i64 0 type1: [10 x [3 x i8]]* value2: i64 3 type2: [10 x [3 x i8]] computeConstantOffset = 9 %8 = getelementptr inbounds [3 x i8], [3 x i8]* %7, i64 0, i64 2 value1: i64 0 type1: [3 x i8]* value2: i64 2 type2: [3 x i8] computeConstantOffset = 2 </p>
|
|
532
542
|
|
|
533
|
-
<p class="definition">Definition at line <a class="el" href="AccessPath_8cpp_source.html#
|
|
534
|
-
<div class="fragment"><div class="line"><a name="
|
|
535
|
-
<div class="line"><a name="
|
|
536
|
-
<div class="line"><a name="
|
|
537
|
-
<div class="line"><a name="
|
|
538
|
-
<div class="line"><a name="
|
|
539
|
-
<div class="line"><a name="
|
|
540
|
-
<div class="line"><a name="
|
|
541
|
-
<div class="line"><a name="
|
|
542
|
-
<div class="line"><a name="
|
|
543
|
-
<div class="line"><a name="
|
|
544
|
-
<div class="line"><a name="
|
|
545
|
-
<div class="line"><a name="
|
|
546
|
-
<div class="line"><a name="
|
|
547
|
-
<div class="line"><a name="
|
|
548
|
-
<div class="line"><a name="
|
|
549
|
-
<div class="line"><a name="
|
|
550
|
-
<div class="line"><a name="
|
|
551
|
-
<div class="line"><a name="
|
|
552
|
-
<div class="line"><a name="
|
|
553
|
-
<div class="line"><a name="
|
|
554
|
-
<div class="line"><a name="
|
|
555
|
-
<div class="line"><a name="
|
|
556
|
-
<div class="line"><a name="
|
|
557
|
-
<div class="line"><a name="
|
|
558
|
-
<div class="line"><a name="
|
|
559
|
-
<div class="line"><a name="
|
|
560
|
-
<div class="line"><a name="
|
|
561
|
-
<div class="line"><a name="
|
|
562
|
-
<div class="line"><a name="
|
|
563
|
-
<div class="line"><a name="
|
|
564
|
-
<div class="line"><a name="
|
|
565
|
-
<div class="line"><a name="
|
|
566
|
-
<div class="line"><a name="
|
|
567
|
-
<div class="line"><a name="
|
|
568
|
-
<div class="line"><a name="
|
|
569
|
-
<div class="line"><a name="
|
|
570
|
-
<div class="line"><a name="
|
|
571
|
-
<div class="line"><a name="
|
|
543
|
+
<p class="definition">Definition at line <a class="el" href="AccessPath_8cpp_source.html#l00179">179</a> of file <a class="el" href="AccessPath_8cpp_source.html">AccessPath.cpp</a>.</p>
|
|
544
|
+
<div class="fragment"><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> {</div>
|
|
545
|
+
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  </div>
|
|
546
|
+
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  assert(<a class="code" href="classSVF_1_1AccessPath.html#a403312192a96a9fd5e7d071481592a7f">isConstantOffset</a>() && <span class="stringliteral">"not a constant offset"</span>);</div>
|
|
547
|
+
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  </div>
|
|
548
|
+
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1AccessPath.html#aa9f0a1290083a9b077c6065cad054163">offsetVarAndGepTypePairs</a>.empty())</div>
|
|
549
|
+
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1AccessPath.html#a68e49bb797a84ea035ea338549f2e054">getConstantFieldIdx</a>();</div>
|
|
550
|
+
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  </div>
|
|
551
|
+
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <a class="code" href="namespaceSVF.html#a5c4820681ef340339ddded756eb82ae1">APOffset</a> totalConstOffset = 0;</div>
|
|
552
|
+
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = <a class="code" href="classSVF_1_1AccessPath.html#aa9f0a1290083a9b077c6065cad054163">offsetVarAndGepTypePairs</a>.size() - 1; i >= 0; i--)</div>
|
|
553
|
+
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  {</div>
|
|
554
|
+
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* value = <a class="code" href="classSVF_1_1AccessPath.html#aa9f0a1290083a9b077c6065cad054163">offsetVarAndGepTypePairs</a>[i].first->getValue();</div>
|
|
555
|
+
<div class="line"><a name="l00191"></a><span class="lineno"> 191</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> = <a class="code" href="classSVF_1_1AccessPath.html#aa9f0a1290083a9b077c6065cad054163">offsetVarAndGepTypePairs</a>[i].second;</div>
|
|
556
|
+
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFConstantInt.html">SVFConstantInt</a>* op = SVFUtil::dyn_cast<SVFConstantInt>(value);</div>
|
|
557
|
+
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  assert(op && <span class="stringliteral">"not a constant offset?"</span>);</div>
|
|
558
|
+
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="keywordflow">if</span>(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>==<span class="keyword">nullptr</span>)</div>
|
|
559
|
+
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  {</div>
|
|
560
|
+
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  totalConstOffset += op-><a class="code" href="classSVF_1_1SVFConstantInt.html#a73f04bdfc19261b65164b98787bc2ed4">getSExtValue</a>();</div>
|
|
561
|
+
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="keywordflow">continue</span>;</div>
|
|
562
|
+
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  }</div>
|
|
563
|
+
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  </div>
|
|
564
|
+
<div class="line"><a name="l00200"></a><span class="lineno"> 200</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>
|
|
565
|
+
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  totalConstOffset += op-><a class="code" href="classSVF_1_1SVFConstantInt.html#a73f04bdfc19261b65164b98787bc2ed4">getSExtValue</a>() * <a class="code" href="classSVF_1_1AccessPath.html#a3c98f0c5f07109f9da0a8a897aa51d18">getElementNum</a>(pty->getPtrElementType());</div>
|
|
566
|
+
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="keywordflow">else</span></div>
|
|
567
|
+
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  {</div>
|
|
568
|
+
<div class="line"><a name="l00204"></a><span class="lineno"> 204</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>
|
|
569
|
+
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="keywordflow">if</span> (<a class="code" href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a> >= 0)</div>
|
|
570
|
+
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  {</div>
|
|
571
|
+
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> flattenOffset =</div>
|
|
572
|
+
<div class="line"><a name="l00208"></a><span class="lineno"> 208</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>
|
|
573
|
+
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <a class="code" href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a>);</div>
|
|
574
|
+
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  totalConstOffset += flattenOffset;</div>
|
|
575
|
+
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  }</div>
|
|
576
|
+
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <span class="keywordflow">else</span></div>
|
|
577
|
+
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  totalConstOffset += <a class="code" href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a>;</div>
|
|
578
|
+
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  }</div>
|
|
579
|
+
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  }</div>
|
|
580
|
+
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keywordflow">return</span> totalConstOffset;</div>
|
|
581
|
+
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span> }</div>
|
|
572
582
|
</div><!-- fragment -->
|
|
573
583
|
</div>
|
|
574
584
|
</div>
|
|
@@ -589,24 +599,24 @@ Friends</h2></td></tr>
|
|
|
589
599
|
|
|
590
600
|
<p>Dump location set. </p>
|
|
591
601
|
|
|
592
|
-
<p class="definition">Definition at line <a class="el" href="AccessPath_8cpp_source.html#
|
|
593
|
-
<div class="fragment"><div class="line"><a name="
|
|
594
|
-
<div class="line"><a name="
|
|
595
|
-
<div class="line"><a name="
|
|
596
|
-
<div class="line"><a name="
|
|
597
|
-
<div class="line"><a name="
|
|
598
|
-
<div class="line"><a name="
|
|
599
|
-
<div class="line"><a name="
|
|
600
|
-
<div class="line"><a name="
|
|
601
|
-
<div class="line"><a name="
|
|
602
|
-
<div class="line"><a name="
|
|
603
|
-
<div class="line"><a name="
|
|
604
|
-
<div class="line"><a name="
|
|
605
|
-
<div class="line"><a name="
|
|
606
|
-
<div class="line"><a name="
|
|
607
|
-
<div class="line"><a name="
|
|
608
|
-
<div class="line"><a name="
|
|
609
|
-
<div class="line"><a name="
|
|
602
|
+
<p class="definition">Definition at line <a class="el" href="AccessPath_8cpp_source.html#l00284">284</a> of file <a class="el" href="AccessPath_8cpp_source.html">AccessPath.cpp</a>.</p>
|
|
603
|
+
<div class="fragment"><div class="line"><a name="l00285"></a><span class="lineno"> 285</span> {</div>
|
|
604
|
+
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div>
|
|
605
|
+
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  std::stringstream rawstr(str);</div>
|
|
606
|
+
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  </div>
|
|
607
|
+
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  rawstr << <span class="stringliteral">"AccessPath\tField_Index: "</span> << <a class="code" href="classSVF_1_1AccessPath.html#a68e49bb797a84ea035ea338549f2e054">getConstantFieldIdx</a>();</div>
|
|
608
|
+
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  rawstr << <span class="stringliteral">",\tNum-Stride: {"</span>;</div>
|
|
609
|
+
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1AccessPath.html#a73ba2fd20ff0e21a2f09a3396f2596f8">OffsetVarAndGepTypePairs</a>& vec = <a class="code" href="classSVF_1_1AccessPath.html#ab0641554924d44f16c2831cac63ccf8b">getOffsetVarAndGepTypePairVec</a>();</div>
|
|
610
|
+
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  OffsetVarAndGepTypePairs::const_iterator it = vec.begin();</div>
|
|
611
|
+
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  OffsetVarAndGepTypePairs::const_iterator eit = vec.end();</div>
|
|
612
|
+
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  <span class="keywordflow">for</span> (; it != eit; ++it)</div>
|
|
613
|
+
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  {</div>
|
|
614
|
+
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* ty = it->second;</div>
|
|
615
|
+
<div class="line"><a name="l00297"></a><span class="lineno"> 297</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>
|
|
616
|
+
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  }</div>
|
|
617
|
+
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  rawstr << <span class="stringliteral">" }\n"</span>;</div>
|
|
618
|
+
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  <span class="keywordflow">return</span> rawstr.str();</div>
|
|
619
|
+
<div class="line"><a name="l00301"></a><span class="lineno"> 301</span> }</div>
|
|
610
620
|
</div><!-- fragment -->
|
|
611
621
|
</div>
|
|
612
622
|
</div>
|
|
@@ -801,15 +811,15 @@ Friends</h2></td></tr>
|
|
|
801
811
|
|
|
802
812
|
<p>Overload operators. </p>
|
|
803
813
|
|
|
804
|
-
<p class="definition">Definition at line <a class="el" href="AccessPath_8cpp_source.html#
|
|
805
|
-
<div class="fragment"><div class="line"><a name="
|
|
806
|
-
<div class="line"><a name="
|
|
807
|
-
<div class="line"><a name="
|
|
808
|
-
<div class="line"><a name="
|
|
809
|
-
<div class="line"><a name="
|
|
810
|
-
<div class="line"><a name="
|
|
811
|
-
<div class="line"><a name="
|
|
812
|
-
<div class="line"><a name="
|
|
814
|
+
<p class="definition">Definition at line <a class="el" href="AccessPath_8cpp_source.html#l00228">228</a> of file <a class="el" href="AccessPath_8cpp_source.html">AccessPath.cpp</a>.</p>
|
|
815
|
+
<div class="fragment"><div class="line"><a name="l00229"></a><span class="lineno"> 229</span> {</div>
|
|
816
|
+
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <a class="code" href="classSVF_1_1AccessPath.html">AccessPath</a> ap(rhs);</div>
|
|
817
|
+
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  ap.fldIdx += <a class="code" href="classSVF_1_1AccessPath.html#a68e49bb797a84ea035ea338549f2e054">getConstantFieldIdx</a>();</div>
|
|
818
|
+
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> &<a class="code" href="cJSON_8cpp.html#a009ef1d888ab6dbe77e6b42b0b39f1ae">p</a> : ap.getOffsetVarAndGepTypePairVec())</div>
|
|
819
|
+
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  ap.addOffsetVarAndGepTypePair(<a class="code" href="cJSON_8cpp.html#a009ef1d888ab6dbe77e6b42b0b39f1ae">p</a>.first, <a class="code" href="cJSON_8cpp.html#a009ef1d888ab6dbe77e6b42b0b39f1ae">p</a>.second);</div>
|
|
820
|
+
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  </div>
|
|
821
|
+
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <span class="keywordflow">return</span> ap;</div>
|
|
822
|
+
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span> }</div>
|
|
813
823
|
</div><!-- fragment -->
|
|
814
824
|
</div>
|
|
815
825
|
</div>
|
|
@@ -829,29 +839,29 @@ Friends</h2></td></tr>
|
|
|
829
839
|
</table>
|
|
830
840
|
</div><div class="memdoc">
|
|
831
841
|
|
|
832
|
-
<p class="definition">Definition at line <a class="el" href="AccessPath_8cpp_source.html#
|
|
833
|
-
<div class="fragment"><div class="line"><a name="
|
|
834
|
-
<div class="line"><a name="
|
|
835
|
-
<div class="line"><a name="
|
|
836
|
-
<div class="line"><a name="
|
|
837
|
-
<div class="line"><a name="
|
|
838
|
-
<div class="line"><a name="
|
|
839
|
-
<div class="line"><a name="
|
|
840
|
-
<div class="line"><a name="
|
|
841
|
-
<div class="line"><a name="
|
|
842
|
-
<div class="line"><a name="
|
|
843
|
-
<div class="line"><a name="
|
|
844
|
-
<div class="line"><a name="
|
|
845
|
-
<div class="line"><a name="
|
|
846
|
-
<div class="line"><a name="
|
|
847
|
-
<div class="line"><a name="
|
|
848
|
-
<div class="line"><a name="
|
|
849
|
-
<div class="line"><a name="
|
|
850
|
-
<div class="line"><a name="
|
|
851
|
-
<div class="line"><a name="
|
|
852
|
-
<div class="line"><a name="
|
|
853
|
-
<div class="line"><a name="
|
|
854
|
-
<div class="line"><a name="
|
|
842
|
+
<p class="definition">Definition at line <a class="el" href="AccessPath_8cpp_source.html#l00238">238</a> of file <a class="el" href="AccessPath_8cpp_source.html">AccessPath.cpp</a>.</p>
|
|
843
|
+
<div class="fragment"><div class="line"><a name="l00239"></a><span class="lineno"> 239</span> {</div>
|
|
844
|
+
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1AccessPath.html#aa1747064a0833855a5848ebf4a4d65fa">fldIdx</a> != rhs.<a class="code" href="classSVF_1_1AccessPath.html#aa1747064a0833855a5848ebf4a4d65fa">fldIdx</a>)</div>
|
|
845
|
+
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <span class="keywordflow">return</span> (<a class="code" href="classSVF_1_1AccessPath.html#aa1747064a0833855a5848ebf4a4d65fa">fldIdx</a> < rhs.<a class="code" href="classSVF_1_1AccessPath.html#aa1747064a0833855a5848ebf4a4d65fa">fldIdx</a>);</div>
|
|
846
|
+
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <span class="keywordflow">else</span></div>
|
|
847
|
+
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  {</div>
|
|
848
|
+
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1AccessPath.html#a73ba2fd20ff0e21a2f09a3396f2596f8">OffsetVarAndGepTypePairs</a>& pairVec = <a class="code" href="classSVF_1_1AccessPath.html#ab0641554924d44f16c2831cac63ccf8b">getOffsetVarAndGepTypePairVec</a>();</div>
|
|
849
|
+
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1AccessPath.html#a73ba2fd20ff0e21a2f09a3396f2596f8">OffsetVarAndGepTypePairs</a>& rhsPairVec = rhs.<a class="code" href="classSVF_1_1AccessPath.html#ab0641554924d44f16c2831cac63ccf8b">getOffsetVarAndGepTypePairVec</a>();</div>
|
|
850
|
+
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <span class="keywordflow">if</span> (pairVec.size() != rhsPairVec.size())</div>
|
|
851
|
+
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <span class="keywordflow">return</span> (pairVec.size() < rhsPairVec.size());</div>
|
|
852
|
+
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <span class="keywordflow">else</span></div>
|
|
853
|
+
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  {</div>
|
|
854
|
+
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  OffsetVarAndGepTypePairs::const_iterator it = pairVec.begin();</div>
|
|
855
|
+
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  OffsetVarAndGepTypePairs::const_iterator rhsIt = rhsPairVec.begin();</div>
|
|
856
|
+
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  <span class="keywordflow">for</span> (; it != pairVec.end() && rhsIt != rhsPairVec.end(); ++it, ++rhsIt)</div>
|
|
857
|
+
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  {</div>
|
|
858
|
+
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <span class="keywordflow">return</span> (*it) < (*rhsIt);</div>
|
|
859
|
+
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  }</div>
|
|
860
|
+
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  </div>
|
|
861
|
+
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
862
|
+
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  }</div>
|
|
863
|
+
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  }</div>
|
|
864
|
+
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span> }</div>
|
|
855
865
|
</div><!-- fragment -->
|
|
856
866
|
</div>
|
|
857
867
|
</div>
|
|
@@ -1091,7 +1101,7 @@ Friends</h2></td></tr>
|
|
|
1091
1101
|
<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#l00344">SVFType.h:344</a></div></div>
|
|
1092
1102
|
<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>
|
|
1093
1103
|
<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>
|
|
1094
|
-
<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#
|
|
1104
|
+
<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#l00221">AccessPath.cpp:221</a></div></div>
|
|
1095
1105
|
<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>
|
|
1096
1106
|
<div class="ttc" id="aclassSVF_1_1AccessPath_html_aabb6c9600fac408f36b9fde013597245ab1ba3a42758473e5ff427ba36147a56a"><div class="ttname"><a href="classSVF_1_1AccessPath.html#aabb6c9600fac408f36b9fde013597245ab1ba3a42758473e5ff427ba36147a56a">SVF::AccessPath::Same</a></div><div class="ttdeci">@ Same</div><div class="ttdef"><b>Definition:</b> <a href="AccessPath_8h_source.html#l00061">AccessPath.h:61</a></div></div>
|
|
1097
1107
|
<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>
|
|
@@ -915,7 +915,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
915
915
|
<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>
|
|
916
916
|
<div class="ttc" id="aclassSVF_1_1GepStmt_html_a6c74f234a6b40bc5292bb14874c2e600"><div class="ttname"><a href="classSVF_1_1GepStmt.html#a6c74f234a6b40bc5292bb14874c2e600">SVF::GepStmt::getAccessPath</a></div><div class="ttdeci">const AccessPath & getAccessPath() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00490">SVFStatements.h:490</a></div></div>
|
|
917
917
|
<div class="ttc" id="aclassSVF_1_1AssignStmt_html_abc65520cc2b9608c97374829eb475c57"><div class="ttname"><a href="classSVF_1_1AssignStmt.html#abc65520cc2b9608c97374829eb475c57">SVF::AssignStmt::AssignStmt</a></div><div class="ttdeci">AssignStmt()</div><div class="ttdoc">place holder</div></div>
|
|
918
|
-
<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#
|
|
918
|
+
<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#l00179">AccessPath.cpp:179</a></div></div>
|
|
919
919
|
<div class="ttc" id="aclassSVF_1_1AccessPath_html_ab0641554924d44f16c2831cac63ccf8b"><div class="ttname"><a href="classSVF_1_1AccessPath.html#ab0641554924d44f16c2831cac63ccf8b">SVF::AccessPath::getOffsetVarAndGepTypePairVec</a></div><div class="ttdeci">const OffsetVarAndGepTypePairs & getOffsetVarAndGepTypePairVec() const</div><div class="ttdef"><b>Definition:</b> <a href="AccessPath_8h_source.html#l00106">AccessPath.h:106</a></div></div>
|
|
920
920
|
<div class="ttc" id="aclassSVF_1_1SVFStmt_html_abb784290c90d26f35897fa15bae277d2"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#abb784290c90d26f35897fa15bae277d2">SVF::SVFStmt::getValue</a></div><div class="ttdeci">const SVFValue * getValue() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00147">SVFStatements.h:147</a></div></div>
|
|
921
921
|
<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>
|
|
@@ -74,7 +74,7 @@ $(function() {
|
|
|
74
74
|
: <a class="el" href="extapi_8c.html#ac94fb461ca9c5d62db380781a58a7f82">extapi.c</a>
|
|
75
75
|
</li>
|
|
76
76
|
<li>traverseOnICFG()
|
|
77
|
-
: <a class="el" href="svf-ex_8cpp.html#
|
|
77
|
+
: <a class="el" href="svf-ex_8cpp.html#a19f3fe331a1e7050a513672a91743b96">svf-ex.cpp</a>
|
|
78
78
|
</li>
|
|
79
79
|
<li>traverseOnSVFStmt()
|
|
80
80
|
: <a class="el" href="svf-ex_8cpp.html#a8fa9e6583c354b1883a32b8abf98779f">svf-ex.cpp</a>
|
|
@@ -80,7 +80,7 @@ $(function() {
|
|
|
80
80
|
: <a class="el" href="extapi_8c.html#ac94fb461ca9c5d62db380781a58a7f82">extapi.c</a>
|
|
81
81
|
</li>
|
|
82
82
|
<li>traverseOnICFG()
|
|
83
|
-
: <a class="el" href="svf-ex_8cpp.html#
|
|
83
|
+
: <a class="el" href="svf-ex_8cpp.html#a19f3fe331a1e7050a513672a91743b96">svf-ex.cpp</a>
|
|
84
84
|
</li>
|
|
85
85
|
<li>traverseOnSVFStmt()
|
|
86
86
|
: <a class="el" href="svf-ex_8cpp.html#a8fa9e6583c354b1883a32b8abf98779f">svf-ex.cpp</a>
|
|
@@ -167,7 +167,7 @@ var searchData=
|
|
|
167
167
|
['translatestore_5842',['translateStore',['../classSVF_1_1SVFIR2ConsExeState.html#a9541d935efa7fce9cf9d204050e2a918',1,'SVF::SVFIR2ConsExeState::translateStore()'],['../classSVF_1_1SVFIR2ItvExeState.html#aed2e41879bae8389c49e69356b7aaac5',1,'SVF::SVFIR2ItvExeState::translateStore()']]],
|
|
168
168
|
['translatestorerel_5843',['translateStoreRel',['../classSVF_1_1SVFIR2ItvExeState.html#ac57d2a609c1159b4f653965eadce58cc',1,'SVF::SVFIR2ItvExeState']]],
|
|
169
169
|
['traversedendrogram_5844',['traverseDendrogram',['../classSVF_1_1NodeIDAllocator_1_1Clusterer.html#abd44e3b07b0482bacf6b1a080fe650c6',1,'SVF::NodeIDAllocator::Clusterer']]],
|
|
170
|
-
['traverseonicfg_5845',['traverseOnICFG',['../svf-ex_8cpp.html#
|
|
170
|
+
['traverseonicfg_5845',['traverseOnICFG',['../svf-ex_8cpp.html#a19f3fe331a1e7050a513672a91743b96',1,'svf-ex.cpp']]],
|
|
171
171
|
['traverseonsvfstmt_5846',['traverseOnSVFStmt',['../svf-ex_8cpp.html#a8fa9e6583c354b1883a32b8abf98779f',1,'svf-ex.cpp']]],
|
|
172
172
|
['traverseonvfg_5847',['traverseOnVFG',['../svf-ex_8cpp.html#ad58149e5445ad22ce478339e103ab42b',1,'svf-ex.cpp']]],
|
|
173
173
|
['treenode_5848',['TreeNode',['../structSVF_1_1POCRHybridSolver_1_1TreeNode.html',1,'SVF::POCRHybridSolver::TreeNode'],['../structSVF_1_1POCRHybridSolver_1_1TreeNode.html#a2bedc69e7062cf96058395d3f7ebd030',1,'SVF::POCRHybridSolver::TreeNode::TreeNode()']]],
|
|
@@ -54,7 +54,7 @@ var searchData=
|
|
|
54
54
|
['translatestore_10421',['translateStore',['../classSVF_1_1SVFIR2ConsExeState.html#a9541d935efa7fce9cf9d204050e2a918',1,'SVF::SVFIR2ConsExeState::translateStore()'],['../classSVF_1_1SVFIR2ItvExeState.html#aed2e41879bae8389c49e69356b7aaac5',1,'SVF::SVFIR2ItvExeState::translateStore()']]],
|
|
55
55
|
['translatestorerel_10422',['translateStoreRel',['../classSVF_1_1SVFIR2ItvExeState.html#ac57d2a609c1159b4f653965eadce58cc',1,'SVF::SVFIR2ItvExeState']]],
|
|
56
56
|
['traversedendrogram_10423',['traverseDendrogram',['../classSVF_1_1NodeIDAllocator_1_1Clusterer.html#abd44e3b07b0482bacf6b1a080fe650c6',1,'SVF::NodeIDAllocator::Clusterer']]],
|
|
57
|
-
['traverseonicfg_10424',['traverseOnICFG',['../svf-ex_8cpp.html#
|
|
57
|
+
['traverseonicfg_10424',['traverseOnICFG',['../svf-ex_8cpp.html#a19f3fe331a1e7050a513672a91743b96',1,'svf-ex.cpp']]],
|
|
58
58
|
['traverseonsvfstmt_10425',['traverseOnSVFStmt',['../svf-ex_8cpp.html#a8fa9e6583c354b1883a32b8abf98779f',1,'svf-ex.cpp']]],
|
|
59
59
|
['traverseonvfg_10426',['traverseOnVFG',['../svf-ex_8cpp.html#ad58149e5445ad22ce478339e103ab42b',1,'svf-ex.cpp']]],
|
|
60
60
|
['treenode_10427',['TreeNode',['../structSVF_1_1POCRHybridSolver_1_1TreeNode.html#a2bedc69e7062cf96058395d3f7ebd030',1,'SVF::POCRHybridSolver::TreeNode']]],
|