svf-tools 1.0.821 → 1.0.823

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.
Files changed (37) hide show
  1. package/SVF-doxygen/html/AccessPath_8cpp_source.html +130 -125
  2. package/SVF-doxygen/html/AccessPath_8h_source.html +5 -5
  3. package/SVF-doxygen/html/CFGrammar_8cpp_source.html +3 -3
  4. package/SVF-doxygen/html/CommandLine_8h_source.html +1 -1
  5. package/SVF-doxygen/html/ExtAPI_8cpp.html +1 -1
  6. package/SVF-doxygen/html/ExtAPI_8cpp_source.html +2 -2
  7. package/SVF-doxygen/html/SVFFileSystem_8cpp_source.html +1 -1
  8. package/SVF-doxygen/html/SVFG_8cpp_source.html +5 -5
  9. package/SVF-doxygen/html/SVFIR2ItvExeState_8cpp_source.html +571 -567
  10. package/SVF-doxygen/html/SVFIR2ItvExeState_8h_source.html +14 -14
  11. package/SVF-doxygen/html/SVFUtil_8cpp_source.html +1 -1
  12. package/SVF-doxygen/html/VFG_8cpp_source.html +4 -5
  13. package/SVF-doxygen/html/cJSON_8cpp.html +2 -2
  14. package/SVF-doxygen/html/cJSON_8cpp_source.html +2 -2
  15. package/SVF-doxygen/html/classOption.html +1 -1
  16. package/SVF-doxygen/html/classSVF_1_1AccessPath.html +123 -118
  17. package/SVF-doxygen/html/classSVF_1_1ExtAPI.html +1 -1
  18. package/SVF-doxygen/html/classSVF_1_1GrammarBase.html +3 -3
  19. package/SVF-doxygen/html/classSVF_1_1SVFG.html +5 -5
  20. package/SVF-doxygen/html/classSVF_1_1SVFIR2ItvExeState.html +544 -540
  21. package/SVF-doxygen/html/classSVF_1_1SVFIRReader.html +1 -1
  22. package/SVF-doxygen/html/classSVF_1_1VFG.html +4 -5
  23. package/SVF-doxygen/html/extapi_8c.html +527 -450
  24. package/SVF-doxygen/html/extapi_8c_source.html +1218 -1177
  25. package/SVF-doxygen/html/globals.html +1 -0
  26. package/SVF-doxygen/html/globals_func.html +1 -1
  27. package/SVF-doxygen/html/namespaceSVF_1_1SVFUtil.html +1 -1
  28. package/SVF-doxygen/html/search/all_0.js +1 -1
  29. package/SVF-doxygen/html/search/functions_0.js +1 -1
  30. package/SVF-doxygen/html/svf-ex_8cpp.html +11 -11
  31. package/SVF-doxygen/html/svf-ex_8cpp_source.html +11 -11
  32. package/package.json +1 -1
  33. package/svf/lib/AbstractExecution/SVFIR2ItvExeState.cpp +4 -0
  34. package/svf/lib/Graphs/SVFG.cpp +4 -4
  35. package/svf/lib/Graphs/VFG.cpp +4 -4
  36. package/svf/lib/MemoryModel/AccessPath.cpp +5 -0
  37. package/svf-llvm/lib/extapi.c +61 -20
@@ -416,26 +416,26 @@ Friends</h2></td></tr>
416
416
 
417
417
  <p>Check relations of two location sets. </p>
418
418
 
419
- <p class="definition">Definition at line <a class="el" href="AccessPath_8cpp_source.html#l00299">299</a> of file <a class="el" href="AccessPath_8cpp_source.html">AccessPath.cpp</a>.</p>
420
- <div class="fragment"><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160;{</div>
421
- <div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> lhsLocations = LHS.<a class="code" href="classSVF_1_1AccessPath.html#a76222b6571e46e8a8bd5c8c597c8ffaf">computeAllLocations</a>();</div>
422
- <div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> rhsLocations = RHS.<a class="code" href="classSVF_1_1AccessPath.html#a76222b6571e46e8a8bd5c8c597c8ffaf">computeAllLocations</a>();</div>
423
- <div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <span class="keywordflow">if</span> (lhsLocations.<a class="code" href="classSVF_1_1SparseBitVector.html#a16756e0545fd3d50ab89f45a2e83bb79">intersects</a>(rhsLocations))</div>
424
- <div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; {</div>
425
- <div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <span class="keywordflow">if</span> (lhsLocations == rhsLocations)</div>
426
- <div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1AccessPath.html#aabb6c9600fac408f36b9fde013597245ab1ba3a42758473e5ff427ba36147a56a">Same</a>;</div>
427
- <div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhsLocations.<a class="code" href="classSVF_1_1SparseBitVector.html#abbd0e0cf759fad7858224ed8a63aade8">contains</a>(rhsLocations))</div>
428
- <div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1AccessPath.html#aabb6c9600fac408f36b9fde013597245a52a64f855e6233e88b319cf2f3442f14">Superset</a>;</div>
429
- <div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (rhsLocations.<a class="code" href="classSVF_1_1SparseBitVector.html#abbd0e0cf759fad7858224ed8a63aade8">contains</a>(lhsLocations))</div>
430
- <div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1AccessPath.html#aabb6c9600fac408f36b9fde013597245a45bfb1e14fd39a700dba1243afe022e4">Subset</a>;</div>
431
- <div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <span class="keywordflow">else</span></div>
432
- <div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1AccessPath.html#aabb6c9600fac408f36b9fde013597245afbdf7000b827f7d8590e5f0997e0d59a">Overlap</a>;</div>
433
- <div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; }</div>
434
- <div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <span class="keywordflow">else</span></div>
435
- <div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; {</div>
436
- <div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1AccessPath.html#aabb6c9600fac408f36b9fde013597245acb3c4a3f685068e391025eb01ebf061d">NonOverlap</a>;</div>
437
- <div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; }</div>
438
- <div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160;}</div>
419
+ <p class="definition">Definition at line <a class="el" href="AccessPath_8cpp_source.html#l00304">304</a> of file <a class="el" href="AccessPath_8cpp_source.html">AccessPath.cpp</a>.</p>
420
+ <div class="fragment"><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160;{</div>
421
+ <div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> lhsLocations = LHS.<a class="code" href="classSVF_1_1AccessPath.html#a76222b6571e46e8a8bd5c8c597c8ffaf">computeAllLocations</a>();</div>
422
+ <div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> rhsLocations = RHS.<a class="code" href="classSVF_1_1AccessPath.html#a76222b6571e46e8a8bd5c8c597c8ffaf">computeAllLocations</a>();</div>
423
+ <div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <span class="keywordflow">if</span> (lhsLocations.<a class="code" href="classSVF_1_1SparseBitVector.html#a16756e0545fd3d50ab89f45a2e83bb79">intersects</a>(rhsLocations))</div>
424
+ <div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; {</div>
425
+ <div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <span class="keywordflow">if</span> (lhsLocations == rhsLocations)</div>
426
+ <div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1AccessPath.html#aabb6c9600fac408f36b9fde013597245ab1ba3a42758473e5ff427ba36147a56a">Same</a>;</div>
427
+ <div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhsLocations.<a class="code" href="classSVF_1_1SparseBitVector.html#abbd0e0cf759fad7858224ed8a63aade8">contains</a>(rhsLocations))</div>
428
+ <div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1AccessPath.html#aabb6c9600fac408f36b9fde013597245a52a64f855e6233e88b319cf2f3442f14">Superset</a>;</div>
429
+ <div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (rhsLocations.<a class="code" href="classSVF_1_1SparseBitVector.html#abbd0e0cf759fad7858224ed8a63aade8">contains</a>(lhsLocations))</div>
430
+ <div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1AccessPath.html#aabb6c9600fac408f36b9fde013597245a45bfb1e14fd39a700dba1243afe022e4">Subset</a>;</div>
431
+ <div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <span class="keywordflow">else</span></div>
432
+ <div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1AccessPath.html#aabb6c9600fac408f36b9fde013597245afbdf7000b827f7d8590e5f0997e0d59a">Overlap</a>;</div>
433
+ <div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; }</div>
434
+ <div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <span class="keywordflow">else</span></div>
435
+ <div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; {</div>
436
+ <div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1AccessPath.html#aabb6c9600fac408f36b9fde013597245acb3c4a3f685068e391025eb01ebf061d">NonOverlap</a>;</div>
437
+ <div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; }</div>
438
+ <div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160;}</div>
439
439
  </div><!-- fragment -->
440
440
  </div>
441
441
  </div>
@@ -465,12 +465,12 @@ Friends</h2></td></tr>
465
465
  <p>Compute all possible locations according to offset and number-stride pairs. </p>
466
466
  <p>Compute all possible locations according to offset and number-stride pairs. </p>
467
467
 
468
- <p class="definition">Definition at line <a class="el" href="AccessPath_8cpp_source.html#l00257">257</a> of file <a class="el" href="AccessPath_8cpp_source.html">AccessPath.cpp</a>.</p>
469
- <div class="fragment"><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160;{</div>
470
- <div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> result;</div>
471
- <div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; result.<a class="code" href="classSVF_1_1SparseBitVector.html#a61bd86909a141f9de873d92c0f904832">set</a>(<a class="code" href="classSVF_1_1AccessPath.html#a5427d08c9eb9d86e66c2bff6aeba6bac">getConstantStructFldIdx</a>());</div>
472
- <div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <span class="keywordflow">return</span> result;</div>
473
- <div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160;}</div>
468
+ <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>
469
+ <div class="fragment"><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160;{</div>
470
+ <div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> result;</div>
471
+ <div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; result.<a class="code" href="classSVF_1_1SparseBitVector.html#a61bd86909a141f9de873d92c0f904832">set</a>(<a class="code" href="classSVF_1_1AccessPath.html#a5427d08c9eb9d86e66c2bff6aeba6bac">getConstantStructFldIdx</a>());</div>
472
+ <div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <span class="keywordflow">return</span> result;</div>
473
+ <div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160;}</div>
474
474
  </div><!-- fragment -->
475
475
  </div>
476
476
  </div>
@@ -568,47 +568,52 @@ Friends</h2></td></tr>
568
568
  <div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; assert(<a class="code" href="classSVF_1_1AccessPath.html#a403312192a96a9fd5e7d071481592a7f">isConstantOffset</a>() &amp;&amp; <span class="stringliteral">&quot;not a constant offset&quot;</span>);</div>
569
569
  <div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; </div>
570
570
  <div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <a class="code" href="namespaceSVF.html#a5c4820681ef340339ddded756eb82ae1">APOffset</a> totalConstOffset = 0;</div>
571
- <div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = <a class="code" href="classSVF_1_1AccessPath.html#a47855e8ab3bba692f443903b58618229">idxOperandPairs</a>.size() - 1; i &gt;= 0; i--)</div>
572
- <div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; {</div>
573
- <div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* value = <a class="code" href="classSVF_1_1AccessPath.html#a47855e8ab3bba692f443903b58618229">idxOperandPairs</a>[i].first-&gt;getValue();</div>
574
- <div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <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#a47855e8ab3bba692f443903b58618229">idxOperandPairs</a>[i].second;</div>
575
- <div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFConstantInt.html">SVFConstantInt</a>* op = SVFUtil::dyn_cast&lt;SVFConstantInt&gt;(value);</div>
576
- <div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; assert(op &amp;&amp; <span class="stringliteral">&quot;not a constant offset?&quot;</span>);</div>
577
- <div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>==<span class="keyword">nullptr</span>)</div>
578
- <div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; {</div>
579
- <div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; totalConstOffset += op-&gt;<a class="code" href="classSVF_1_1SVFConstantInt.html#a73f04bdfc19261b65164b98787bc2ed4">getSExtValue</a>();</div>
580
- <div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <span class="keywordflow">continue</span>;</div>
581
- <div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; }</div>
582
- <div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; </div>
583
- <div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFPointerType.html">SVFPointerType</a>* pty = SVFUtil::dyn_cast&lt;SVFPointerType&gt;(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>))</div>
584
- <div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; totalConstOffset += op-&gt;<a class="code" href="classSVF_1_1SVFConstantInt.html#a73f04bdfc19261b65164b98787bc2ed4">getSExtValue</a>() * <a class="code" href="classSVF_1_1AccessPath.html#a3c98f0c5f07109f9da0a8a897aa51d18">getElementNum</a>(pty-&gt;getPtrElementType());</div>
585
- <div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <span class="keywordflow">else</span></div>
586
- <div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; {</div>
587
- <div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <a class="code" href="namespaceSVF.html#a5c4820681ef340339ddded756eb82ae1">APOffset</a> <a class="code" href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a> = op-&gt;<a class="code" href="classSVF_1_1SVFConstantInt.html#a73f04bdfc19261b65164b98787bc2ed4">getSExtValue</a>();</div>
588
- <div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a> &gt;= 0)</div>
589
- <div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; {</div>
590
- <div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <span class="keyword">const</span> std::vector&lt;u32_t&gt;&amp; so = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a5dc699aa85fe879eb4b2c9109cf3030d">getTypeInfo</a>(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>)-&gt;<a class="code" href="classSVF_1_1StInfo.html#a55e5fd85f232c1867c5c6a73646d53eb">getFlattenedElemIdxVec</a>();</div>
591
- <div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <span class="comment">// if offset is larger than the size of getFlattenedElemIdxVec (overflow)</span></div>
592
- <div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <span class="comment">// set offset the last index of getFlattenedElemIdxVec to avoid assertion</span></div>
593
- <div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a> &gt;= (<a class="code" href="namespaceSVF.html#a5c4820681ef340339ddded756eb82ae1">APOffset</a>)so.size())</div>
594
- <div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; {</div>
595
- <div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVFUtil::errs</a>() &lt;&lt; <span class="stringliteral">&quot;It is overflow access, we access the last idx\n&quot;</span>;</div>
596
- <div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <a class="code" href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a> = so.size() - 1;</div>
597
- <div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; }</div>
598
- <div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="keywordflow">else</span></div>
571
+ <div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="comment">//After the model-const and model-array options are turned on,</span></div>
572
+ <div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="comment">// the gepstmt offset generated by the array on the global</span></div>
573
+ <div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <span class="comment">// node will be saved in getConstantStructFldIdx</span></div>
574
+ <div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1AccessPath.html#a47855e8ab3bba692f443903b58618229">idxOperandPairs</a>.size() == 0)</div>
575
+ <div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1AccessPath.html#a5427d08c9eb9d86e66c2bff6aeba6bac">getConstantStructFldIdx</a>();</div>
576
+ <div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = <a class="code" href="classSVF_1_1AccessPath.html#a47855e8ab3bba692f443903b58618229">idxOperandPairs</a>.size() - 1; i &gt;= 0; i--)</div>
577
+ <div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; {</div>
578
+ <div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* value = <a class="code" href="classSVF_1_1AccessPath.html#a47855e8ab3bba692f443903b58618229">idxOperandPairs</a>[i].first-&gt;getValue();</div>
579
+ <div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; <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#a47855e8ab3bba692f443903b58618229">idxOperandPairs</a>[i].second;</div>
580
+ <div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFConstantInt.html">SVFConstantInt</a>* op = SVFUtil::dyn_cast&lt;SVFConstantInt&gt;(value);</div>
581
+ <div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; assert(op &amp;&amp; <span class="stringliteral">&quot;not a constant offset?&quot;</span>);</div>
582
+ <div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>==<span class="keyword">nullptr</span>)</div>
583
+ <div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; {</div>
584
+ <div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; totalConstOffset += op-&gt;<a class="code" href="classSVF_1_1SVFConstantInt.html#a73f04bdfc19261b65164b98787bc2ed4">getSExtValue</a>();</div>
585
+ <div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <span class="keywordflow">continue</span>;</div>
586
+ <div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; }</div>
587
+ <div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; </div>
588
+ <div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFPointerType.html">SVFPointerType</a>* pty = SVFUtil::dyn_cast&lt;SVFPointerType&gt;(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>))</div>
589
+ <div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; totalConstOffset += op-&gt;<a class="code" href="classSVF_1_1SVFConstantInt.html#a73f04bdfc19261b65164b98787bc2ed4">getSExtValue</a>() * <a class="code" href="classSVF_1_1AccessPath.html#a3c98f0c5f07109f9da0a8a897aa51d18">getElementNum</a>(pty-&gt;getPtrElementType());</div>
590
+ <div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <span class="keywordflow">else</span></div>
591
+ <div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; {</div>
592
+ <div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <a class="code" href="namespaceSVF.html#a5c4820681ef340339ddded756eb82ae1">APOffset</a> <a class="code" href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a> = op-&gt;<a class="code" href="classSVF_1_1SVFConstantInt.html#a73f04bdfc19261b65164b98787bc2ed4">getSExtValue</a>();</div>
593
+ <div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a> &gt;= 0)</div>
594
+ <div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; {</div>
595
+ <div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="keyword">const</span> std::vector&lt;u32_t&gt;&amp; so = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a5dc699aa85fe879eb4b2c9109cf3030d">getTypeInfo</a>(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>)-&gt;<a class="code" href="classSVF_1_1StInfo.html#a55e5fd85f232c1867c5c6a73646d53eb">getFlattenedElemIdxVec</a>();</div>
596
+ <div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="comment">// if offset is larger than the size of getFlattenedElemIdxVec (overflow)</span></div>
597
+ <div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <span class="comment">// set offset the last index of getFlattenedElemIdxVec to avoid assertion</span></div>
598
+ <div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a> &gt;= (<a class="code" href="namespaceSVF.html#a5c4820681ef340339ddded756eb82ae1">APOffset</a>)so.size())</div>
599
599
  <div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; {</div>
600
- <div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; </div>
601
- <div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; }</div>
602
- <div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; </div>
603
- <div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> flattenOffset =</div>
604
- <div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a24df52313f8093bb651ae9da972cd663">getFlattenedElemIdx</a>(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>,</div>
605
- <div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <a class="code" href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a>);</div>
606
- <div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; totalConstOffset += flattenOffset;</div>
607
- <div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; }</div>
608
- <div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; }</div>
609
- <div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; }</div>
610
- <div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <span class="keywordflow">return</span> totalConstOffset;</div>
611
- <div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160;}</div>
600
+ <div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVFUtil::errs</a>() &lt;&lt; <span class="stringliteral">&quot;It is overflow access, we access the last idx\n&quot;</span>;</div>
601
+ <div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <a class="code" href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a> = so.size() - 1;</div>
602
+ <div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; }</div>
603
+ <div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <span class="keywordflow">else</span></div>
604
+ <div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; {</div>
605
+ <div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; </div>
606
+ <div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; }</div>
607
+ <div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; </div>
608
+ <div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> flattenOffset =</div>
609
+ <div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a24df52313f8093bb651ae9da972cd663">getFlattenedElemIdx</a>(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>,</div>
610
+ <div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <a class="code" href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a>);</div>
611
+ <div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; totalConstOffset += flattenOffset;</div>
612
+ <div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; }</div>
613
+ <div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; }</div>
614
+ <div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; }</div>
615
+ <div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; <span class="keywordflow">return</span> totalConstOffset;</div>
616
+ <div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160;}</div>
612
617
  </div><!-- fragment -->
613
618
  </div>
614
619
  </div>
@@ -629,24 +634,24 @@ Friends</h2></td></tr>
629
634
 
630
635
  <p>Dump location set. </p>
631
636
 
632
- <p class="definition">Definition at line <a class="el" href="AccessPath_8cpp_source.html#l00321">321</a> of file <a class="el" href="AccessPath_8cpp_source.html">AccessPath.cpp</a>.</p>
633
- <div class="fragment"><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160;{</div>
634
- <div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div>
635
- <div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; std::stringstream rawstr(str);</div>
636
- <div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; </div>
637
- <div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;AccessPath\tField_Index: &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1AccessPath.html#a5427d08c9eb9d86e66c2bff6aeba6bac">getConstantStructFldIdx</a>();</div>
638
- <div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;,\tNum-Stride: {&quot;</span>;</div>
639
- <div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1AccessPath.html#a04ca154a70f40999a6a28c505bfd942d">IdxOperandPairs</a>&amp; vec = <a class="code" href="classSVF_1_1AccessPath.html#a586c71842e3e4487921aa3384ce9d025">getIdxOperandPairVec</a>();</div>
640
- <div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; IdxOperandPairs::const_iterator it = vec.begin();</div>
641
- <div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; IdxOperandPairs::const_iterator eit = vec.end();</div>
642
- <div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <span class="keywordflow">for</span> (; it != eit; ++it)</div>
643
- <div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; {</div>
644
- <div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* ty = it-&gt;second;</div>
645
- <div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; (Svf var: &quot;</span> &lt;&lt; it-&gt;first-&gt;<a class="code" href="classSVF_1_1SVFType.html#a9035ac13134de4647d63507cd80ca3d6">toString</a>() &lt;&lt; <span class="stringliteral">&quot;, Iter type: &quot;</span> &lt;&lt; *ty &lt;&lt; <span class="stringliteral">&quot;)&quot;</span>;</div>
646
- <div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; }</div>
647
- <div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; }\n&quot;</span>;</div>
648
- <div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div>
649
- <div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160;}</div>
637
+ <p class="definition">Definition at line <a class="el" href="AccessPath_8cpp_source.html#l00326">326</a> of file <a class="el" href="AccessPath_8cpp_source.html">AccessPath.cpp</a>.</p>
638
+ <div class="fragment"><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160;{</div>
639
+ <div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div>
640
+ <div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; std::stringstream rawstr(str);</div>
641
+ <div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; </div>
642
+ <div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;AccessPath\tField_Index: &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1AccessPath.html#a5427d08c9eb9d86e66c2bff6aeba6bac">getConstantStructFldIdx</a>();</div>
643
+ <div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;,\tNum-Stride: {&quot;</span>;</div>
644
+ <div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1AccessPath.html#a04ca154a70f40999a6a28c505bfd942d">IdxOperandPairs</a>&amp; vec = <a class="code" href="classSVF_1_1AccessPath.html#a586c71842e3e4487921aa3384ce9d025">getIdxOperandPairVec</a>();</div>
645
+ <div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; IdxOperandPairs::const_iterator it = vec.begin();</div>
646
+ <div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; IdxOperandPairs::const_iterator eit = vec.end();</div>
647
+ <div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <span class="keywordflow">for</span> (; it != eit; ++it)</div>
648
+ <div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; {</div>
649
+ <div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* ty = it-&gt;second;</div>
650
+ <div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; (Svf var: &quot;</span> &lt;&lt; it-&gt;first-&gt;<a class="code" href="classSVF_1_1SVFType.html#a9035ac13134de4647d63507cd80ca3d6">toString</a>() &lt;&lt; <span class="stringliteral">&quot;, Iter type: &quot;</span> &lt;&lt; *ty &lt;&lt; <span class="stringliteral">&quot;)&quot;</span>;</div>
651
+ <div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; }</div>
652
+ <div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; }\n&quot;</span>;</div>
653
+ <div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div>
654
+ <div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160;}</div>
650
655
  </div><!-- fragment -->
651
656
  </div>
652
657
  </div>
@@ -919,16 +924,16 @@ Friends</h2></td></tr>
919
924
 
920
925
  <p>Overload operators. </p>
921
926
 
922
- <p class="definition">Definition at line <a class="el" href="AccessPath_8cpp_source.html#l00264">264</a> of file <a class="el" href="AccessPath_8cpp_source.html">AccessPath.cpp</a>.</p>
923
- <div class="fragment"><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160;{</div>
924
- <div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; assert(<a class="code" href="classSVF_1_1AccessPath.html#a1d75baf851ba9982ac0861c850929985">gepPointeeType</a> == rhs.<a class="code" href="classSVF_1_1AccessPath.html#a8e0c5f7549c3b6a7808caacd57bf2035">getGepPointeeType</a>() &amp;&amp; <span class="stringliteral">&quot;source element type not match&quot;</span>);</div>
925
- <div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <a class="code" href="classSVF_1_1AccessPath.html">AccessPath</a> ap(rhs);</div>
926
- <div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; ap.fldIdx += <a class="code" href="classSVF_1_1AccessPath.html#a5427d08c9eb9d86e66c2bff6aeba6bac">getConstantStructFldIdx</a>();</div>
927
- <div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> &amp;<a class="code" href="cJSON_8cpp.html#a009ef1d888ab6dbe77e6b42b0b39f1ae">p</a> : ap.getIdxOperandPairVec())</div>
928
- <div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; 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>
929
- <div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; </div>
930
- <div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <span class="keywordflow">return</span> ap;</div>
931
- <div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160;}</div>
927
+ <p class="definition">Definition at line <a class="el" href="AccessPath_8cpp_source.html#l00269">269</a> of file <a class="el" href="AccessPath_8cpp_source.html">AccessPath.cpp</a>.</p>
928
+ <div class="fragment"><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160;{</div>
929
+ <div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; assert(<a class="code" href="classSVF_1_1AccessPath.html#a1d75baf851ba9982ac0861c850929985">gepPointeeType</a> == rhs.<a class="code" href="classSVF_1_1AccessPath.html#a8e0c5f7549c3b6a7808caacd57bf2035">getGepPointeeType</a>() &amp;&amp; <span class="stringliteral">&quot;source element type not match&quot;</span>);</div>
930
+ <div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <a class="code" href="classSVF_1_1AccessPath.html">AccessPath</a> ap(rhs);</div>
931
+ <div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; ap.fldIdx += <a class="code" href="classSVF_1_1AccessPath.html#a5427d08c9eb9d86e66c2bff6aeba6bac">getConstantStructFldIdx</a>();</div>
932
+ <div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> &amp;<a class="code" href="cJSON_8cpp.html#a009ef1d888ab6dbe77e6b42b0b39f1ae">p</a> : ap.getIdxOperandPairVec())</div>
933
+ <div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; 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>
934
+ <div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; </div>
935
+ <div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <span class="keywordflow">return</span> ap;</div>
936
+ <div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160;}</div>
932
937
  </div><!-- fragment -->
933
938
  </div>
934
939
  </div>
@@ -948,29 +953,29 @@ Friends</h2></td></tr>
948
953
  </table>
949
954
  </div><div class="memdoc">
950
955
 
951
- <p class="definition">Definition at line <a class="el" href="AccessPath_8cpp_source.html#l00275">275</a> of file <a class="el" href="AccessPath_8cpp_source.html">AccessPath.cpp</a>.</p>
952
- <div class="fragment"><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160;{</div>
953
- <div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <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>
954
- <div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <span class="keywordflow">return</span> (<a class="code" href="classSVF_1_1AccessPath.html#aa1747064a0833855a5848ebf4a4d65fa">fldIdx</a> &lt; rhs.<a class="code" href="classSVF_1_1AccessPath.html#aa1747064a0833855a5848ebf4a4d65fa">fldIdx</a>);</div>
955
- <div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <span class="keywordflow">else</span></div>
956
- <div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; {</div>
957
- <div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1AccessPath.html#a04ca154a70f40999a6a28c505bfd942d">IdxOperandPairs</a>&amp; pairVec = <a class="code" href="classSVF_1_1AccessPath.html#a586c71842e3e4487921aa3384ce9d025">getIdxOperandPairVec</a>();</div>
958
- <div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1AccessPath.html#a04ca154a70f40999a6a28c505bfd942d">IdxOperandPairs</a>&amp; rhsPairVec = rhs.<a class="code" href="classSVF_1_1AccessPath.html#a586c71842e3e4487921aa3384ce9d025">getIdxOperandPairVec</a>();</div>
959
- <div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <span class="keywordflow">if</span> (pairVec.size() != rhsPairVec.size())</div>
960
- <div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <span class="keywordflow">return</span> (pairVec.size() &lt; rhsPairVec.size());</div>
961
- <div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <span class="keywordflow">else</span></div>
962
- <div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; {</div>
963
- <div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; IdxOperandPairs::const_iterator it = pairVec.begin();</div>
964
- <div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; IdxOperandPairs::const_iterator rhsIt = rhsPairVec.begin();</div>
965
- <div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <span class="keywordflow">for</span> (; it != pairVec.end() &amp;&amp; rhsIt != rhsPairVec.end(); ++it, ++rhsIt)</div>
966
- <div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; {</div>
967
- <div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="keywordflow">return</span> (*it) &lt; (*rhsIt);</div>
968
- <div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; }</div>
969
- <div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; </div>
970
- <div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
971
- <div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; }</div>
972
- <div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; }</div>
973
- <div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160;}</div>
956
+ <p class="definition">Definition at line <a class="el" href="AccessPath_8cpp_source.html#l00280">280</a> of file <a class="el" href="AccessPath_8cpp_source.html">AccessPath.cpp</a>.</p>
957
+ <div class="fragment"><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160;{</div>
958
+ <div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <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>
959
+ <div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <span class="keywordflow">return</span> (<a class="code" href="classSVF_1_1AccessPath.html#aa1747064a0833855a5848ebf4a4d65fa">fldIdx</a> &lt; rhs.<a class="code" href="classSVF_1_1AccessPath.html#aa1747064a0833855a5848ebf4a4d65fa">fldIdx</a>);</div>
960
+ <div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <span class="keywordflow">else</span></div>
961
+ <div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; {</div>
962
+ <div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1AccessPath.html#a04ca154a70f40999a6a28c505bfd942d">IdxOperandPairs</a>&amp; pairVec = <a class="code" href="classSVF_1_1AccessPath.html#a586c71842e3e4487921aa3384ce9d025">getIdxOperandPairVec</a>();</div>
963
+ <div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1AccessPath.html#a04ca154a70f40999a6a28c505bfd942d">IdxOperandPairs</a>&amp; rhsPairVec = rhs.<a class="code" href="classSVF_1_1AccessPath.html#a586c71842e3e4487921aa3384ce9d025">getIdxOperandPairVec</a>();</div>
964
+ <div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="keywordflow">if</span> (pairVec.size() != rhsPairVec.size())</div>
965
+ <div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <span class="keywordflow">return</span> (pairVec.size() &lt; rhsPairVec.size());</div>
966
+ <div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <span class="keywordflow">else</span></div>
967
+ <div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; {</div>
968
+ <div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; IdxOperandPairs::const_iterator it = pairVec.begin();</div>
969
+ <div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; IdxOperandPairs::const_iterator rhsIt = rhsPairVec.begin();</div>
970
+ <div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <span class="keywordflow">for</span> (; it != pairVec.end() &amp;&amp; rhsIt != rhsPairVec.end(); ++it, ++rhsIt)</div>
971
+ <div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; {</div>
972
+ <div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <span class="keywordflow">return</span> (*it) &lt; (*rhsIt);</div>
973
+ <div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; }</div>
974
+ <div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; </div>
975
+ <div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
976
+ <div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; }</div>
977
+ <div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; }</div>
978
+ <div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160;}</div>
974
979
  </div><!-- fragment -->
975
980
  </div>
976
981
  </div>
@@ -1237,7 +1242,7 @@ Friends</h2></td></tr>
1237
1242
  <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>
1238
1243
  <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>
1239
1244
  <div class="ttc" id="aclassSVF_1_1AccessPath_html_a5427d08c9eb9d86e66c2bff6aeba6bac"><div class="ttname"><a href="classSVF_1_1AccessPath.html#a5427d08c9eb9d86e66c2bff6aeba6bac">SVF::AccessPath::getConstantStructFldIdx</a></div><div class="ttdeci">APOffset getConstantStructFldIdx() const</div><div class="ttdoc">Get methods.</div><div class="ttdef"><b>Definition:</b> <a href="AccessPath_8h_source.html#l00100">AccessPath.h:100</a></div></div>
1240
- <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#l00257">AccessPath.cpp:257</a></div></div>
1245
+ <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#l00262">AccessPath.cpp:262</a></div></div>
1241
1246
  <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>
1242
1247
  <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>
1243
1248
  <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>
@@ -638,7 +638,7 @@ Static Private Attributes</h2></td></tr>
638
638
  <div class="ttc" id="aExtAPI_8cpp_html_a7d2ff3727892c4ee0eff596174eb5b84"><div class="ttname"><a href="ExtAPI_8cpp.html#a7d2ff3727892c4ee0eff596174eb5b84">getFilePath</a></div><div class="ttdeci">static std::string getFilePath(const std::string &amp;path)</div><div class="ttdef"><b>Definition:</b> <a href="ExtAPI_8cpp_source.html#l00095">ExtAPI.cpp:95</a></div></div>
639
639
  <div class="ttc" id="aclassSVF_1_1ExtAPI_html_ab793be4b6f8f0a025599e76f5df2a4eb"><div class="ttname"><a href="classSVF_1_1ExtAPI.html#ab793be4b6f8f0a025599e76f5df2a4eb">SVF::ExtAPI::ExtAPI</a></div><div class="ttdeci">ExtAPI()=default</div></div>
640
640
  <div class="ttc" id="acJSON_8h_html_a6288dae99eabb0a393b1d4974e01cde7"><div class="ttname"><a href="cJSON_8h.html#a6288dae99eabb0a393b1d4974e01cde7">number</a></div><div class="ttdeci">const char *const const double number</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00268">cJSON.h:268</a></div></div>
641
- <div class="ttc" id="aextapi_8c_html_a3fa45b35c8abf67a950b6d3d4063dede"><div class="ttname"><a href="extapi_8c.html#a3fa45b35c8abf67a950b6d3d4063dede">isdigit</a></div><div class="ttdeci">int isdigit(int c)</div><div class="ttdef"><b>Definition:</b> <a href="extapi_8c_source.html#l00754">extapi.c:754</a></div></div>
641
+ <div class="ttc" id="aextapi_8c_html_a3fa45b35c8abf67a950b6d3d4063dede"><div class="ttname"><a href="extapi_8c.html#a3fa45b35c8abf67a950b6d3d4063dede">isdigit</a></div><div class="ttdeci">int isdigit(int c)</div><div class="ttdef"><b>Definition:</b> <a href="extapi_8c_source.html#l00795">extapi.c:795</a></div></div>
642
642
  <div class="ttc" id="aclassSVF_1_1SVFFunction_html_a067bd6dbaf74a028d546fa56b095791b"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#a067bd6dbaf74a028d546fa56b095791b">SVF::SVFFunction::getAnnotations</a></div><div class="ttdeci">const std::vector&lt; std::string &gt; &amp; getAnnotations() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00466">SVFValue.h:466</a></div></div>
643
643
  <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>
644
644
  <div class="ttc" id="aclassSVF_1_1ExtAPI_html_a1d7778db3b31f732f06129b49ec6dacd"><div class="ttname"><a href="classSVF_1_1ExtAPI.html#a1d7778db3b31f732f06129b49ec6dacd">SVF::ExtAPI::hasExtFuncAnnotation</a></div><div class="ttdeci">bool hasExtFuncAnnotation(const SVFFunction *fun, const std::string &amp;funcAnnotation)</div><div class="ttdef"><b>Definition:</b> <a href="ExtAPI_8cpp_source.html#l00166">ExtAPI.cpp:166</a></div></div>
@@ -1772,9 +1772,9 @@ template&lt;typename Key , typename Hash = SymbolVectorHash, typename KeyEqual
1772
1772
  <div class="ttc" id="anamespaceSVF_html_af739db846e47ba6b2fd15eaad31ab7fb"><div class="ttname"><a href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">SVF::Set</a></div><div class="ttdeci">std::unordered_set&lt; Key, Hash, KeyEqual, Allocator &gt; Set</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00097">SVFType.h:97</a></div></div>
1773
1773
  <div class="ttc" id="acJSON_8cpp_html_a65e9886d74aaee76545e83dd09011727"><div class="ttname"><a href="cJSON_8cpp.html#a65e9886d74aaee76545e83dd09011727">false</a></div><div class="ttdeci">#define false</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l00070">cJSON.cpp:70</a></div></div>
1774
1774
  <div class="ttc" id="aclassSVF_1_1GrammarBase_html_a7583350e892c62a454de8a8317e4c1b8"><div class="ttname"><a href="classSVF_1_1GrammarBase.html#a7583350e892c62a454de8a8317e4c1b8">SVF::GrammarBase::insertTerminalSymbol</a></div><div class="ttdeci">Symbol insertTerminalSymbol(std::string strLit)</div><div class="ttdef"><b>Definition:</b> <a href="CFGrammar_8cpp_source.html#l00280">CFGrammar.cpp:280</a></div></div>
1775
- <div class="ttc" id="aextapi_8c_html_a3fa45b35c8abf67a950b6d3d4063dede"><div class="ttname"><a href="extapi_8c.html#a3fa45b35c8abf67a950b6d3d4063dede">isdigit</a></div><div class="ttdeci">int isdigit(int c)</div><div class="ttdef"><b>Definition:</b> <a href="extapi_8c_source.html#l00754">extapi.c:754</a></div></div>
1775
+ <div class="ttc" id="aextapi_8c_html_a3fa45b35c8abf67a950b6d3d4063dede"><div class="ttname"><a href="extapi_8c.html#a3fa45b35c8abf67a950b6d3d4063dede">isdigit</a></div><div class="ttdeci">int isdigit(int c)</div><div class="ttdef"><b>Definition:</b> <a href="extapi_8c_source.html#l00795">extapi.c:795</a></div></div>
1776
1776
  <div class="ttc" id="aclassSVF_1_1GrammarBase_html_a63389968c8d246a84562a8d17e08790b"><div class="ttname"><a href="classSVF_1_1GrammarBase.html#a63389968c8d246a84562a8d17e08790b">SVF::GrammarBase::insertNonTerminalSymbol</a></div><div class="ttdeci">Symbol insertNonTerminalSymbol(std::string strLit)</div><div class="ttdef"><b>Definition:</b> <a href="CFGrammar_8cpp_source.html#l00249">CFGrammar.cpp:249</a></div></div>
1777
- <div class="ttc" id="aextapi_8c_html_adadd6582d46775aab6a51e29d16d9f77"><div class="ttname"><a href="extapi_8c.html#adadd6582d46775aab6a51e29d16d9f77">isupper</a></div><div class="ttdeci">int isupper(int c)</div><div class="ttdef"><b>Definition:</b> <a href="extapi_8c_source.html#l00784">extapi.c:784</a></div></div>
1777
+ <div class="ttc" id="aextapi_8c_html_adadd6582d46775aab6a51e29d16d9f77"><div class="ttname"><a href="extapi_8c.html#adadd6582d46775aab6a51e29d16d9f77">isupper</a></div><div class="ttdeci">int isupper(int c)</div><div class="ttdef"><b>Definition:</b> <a href="extapi_8c_source.html#l00825">extapi.c:825</a></div></div>
1778
1778
  <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>
1779
1779
  <div class="ttc" id="aclassSVF_1_1GrammarBase_html_a7909a5f90ed1678a178f18259f0b66a9"><div class="ttname"><a href="classSVF_1_1GrammarBase.html#a7909a5f90ed1678a178f18259f0b66a9">SVF::GrammarBase::EBNFSigns</a></div><div class="ttdeci">Map&lt; std::string, Kind &gt; EBNFSigns</div><div class="ttdef"><b>Definition:</b> <a href="CFGrammar_8h_source.html#l00283">CFGrammar.h:283</a></div></div>
1780
1780
  <div class="ttc" id="aclassSVF_1_1GrammarBase_html_adc1413dc2e875a6e74bdb5b985cdd39f"><div class="ttname"><a href="classSVF_1_1GrammarBase.html#adc1413dc2e875a6e74bdb5b985cdd39f">SVF::GrammarBase::EdgeKindMaskBits</a></div><div class="ttdeci">static constexpr unsigned char EdgeKindMaskBits</div><div class="ttdoc">We use the lower 8 bits to denote edge kind.</div><div class="ttdef"><b>Definition:</b> <a href="CFGrammar_8h_source.html#l00276">CFGrammar.h:276</a></div></div>
@@ -1782,7 +1782,7 @@ template&lt;typename Key , typename Hash = SymbolVectorHash, typename KeyEqual
1782
1782
  <div class="ttc" id="aclassSVF_1_1GrammarBase_html_a760208fb9737e766deb79d593ab86a3c"><div class="ttname"><a href="classSVF_1_1GrammarBase.html#a760208fb9737e766deb79d593ab86a3c">SVF::GrammarBase::Symbol</a></div><div class="ttdeci">struct SVF::GrammarBase::Symbol Symbol</div></div>
1783
1783
  <div class="ttc" id="aclassSVF_1_1GrammarBase_html_ac9f86b0861e93eee2548aa7f5f3b7b7f"><div class="ttname"><a href="classSVF_1_1GrammarBase.html#ac9f86b0861e93eee2548aa7f5f3b7b7f">SVF::GrammarBase::totalKind</a></div><div class="ttdeci">u32_t totalKind</div><div class="ttdef"><b>Definition:</b> <a href="CFGrammar_8h_source.html#l00287">CFGrammar.h:287</a></div></div>
1784
1784
  <div class="ttc" id="aclassSVF_1_1GrammarBase_html_a7aef5c42fbd8a62dd4a541cc0e8e8187"><div class="ttname"><a href="classSVF_1_1GrammarBase.html#a7aef5c42fbd8a62dd4a541cc0e8e8187">SVF::GrammarBase::Kind</a></div><div class="ttdeci">u32_t Kind</div><div class="ttdef"><b>Definition:</b> <a href="CFGrammar_8h_source.html#l00039">CFGrammar.h:39</a></div></div>
1785
- <div class="ttc" id="aextapi_8c_html_af947cbf1ae303e5297c9d68c68a6b9cb"><div class="ttname"><a href="extapi_8c.html#af947cbf1ae303e5297c9d68c68a6b9cb">isalpha</a></div><div class="ttdeci">int isalpha(int character)</div><div class="ttdef"><b>Definition:</b> <a href="extapi_8c_source.html#l00739">extapi.c:739</a></div></div>
1785
+ <div class="ttc" id="aextapi_8c_html_af947cbf1ae303e5297c9d68c68a6b9cb"><div class="ttname"><a href="extapi_8c.html#af947cbf1ae303e5297c9d68c68a6b9cb">isalpha</a></div><div class="ttdeci">int isalpha(int character)</div><div class="ttdef"><b>Definition:</b> <a href="extapi_8c_source.html#l00780">extapi.c:780</a></div></div>
1786
1786
  <div class="ttc" id="aclassSVF_1_1GrammarBase_html_a7707662599fe848ae6526802be4f7b6c"><div class="ttname"><a href="classSVF_1_1GrammarBase.html#a7707662599fe848ae6526802be4f7b6c">SVF::GrammarBase::kindToAttrsMap</a></div><div class="ttdeci">Map&lt; Kind, Set&lt; Attribute &gt; &gt; kindToAttrsMap</div><div class="ttdef"><b>Definition:</b> <a href="CFGrammar_8h_source.html#l00285">CFGrammar.h:285</a></div></div>
1787
1787
  <div class="ttc" id="aclassSVF_1_1GrammarBase_html_ab070e5449d26e347b957d8b994d0303f"><div class="ttname"><a href="classSVF_1_1GrammarBase.html#ab070e5449d26e347b957d8b994d0303f">SVF::GrammarBase::Attribute</a></div><div class="ttdeci">u32_t Attribute</div><div class="ttdef"><b>Definition:</b> <a href="CFGrammar_8h_source.html#l00040">CFGrammar.h:40</a></div></div>
1788
1788
  <div class="ttc" id="aclassSVF_1_1GrammarBase_html_a0e99f099b675baae8d1e84b453ee05e0"><div class="ttname"><a href="classSVF_1_1GrammarBase.html#a0e99f099b675baae8d1e84b453ee05e0">SVF::GrammarBase::extractAttributeStrFromSymbolStr</a></div><div class="ttdeci">std::string extractAttributeStrFromSymbolStr(const std::string &amp;symbolStr) const</div><div class="ttdef"><b>Definition:</b> <a href="CFGrammar_8cpp_source.html#l00219">CFGrammar.cpp:219</a></div></div>
@@ -3065,7 +3065,7 @@ Additional Inherited Members</h2></td></tr>
3065
3065
  <div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; {</div>
3066
3066
  <div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a> *cs_arg = *csArgIt;</div>
3067
3067
  <div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a> *fun_arg = *funArgIt;</div>
3068
- <div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; <span class="keywordflow">if</span> (fun_arg-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a3b61042079a6c9dc395f38925c6a1271">isPointer</a>() &amp;&amp; cs_arg-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a3b61042079a6c9dc395f38925c6a1271">isPointer</a>())</div>
3068
+ <div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1VFG.html#a85360d0242ea7d2ec7da670f2cc17962">isInterestedPAGNode</a>(fun_arg) &amp;&amp; <a class="code" href="classSVF_1_1VFG.html#a85360d0242ea7d2ec7da670f2cc17962">isInterestedPAGNode</a>(cs_arg))</div>
3069
3069
  <div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#ac1acdf7bc468d7734359591e45f485fe">getInterVFEdgeAtIndCSFromAPToFP</a>(cs_arg, fun_arg, callICFGNode, csId, edges);</div>
3070
3070
  <div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; }</div>
3071
3071
  <div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; assert(funArgIt == funArgEit &amp;&amp; <span class="stringliteral">&quot;function has more arguments than call site&quot;</span>);</div>
@@ -3073,12 +3073,12 @@ Additional Inherited Members</h2></td></tr>
3073
3073
  <div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; {</div>
3074
3074
  <div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> varFunArg = <a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a8b10c318674a47035d617b3ade4f069b">getVarargNode</a>(callee);</div>
3075
3075
  <div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* varFunArgNode = <a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(varFunArg);</div>
3076
- <div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; <span class="keywordflow">if</span> (varFunArgNode-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a3b61042079a6c9dc395f38925c6a1271">isPointer</a>())</div>
3076
+ <div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1VFG.html#a85360d0242ea7d2ec7da670f2cc17962">isInterestedPAGNode</a>(varFunArgNode))</div>
3077
3077
  <div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; {</div>
3078
3078
  <div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; <span class="keywordflow">for</span> (; csArgIt != csArgEit; csArgIt++)</div>
3079
3079
  <div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; {</div>
3080
3080
  <div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a> *cs_arg = *csArgIt;</div>
3081
- <div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; <span class="keywordflow">if</span> (cs_arg-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a3b61042079a6c9dc395f38925c6a1271">isPointer</a>())</div>
3081
+ <div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1VFG.html#a85360d0242ea7d2ec7da670f2cc17962">isInterestedPAGNode</a>(cs_arg))</div>
3082
3082
  <div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#ac1acdf7bc468d7734359591e45f485fe">getInterVFEdgeAtIndCSFromAPToFP</a>(cs_arg, varFunArgNode, callICFGNode, csId, edges);</div>
3083
3083
  <div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; }</div>
3084
3084
  <div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; }</div>
@@ -3090,7 +3090,7 @@ Additional Inherited Members</h2></td></tr>
3090
3090
  <div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; {</div>
3091
3091
  <div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* cs_return = <a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a3145677c7a3763fc0d6aa7e21b264ab6">getCallSiteRet</a>(retICFGNode);</div>
3092
3092
  <div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* fun_return = <a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a34e27b8bcfeaafda190dcdb9169a346f">getFunRet</a>(callee);</div>
3093
- <div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; <span class="keywordflow">if</span> (cs_return-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a3b61042079a6c9dc395f38925c6a1271">isPointer</a>() &amp;&amp; fun_return-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a3b61042079a6c9dc395f38925c6a1271">isPointer</a>())</div>
3093
+ <div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1VFG.html#a85360d0242ea7d2ec7da670f2cc17962">isInterestedPAGNode</a>(cs_return) &amp;&amp; <a class="code" href="classSVF_1_1VFG.html#a85360d0242ea7d2ec7da670f2cc17962">isInterestedPAGNode</a>(fun_return))</div>
3094
3094
  <div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#ab2b969b7d5922427622dd875e6b8fe14">getInterVFEdgeAtIndCSFromFRToAR</a>(fun_return, cs_return, csId, edges);</div>
3095
3095
  <div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; }</div>
3096
3096
  <div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; </div>
@@ -4807,7 +4807,6 @@ Additional Inherited Members</h2></td></tr>
4807
4807
  <div class="ttc" id="aclassSVF_1_1VFGNode_html_ab98e74dfd4756e70e3e3c5b7d5e5ae27"><div class="ttname"><a href="classSVF_1_1VFGNode.html#ab98e74dfd4756e70e3e3c5b7d5e5ae27">SVF::VFGNode::getFun</a></div><div class="ttdeci">virtual const SVFFunction * getFun() const</div><div class="ttdoc">Get the function of this SVFGNode.</div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00084">VFGNode.h:84</a></div></div>
4808
4808
  <div class="ttc" id="aclassSVF_1_1ICFG_html_aa41516cdd2be5066adf22798a4fe2213"><div class="ttname"><a href="classSVF_1_1ICFG.html#aa41516cdd2be5066adf22798a4fe2213">SVF::ICFG::getCallICFGNode</a></div><div class="ttdeci">CallICFGNode * getCallICFGNode(const SVFInstruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00237">ICFG.cpp:237</a></div></div>
4809
4809
  <div class="ttc" id="aclassSVF_1_1CallCHI_html"><div class="ttname"><a href="classSVF_1_1CallCHI.html">SVF::CallCHI</a></div><div class="ttdef"><b>Definition:</b> <a href="MSSAMuChi_8h_source.html#l00521">MSSAMuChi.h:521</a></div></div>
4810
- <div class="ttc" id="aclassSVF_1_1SVFVar_html_a3b61042079a6c9dc395f38925c6a1271"><div class="ttname"><a href="classSVF_1_1SVFVar.html#a3b61042079a6c9dc395f38925c6a1271">SVF::SVFVar::isPointer</a></div><div class="ttdeci">virtual bool isPointer() const</div><div class="ttdoc">Whether it is a pointer.</div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00117">SVFVariables.h:117</a></div></div>
4811
4810
  <div class="ttc" id="aclassSVF_1_1ICFG_html_a881fe977f3a6fde223bd786121e35fcf"><div class="ttname"><a href="classSVF_1_1ICFG.html#a881fe977f3a6fde223bd786121e35fcf">SVF::ICFG::getRetICFGNode</a></div><div class="ttdeci">RetICFGNode * getRetICFGNode(const SVFInstruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00250">ICFG.cpp:250</a></div></div>
4812
4811
  <div class="ttc" id="aclassSVF_1_1SVFG_html_a475205e221890204c7770c414ee63975"><div class="ttname"><a href="classSVF_1_1SVFG.html#a475205e221890204c7770c414ee63975">SVF::SVFG::getActualINSVFGNodes</a></div><div class="ttdeci">ActualINSVFGNodeSet &amp; getActualINSVFGNodes(const CallICFGNode *cs)</div><div class="ttdoc">Get SVFGNode set.</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00209">SVFG.h:209</a></div></div>
4813
4812
  <div class="ttc" id="aclassSVF_1_1Options_html_a034a83cdac580c1f8b10805e29ca50e4"><div class="ttname"><a href="classSVF_1_1Options.html#a034a83cdac580c1f8b10805e29ca50e4">SVF::Options::ReadSVFG</a></div><div class="ttdeci">static const Option&lt; std::string &gt; ReadSVFG</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00164">Options.h:164</a></div></div>
@@ -4872,6 +4871,7 @@ Additional Inherited Members</h2></td></tr>
4872
4871
  <div class="ttc" id="aclassSVF_1_1CallMU_html"><div class="ttname"><a href="classSVF_1_1CallMU.html">SVF::CallMU</a></div><div class="ttdef"><b>Definition:</b> <a href="MSSAMuChi_8h_source.html#l00221">MSSAMuChi.h:221</a></div></div>
4873
4872
  <div class="ttc" id="aclassSVF_1_1GenericGraph_html_a43c9c773bfa17abf481c33073e30d01b"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">SVF::GenericGraph::getGNode</a></div><div class="ttdeci">NodeType * getGNode(NodeID id) const</div><div class="ttdoc">Get a node.</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00406">GenericGraph.h:406</a></div></div>
4874
4873
  <div class="ttc" id="aclassSVF_1_1SVFGStat_html_a037600bfff11659542f8595d8700dec4"><div class="ttname"><a href="classSVF_1_1SVFGStat.html#a037600bfff11659542f8595d8700dec4">SVF::SVFGStat::performStat</a></div><div class="ttdeci">virtual void performStat() override</div><div class="ttdef"><b>Definition:</b> <a href="SVFGStat_8cpp_source.html#l00178">SVFGStat.cpp:178</a></div></div>
4874
+ <div class="ttc" id="aclassSVF_1_1VFG_html_a85360d0242ea7d2ec7da670f2cc17962"><div class="ttname"><a href="classSVF_1_1VFG.html#a85360d0242ea7d2ec7da670f2cc17962">SVF::VFG::isInterestedPAGNode</a></div><div class="ttdeci">virtual bool isInterestedPAGNode(const SVFVar *node) const</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00444">VFG.h:444</a></div></div>
4875
4875
  <div class="ttc" id="aclassSVF_1_1MRSVFGNode_html_a28fe266d0e4618aa4448aa218495a332"><div class="ttname"><a href="classSVF_1_1MRSVFGNode.html#a28fe266d0e4618aa4448aa218495a332">SVF::MRSVFGNode::getPointsTo</a></div><div class="ttdeci">const NodeBS &amp; getPointsTo() const</div><div class="ttdoc">Return points-to of the MR.</div><div class="ttdef"><b>Definition:</b> <a href="SVFGNode_8h_source.html#l00052">SVFGNode.h:52</a></div></div>
4876
4876
  <div class="ttc" id="aclassSVF_1_1EntryCHI_html"><div class="ttname"><a href="classSVF_1_1EntryCHI.html">SVF::EntryCHI</a></div><div class="ttdef"><b>Definition:</b> <a href="MSSAMuChi_8h_source.html#l00578">MSSAMuChi.h:578</a></div></div>
4877
4877
  <div class="ttc" id="aclassSVF_1_1SVFG_html_a804824faa3a042cb1b63edd9e9eb7207"><div class="ttname"><a href="classSVF_1_1SVFG.html#a804824faa3a042cb1b63edd9e9eb7207">SVF::SVFG::addFormalOUTSVFGNode</a></div><div class="ttdeci">void addFormalOUTSVFGNode(const FunExitICFGNode *funExit, const MRVer *ver, const NodeID nodeId)</div><div class="ttdoc">Add memory Function return mu SVFG node.</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00411">SVFG.h:411</a></div></div>