svf-tools 1.0.511 → 1.0.514

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 (45) hide show
  1. package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +1 -1
  2. package/SVF-doxygen/html/html/ConsG_8h_source.html +1 -1
  3. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +1 -1
  4. package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +4 -4
  5. package/SVF-doxygen/html/html/ExeState_8cpp_source.html +3 -3
  6. package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +1 -1
  7. package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +1 -1
  8. package/SVF-doxygen/html/html/IRGraph_8h_source.html +2 -2
  9. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +3 -3
  10. package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +12 -12
  11. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +1 -1
  12. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +2 -2
  13. package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +4 -4
  14. package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +1 -1
  15. package/SVF-doxygen/html/html/SVFIR_8h_source.html +1 -1
  16. package/SVF-doxygen/html/html/SVFVariables_8h_source.html +1 -1
  17. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +1 -1
  18. package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +29 -29
  19. package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +2 -2
  20. package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +1 -1
  21. package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +1 -1
  22. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +1 -1
  23. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +1 -1
  24. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +1 -1
  25. package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +1 -1
  26. package/SVF-doxygen/html/html/classSVF_1_1ExeState.html +3 -3
  27. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +1 -1
  28. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +1 -1
  29. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +1 -1
  30. package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +1 -1
  31. package/SVF-doxygen/html/html/classSVF_1_1IRGraph.html +2 -2
  32. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +3 -3
  33. package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +53 -53
  34. package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo.html +5 -1
  35. package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +1 -1
  36. package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +12 -12
  37. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +3 -3
  38. package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +2 -2
  39. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +1 -1
  40. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +5 -5
  41. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +1 -1
  42. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +1 -1
  43. package/codecov.yml +4 -0
  44. package/lib/MemoryModel/SymbolTableInfo.cpp +14 -5
  45. package/package.json +1 -1
@@ -499,7 +499,7 @@ Additional Inherited Members</h2></td></tr>
499
499
  <p>Reimplemented in <a class="el" href="classSVF_1_1GepObjVar.html#ab2348a9378f1c64cf5c176b21a655d14">SVF::GepObjVar</a>.</p>
500
500
 
501
501
  <p class="definition">Definition at line <a class="el" href="SVFVariables_8h_source.html#l00351">351</a> of file <a class="el" href="SVFVariables_8h_source.html">SVFVariables.h</a>.</p>
502
- <div class="fragment"><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; {</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ObjVar.html#a3d08dc1d15a449ff4b7018da4bfdcb88">mem</a>-&gt;<a class="code" href="classSVF_1_1MemObj.html#aa4fa7a1b86d66692ffffeaee0e187216">getType</a>();</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; }</div><div class="ttc" id="classSVF_1_1MemObj_html_aa4fa7a1b86d66692ffffeaee0e187216"><div class="ttname"><a href="classSVF_1_1MemObj.html#aa4fa7a1b86d66692ffffeaee0e187216">SVF::MemObj::getType</a></div><div class="ttdeci">const Type * getType() const</div><div class="ttdoc">Get obj type. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00641">SymbolTableInfo.cpp:641</a></div></div>
502
+ <div class="fragment"><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; {</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ObjVar.html#a3d08dc1d15a449ff4b7018da4bfdcb88">mem</a>-&gt;<a class="code" href="classSVF_1_1MemObj.html#aa4fa7a1b86d66692ffffeaee0e187216">getType</a>();</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; }</div><div class="ttc" id="classSVF_1_1MemObj_html_aa4fa7a1b86d66692ffffeaee0e187216"><div class="ttname"><a href="classSVF_1_1MemObj.html#aa4fa7a1b86d66692ffffeaee0e187216">SVF::MemObj::getType</a></div><div class="ttdeci">const Type * getType() const</div><div class="ttdoc">Get obj type. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00650">SymbolTableInfo.cpp:650</a></div></div>
503
503
  <div class="ttc" id="classSVF_1_1ObjVar_html_a3d08dc1d15a449ff4b7018da4bfdcb88"><div class="ttname"><a href="classSVF_1_1ObjVar.html#a3d08dc1d15a449ff4b7018da4bfdcb88">SVF::ObjVar::mem</a></div><div class="ttdeci">const MemObj * mem</div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00308">SVFVariables.h:308</a></div></div>
504
504
  </div><!-- fragment -->
505
505
  </div>
@@ -632,7 +632,7 @@ Private Attributes</h2></td></tr>
632
632
 
633
633
  <p class="definition">Definition at line <a class="el" href="PTAStat_8cpp_source.html#l00133">133</a> of file <a class="el" href="PTAStat_8cpp_source.html">PTAStat.cpp</a>.</p>
634
634
  <div class="fragment"><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;{</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#a1772bc87370b5625f71edd4476277064">callgraphStat</a>();</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* pag = <a class="code" href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362">SVFIR::getPAG</a>();</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> numOfFunction = 0;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> numOfGlobal = 0;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> numOfStack = 0;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> numOfHeap = 0;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> numOfHasVarArray = 0;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> numOfHasVarStruct = 0;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> numOfHasConstArray = 0;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> numOfHasConstStruct = 0;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> numOfScalar = 0;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> numOfConstant = 0;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> fiObjNumber = 0;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> fsObjNumber = 0;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;SymID&gt;</a> memObjSet;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1GenericGraph.html#ac213302cf5c7cdf3b66f7b18649d0fbc">SVFIR::iterator</a> it = pag-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(), eit = pag-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); it!=eit; ++it)</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; {</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* node = it-&gt;second;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ObjVar.html">ObjVar</a>* obj = SVFUtil::dyn_cast&lt;ObjVar&gt;(node))</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; {</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* mem = obj-&gt;getMemObj();</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keywordflow">if</span> (memObjSet.insert(mem-&gt;<a class="code" href="classSVF_1_1MemObj.html#a3ab6f65ffbf6442daac4d3f70f2d3cb1">getId</a>()).second == <span class="keyword">false</span>)</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="keywordflow">if</span>(mem-&gt;<a class="code" href="classSVF_1_1MemObj.html#a7b890ca9e93b1c61cc6437b7e6a82a8c">isBlackHoleObj</a>())</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="keywordflow">if</span>(mem-&gt;<a class="code" href="classSVF_1_1MemObj.html#ae1d14e2bf0be36cdadebf119822f607b">isFunction</a>())</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; numOfFunction++;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keywordflow">if</span>(mem-&gt;<a class="code" href="classSVF_1_1MemObj.html#a40462512a99eb258d8cd442c38d812b4">isGlobalObj</a>())</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; numOfGlobal++;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <span class="keywordflow">if</span>(mem-&gt;<a class="code" href="classSVF_1_1MemObj.html#af7316c697eafc71d5fc93108da4e2cee">isStack</a>())</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; numOfStack++;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <span class="keywordflow">if</span>(mem-&gt;<a class="code" href="classSVF_1_1MemObj.html#a898c5bb3956402578266a6fb142e02b1">isHeap</a>())</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; numOfHeap++;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="keywordflow">if</span>(mem-&gt;<a class="code" href="classSVF_1_1MemObj.html#a616e9f4d6f82a253f94391c47668b9a6">isVarArray</a>())</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; numOfHasVarArray++;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="keywordflow">if</span>(mem-&gt;<a class="code" href="classSVF_1_1MemObj.html#ad1966c52f95775ac7d65c0ba6632c3cf">isVarStruct</a>())</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; numOfHasVarStruct++;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="keywordflow">if</span>(mem-&gt;<a class="code" href="classSVF_1_1MemObj.html#a7f828731597450f1d43b61413ab0e7bb">isConstantArray</a>())</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; numOfHasConstArray++;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="keywordflow">if</span>(mem-&gt;<a class="code" href="classSVF_1_1MemObj.html#a019a77516c403f1f3cc72917b810a41f">isConstantStruct</a>())</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; numOfHasConstStruct++;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="keywordflow">if</span>(mem-&gt;<a class="code" href="classSVF_1_1MemObj.html#a6dae1b3429c6049f0153ec006d329082">hasPtrObj</a>() == <span class="keyword">false</span>)</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; numOfScalar++;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="keywordflow">if</span>(mem-&gt;<a class="code" href="classSVF_1_1MemObj.html#a1a4ff4aaaf2573240a318e1b79328cd0">isConstDataOrConstGlobal</a>())</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; numOfConstant++;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keywordflow">if</span> (mem-&gt;<a class="code" href="classSVF_1_1MemObj.html#a41d85883d44ad77832b020455951c6fc">isFieldInsensitive</a>())</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; fiObjNumber++;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; fsObjNumber++;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160;</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1PTAStat.html#a608441b95be0861d8c1b0a035281f4d5">pta</a>-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a108380f6f0b67654bb7c7676686096c8">isLocalVarInRecursiveFun</a>(node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>()))</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; {</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#a5b4095f427c9c7b9ec0db497ba33baea">localVarInRecursion</a>.<a class="code" href="classSVF_1_1SparseBitVector.html#a61bd86909a141f9de873d92c0f904832">set</a>(node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>());</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; }</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; }</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; }</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#a1a4d418fd9e5413e7ffbbfe57f5e0560">TotalNumOfPointers</a>] = pag-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a0212f3fe2f37363e8060f292c8cf7668">getValueNodeNum</a>() + pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a8a24e0bf9f95fc1519d4013e0e82dec9">getFieldValNodeNum</a>();</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#acd9848f15aa359550e86c7b857df84ed">TotalNumOfObjects</a>] = pag-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a82528aff779ccf8f723f57507dd2d991">getObjectNodeNum</a>();</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#ac0e0a1c49d33e02f5cc0f21565ce627d">TotalNumOfFieldObjects</a>] = pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a3bbaafd80dfcae6ccc82c3d8b9d303ea">getFieldObjNodeNum</a>();</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#af6a6e3ea4c7f8e1c984bea8d5fb9a7c0">MaxStructSize</a>] = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#abc7e567209010286a68634c700d76cca">getMaxStructSize</a>();</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#a3afc0a36232a0388d8aa42c68219cb26">TotalNumOfEdges</a>] = pag-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a821df0fcb66e4f0a5b10c295c24b7c2c">getPAGEdgeNum</a>();</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<span class="stringliteral">&quot;TotalPTASVFStmts&quot;</span>] = pag-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a51485004eb28aab6620801205d13ef1b">getPTAPAGEdgeNum</a>();</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#ad1a7e7aec8f272017be7d0b6acda86a4">NumberOfFieldInsensitiveObj</a>] = fiObjNumber;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#ab62eb21c7dc03f68b0509c31451b2e98">NumberOfFieldSensitiveObj</a>] = fsObjNumber;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#ac5bf59a0a7a760c9fec5f22dedec5eb6">NumOfAddrs</a>] = pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#ae2006820c0d00482b85e7ae3adcb5744">getSVFStmtSet</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a0a9a0f650e864e89b7cbb3dc8c8aa197">SVFStmt::Addr</a>).size();</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#a4aa7356142f51d942063be5a2910940f">NumOfLoads</a>] = pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#ae2006820c0d00482b85e7ae3adcb5744">getSVFStmtSet</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a62ac8480c43fcc657c631ec0003b15d5">SVFStmt::Load</a>).size();</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#a656ad9980ff05af396ed6754c50916e7">NumOfStores</a>] = pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#ae2006820c0d00482b85e7ae3adcb5744">getSVFStmtSet</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9aa0f700b514c431ec5329aec49df56dcc">SVFStmt::Store</a>).size();</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#a97a8b662356fc89cdd2cb9463fa5578b">NumOfCopys</a>] = pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#ae2006820c0d00482b85e7ae3adcb5744">getSVFStmtSet</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad3469cdfb64f05163b5310b731b221da">SVFStmt::Copy</a>).size();</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#acc5e4740e11cb6f9794723e5f61ab63b">NumOfGeps</a>] = pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#ae2006820c0d00482b85e7ae3adcb5744">getSVFStmtSet</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a20d960c19118d1ed319e0dbea94405e8">SVFStmt::Gep</a>).size();</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#a6cbeca77d0681f7da28979cbd0f661b2">NumOfCalls</a>] = pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#ae2006820c0d00482b85e7ae3adcb5744">getSVFStmtSet</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a97ca16eba4c5f92e16388f0cdbcfcc00">SVFStmt::Call</a>).size();</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#a0a552611fcd20e1310290bdae404a514">NumOfReturns</a>] = pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#ae2006820c0d00482b85e7ae3adcb5744">getSVFStmtSet</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a8d269a45adf13e69468f0357222ab2af">SVFStmt::Ret</a>).size();</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160;</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#ae9952b7456b5102113d1fee4d9d7801a">NumOfFunctionObjs</a>] = numOfFunction;</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#a57574c85a5a875a05ef83d3c916cf3e5">NumOfGlobalObjs</a>] = numOfGlobal;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#a4aff48eaa2045ee619a8ea793a9234b8">NumOfHeapObjs</a>] = numOfHeap;</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#ae05503909688a17dc1f282d1d029d24e">NumOfStackObjs</a>] = numOfStack;</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#a95edd35cec92fa4cacc8b59b5eecc827">NumOfObjsHasVarStruct</a>] = numOfHasVarStruct;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#a78693e8bf93d712eb76c9d6dc0c45ae6">NumOfObjsHasVarArray</a>] = numOfHasVarArray;</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#a918051b1d0eb4f49c349352408cc9751">NumOfObjsHasConstStruct</a>] = numOfHasConstStruct;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#adb31b163f0cbb9d9ce207ef5d8c075fa">NumOfObjsHasConstArray</a>] = numOfHasConstArray;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#a9014371b8ed95ab8135eed2a7fa945f1">NumOfNonPtrObjs</a>] = numOfScalar;</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#ae74458d96423e4a7391fe8697d5a9a67">NumOfConstantObjs</a>] = numOfConstant;</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#a618707c52da086e04f5e7bff31794cf3">NumOfIndirectCallSites</a>] = pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a2d2131128ceb3362b5dc89317cfd88a0">getIndirectCallsites</a>().size();</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<span class="stringliteral">&quot;TotalCallSite&quot;</span>] = pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#aa530e33657f68fc2e8eae9435ce430cb">getCallSiteSet</a>().size();</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<span class="stringliteral">&quot;LocalVarInRecur&quot;</span>] = <a class="code" href="classSVF_1_1PTAStat.html#a5b4095f427c9c7b9ec0db497ba33baea">localVarInRecursion</a>.<a class="code" href="classSVF_1_1SparseBitVector.html#a9f96e6a886fa69e07cda5dbfaed8b7c9">count</a>();</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <span class="comment">// REFACTOR-TODO bitcastInstStat();</span></div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#ada838d9e03f2be4fb3ceffab3983b564">branchStat</a>();</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160;</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#aa5f455bfa79743b8e263431593d29bbf">printStat</a>(<span class="stringliteral">&quot;General Stats&quot;</span>);</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160;</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160;}</div><div class="ttc" id="classSVF_1_1GenericGraph_html_a0d9744b1b0e7a09a6f7af29188e243b7"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">SVF::GenericGraph::begin</a></div><div class="ttdeci">iterator begin()</div><div class="ttdoc">Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00365">GenericGraph.h:365</a></div></div>
635
- <div class="ttc" id="classSVF_1_1MemObj_html_a7b890ca9e93b1c61cc6437b7e6a82a8c"><div class="ttname"><a href="classSVF_1_1MemObj.html#a7b890ca9e93b1c61cc6437b7e6a82a8c">SVF::MemObj::isBlackHoleObj</a></div><div class="ttdeci">bool isBlackHoleObj() const</div><div class="ttdoc">Whether it is a black hole object. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00623">SymbolTableInfo.cpp:623</a></div></div>
635
+ <div class="ttc" id="classSVF_1_1MemObj_html_a7b890ca9e93b1c61cc6437b7e6a82a8c"><div class="ttname"><a href="classSVF_1_1MemObj.html#a7b890ca9e93b1c61cc6437b7e6a82a8c">SVF::MemObj::isBlackHoleObj</a></div><div class="ttdeci">bool isBlackHoleObj() const</div><div class="ttdoc">Whether it is a black hole object. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00632">SymbolTableInfo.cpp:632</a></div></div>
636
636
  <div class="ttc" id="classSVF_1_1PTAStat_html_acc5e4740e11cb6f9794723e5f61ab63b"><div class="ttname"><a href="classSVF_1_1PTAStat.html#acc5e4740e11cb6f9794723e5f61ab63b">SVF::PTAStat::NumOfGeps</a></div><div class="ttdeci">static const char * NumOfGeps</div><div class="ttdoc">SVFIR gep edge. </div><div class="ttdef"><b>Definition:</b> <a href="PTAStat_8h_source.html#l00070">PTAStat.h:70</a></div></div>
637
637
  <div class="ttc" id="classSVF_1_1MemObj_html"><div class="ttname"><a href="classSVF_1_1MemObj.html">SVF::MemObj</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00373">SymbolTableInfo.h:373</a></div></div>
638
638
  <div class="ttc" id="classSVF_1_1SVFStmt_html_a0ab8621e75e75f03425c323b3ed62ce9a97ca16eba4c5f92e16388f0cdbcfcc00"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a97ca16eba4c5f92e16388f0cdbcfcc00">SVF::SVFStmt::Call</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00056">SVFStatements.h:56</a></div></div>
@@ -640,20 +640,20 @@ Private Attributes</h2></td></tr>
640
640
  <div class="ttc" id="classSVF_1_1SVFStmt_html_a0ab8621e75e75f03425c323b3ed62ce9a62ac8480c43fcc657c631ec0003b15d5"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a62ac8480c43fcc657c631ec0003b15d5">SVF::SVFStmt::Load</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00056">SVFStatements.h:56</a></div></div>
641
641
  <div class="ttc" id="classSVF_1_1PTAStat_html_ae74458d96423e4a7391fe8697d5a9a67"><div class="ttname"><a href="classSVF_1_1PTAStat.html#ae74458d96423e4a7391fe8697d5a9a67">SVF::PTAStat::NumOfConstantObjs</a></div><div class="ttdeci">static const char * NumOfConstantObjs</div><div class="ttdoc">SVFIR object node which is purely constant. </div><div class="ttdef"><b>Definition:</b> <a href="PTAStat_8h_source.html#l00093">PTAStat.h:93</a></div></div>
642
642
  <div class="ttc" id="classSVF_1_1PTAStat_html_af6a6e3ea4c7f8e1c984bea8d5fb9a7c0"><div class="ttname"><a href="classSVF_1_1PTAStat.html#af6a6e3ea4c7f8e1c984bea8d5fb9a7c0">SVF::PTAStat::MaxStructSize</a></div><div class="ttdeci">static const char * MaxStructSize</div><div class="ttdoc">Max struct size. </div><div class="ttdef"><b>Definition:</b> <a href="PTAStat_8h_source.html#l00063">PTAStat.h:63</a></div></div>
643
- <div class="ttc" id="classSVF_1_1MemObj_html_ae1d14e2bf0be36cdadebf119822f607b"><div class="ttname"><a href="classSVF_1_1MemObj.html#ae1d14e2bf0be36cdadebf119822f607b">SVF::MemObj::isFunction</a></div><div class="ttdeci">bool isFunction() const</div><div class="ttdoc">object attributes methods </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00672">SymbolTableInfo.cpp:672</a></div></div>
643
+ <div class="ttc" id="classSVF_1_1MemObj_html_ae1d14e2bf0be36cdadebf119822f607b"><div class="ttname"><a href="classSVF_1_1MemObj.html#ae1d14e2bf0be36cdadebf119822f607b">SVF::MemObj::isFunction</a></div><div class="ttdeci">bool isFunction() const</div><div class="ttdoc">object attributes methods </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00681">SymbolTableInfo.cpp:681</a></div></div>
644
644
  <div class="ttc" id="classSVF_1_1SVFStmt_html_a0ab8621e75e75f03425c323b3ed62ce9a0a9a0f650e864e89b7cbb3dc8c8aa197"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a0a9a0f650e864e89b7cbb3dc8c8aa197">SVF::SVFStmt::Addr</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00056">SVFStatements.h:56</a></div></div>
645
- <div class="ttc" id="classSVF_1_1MemObj_html_a40462512a99eb258d8cd442c38d812b4"><div class="ttname"><a href="classSVF_1_1MemObj.html#a40462512a99eb258d8cd442c38d812b4">SVF::MemObj::isGlobalObj</a></div><div class="ttdeci">bool isGlobalObj() const</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00677">SymbolTableInfo.cpp:677</a></div></div>
646
- <div class="ttc" id="classSVF_1_1MemObj_html_af7316c697eafc71d5fc93108da4e2cee"><div class="ttname"><a href="classSVF_1_1MemObj.html#af7316c697eafc71d5fc93108da4e2cee">SVF::MemObj::isStack</a></div><div class="ttdeci">bool isStack() const</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00687">SymbolTableInfo.cpp:687</a></div></div>
647
- <div class="ttc" id="classSVF_1_1MemObj_html_a6dae1b3429c6049f0153ec006d329082"><div class="ttname"><a href="classSVF_1_1MemObj.html#a6dae1b3429c6049f0153ec006d329082">SVF::MemObj::hasPtrObj</a></div><div class="ttdeci">bool hasPtrObj() const</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00737">SymbolTableInfo.cpp:737</a></div></div>
645
+ <div class="ttc" id="classSVF_1_1MemObj_html_a40462512a99eb258d8cd442c38d812b4"><div class="ttname"><a href="classSVF_1_1MemObj.html#a40462512a99eb258d8cd442c38d812b4">SVF::MemObj::isGlobalObj</a></div><div class="ttdeci">bool isGlobalObj() const</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00686">SymbolTableInfo.cpp:686</a></div></div>
646
+ <div class="ttc" id="classSVF_1_1MemObj_html_af7316c697eafc71d5fc93108da4e2cee"><div class="ttname"><a href="classSVF_1_1MemObj.html#af7316c697eafc71d5fc93108da4e2cee">SVF::MemObj::isStack</a></div><div class="ttdeci">bool isStack() const</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00696">SymbolTableInfo.cpp:696</a></div></div>
647
+ <div class="ttc" id="classSVF_1_1MemObj_html_a6dae1b3429c6049f0153ec006d329082"><div class="ttname"><a href="classSVF_1_1MemObj.html#a6dae1b3429c6049f0153ec006d329082">SVF::MemObj::hasPtrObj</a></div><div class="ttdeci">bool hasPtrObj() const</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00746">SymbolTableInfo.cpp:746</a></div></div>
648
648
  <div class="ttc" id="classSVF_1_1PTAStat_html_a78693e8bf93d712eb76c9d6dc0c45ae6"><div class="ttname"><a href="classSVF_1_1PTAStat.html#a78693e8bf93d712eb76c9d6dc0c45ae6">SVF::PTAStat::NumOfObjsHasVarArray</a></div><div class="ttdeci">static const char * NumOfObjsHasVarArray</div><div class="ttdoc">SVFIR object node has var array (maybe nested with struct) </div><div class="ttdef"><b>Definition:</b> <a href="PTAStat_8h_source.html#l00089">PTAStat.h:89</a></div></div>
649
649
  <div class="ttc" id="classSVF_1_1PTAStat_html_ac0e0a1c49d33e02f5cc0f21565ce627d"><div class="ttname"><a href="classSVF_1_1PTAStat.html#ac0e0a1c49d33e02f5cc0f21565ce627d">SVF::PTAStat::TotalNumOfFieldObjects</a></div><div class="ttdeci">static const char * TotalNumOfFieldObjects</div><div class="ttdoc">Total SVFIR field object node. </div><div class="ttdef"><b>Definition:</b> <a href="PTAStat_8h_source.html#l00062">PTAStat.h:62</a></div></div>
650
- <div class="ttc" id="classSVF_1_1MemObj_html_a7f828731597450f1d43b61413ab0e7bb"><div class="ttname"><a href="classSVF_1_1MemObj.html#a7f828731597450f1d43b61413ab0e7bb">SVF::MemObj::isConstantArray</a></div><div class="ttdeci">bool isConstantArray() const</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00722">SymbolTableInfo.cpp:722</a></div></div>
650
+ <div class="ttc" id="classSVF_1_1MemObj_html_a7f828731597450f1d43b61413ab0e7bb"><div class="ttname"><a href="classSVF_1_1MemObj.html#a7f828731597450f1d43b61413ab0e7bb">SVF::MemObj::isConstantArray</a></div><div class="ttdeci">bool isConstantArray() const</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00731">SymbolTableInfo.cpp:731</a></div></div>
651
651
  <div class="ttc" id="classSVF_1_1PTAStat_html_a6cbeca77d0681f7da28979cbd0f661b2"><div class="ttname"><a href="classSVF_1_1PTAStat.html#a6cbeca77d0681f7da28979cbd0f661b2">SVF::PTAStat::NumOfCalls</a></div><div class="ttdeci">static const char * NumOfCalls</div><div class="ttdoc">SVFIR call edge. </div><div class="ttdef"><b>Definition:</b> <a href="PTAStat_8h_source.html#l00071">PTAStat.h:71</a></div></div>
652
652
  <div class="ttc" id="classSVF_1_1SVFVar_html"><div class="ttname"><a href="classSVF_1_1SVFVar.html">SVF::SVFVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00045">SVFVariables.h:45</a></div></div>
653
653
  <div class="ttc" id="classSVF_1_1ObjVar_html"><div class="ttname"><a href="classSVF_1_1ObjVar.html">SVF::ObjVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00304">SVFVariables.h:304</a></div></div>
654
654
  <div class="ttc" id="classSVF_1_1SVFIR_html_a37cfa2aa4e7b98ef9dc8179f581a2362"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362">SVF::SVFIR::getPAG</a></div><div class="ttdeci">static SVFIR * getPAG(bool buildFromFile=false)</div><div class="ttdoc">Singleton design here to make sure we only have one instance during any analysis. ...</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00106">SVFIR.h:106</a></div></div>
655
655
  <div class="ttc" id="classSVF_1_1SparseBitVector_html_a9f96e6a886fa69e07cda5dbfaed8b7c9"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html#a9f96e6a886fa69e07cda5dbfaed8b7c9">SVF::SparseBitVector::count</a></div><div class="ttdeci">unsigned count() const</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l01102">SparseBitVector.h:1102</a></div></div>
656
- <div class="ttc" id="classSVF_1_1MemObj_html_a019a77516c403f1f3cc72917b810a41f"><div class="ttname"><a href="classSVF_1_1MemObj.html#a019a77516c403f1f3cc72917b810a41f">SVF::MemObj::isConstantStruct</a></div><div class="ttdeci">bool isConstantStruct() const</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00717">SymbolTableInfo.cpp:717</a></div></div>
656
+ <div class="ttc" id="classSVF_1_1MemObj_html_a019a77516c403f1f3cc72917b810a41f"><div class="ttname"><a href="classSVF_1_1MemObj.html#a019a77516c403f1f3cc72917b810a41f">SVF::MemObj::isConstantStruct</a></div><div class="ttdeci">bool isConstantStruct() const</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00726">SymbolTableInfo.cpp:726</a></div></div>
657
657
  <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_abc7e567209010286a68634c700d76cca"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#abc7e567209010286a68634c700d76cca">SVF::SymbolTableInfo::getMaxStructSize</a></div><div class="ttdeci">u32_t getMaxStructSize() const</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00269">SymbolTableInfo.h:269</a></div></div>
658
658
  <div class="ttc" id="classSVF_1_1IRGraph_html_a82528aff779ccf8f723f57507dd2d991"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a82528aff779ccf8f723f57507dd2d991">SVF::IRGraph::getObjectNodeNum</a></div><div class="ttdeci">u32_t getObjectNodeNum() const</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8h_source.html#l00177">IRGraph.h:177</a></div></div>
659
659
  <div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00085">SVFBasicTypes.h:85</a></div></div>
@@ -676,17 +676,17 @@ Private Attributes</h2></td></tr>
676
676
  <div class="ttc" id="classSVF_1_1SVFIR_html_a8a24e0bf9f95fc1519d4013e0e82dec9"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a8a24e0bf9f95fc1519d4013e0e82dec9">SVF::SVFIR::getFieldValNodeNum</a></div><div class="ttdeci">u32_t getFieldValNodeNum() const</div><div class="ttdoc">Node and edge statistics. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00284">SVFIR.h:284</a></div></div>
677
677
  <div class="ttc" id="classSVF_1_1PTAStat_html_a918051b1d0eb4f49c349352408cc9751"><div class="ttname"><a href="classSVF_1_1PTAStat.html#a918051b1d0eb4f49c349352408cc9751">SVF::PTAStat::NumOfObjsHasConstStruct</a></div><div class="ttdeci">static const char * NumOfObjsHasConstStruct</div><div class="ttdoc">SVFIR object node has const struct (maybe nested with array) </div><div class="ttdef"><b>Definition:</b> <a href="PTAStat_8h_source.html#l00090">PTAStat.h:90</a></div></div>
678
678
  <div class="ttc" id="classSVF_1_1PTAStat_html_a656ad9980ff05af396ed6754c50916e7"><div class="ttname"><a href="classSVF_1_1PTAStat.html#a656ad9980ff05af396ed6754c50916e7">SVF::PTAStat::NumOfStores</a></div><div class="ttdeci">static const char * NumOfStores</div><div class="ttdoc">SVFIR store edge. </div><div class="ttdef"><b>Definition:</b> <a href="PTAStat_8h_source.html#l00068">PTAStat.h:68</a></div></div>
679
- <div class="ttc" id="classSVF_1_1MemObj_html_a616e9f4d6f82a253f94391c47668b9a6"><div class="ttname"><a href="classSVF_1_1MemObj.html#a616e9f4d6f82a253f94391c47668b9a6">SVF::MemObj::isVarArray</a></div><div class="ttdeci">bool isVarArray() const</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00712">SymbolTableInfo.cpp:712</a></div></div>
679
+ <div class="ttc" id="classSVF_1_1MemObj_html_a616e9f4d6f82a253f94391c47668b9a6"><div class="ttname"><a href="classSVF_1_1MemObj.html#a616e9f4d6f82a253f94391c47668b9a6">SVF::MemObj::isVarArray</a></div><div class="ttdeci">bool isVarArray() const</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00721">SymbolTableInfo.cpp:721</a></div></div>
680
680
  <div class="ttc" id="classSVF_1_1PTAStat_html_adb31b163f0cbb9d9ce207ef5d8c075fa"><div class="ttname"><a href="classSVF_1_1PTAStat.html#adb31b163f0cbb9d9ce207ef5d8c075fa">SVF::PTAStat::NumOfObjsHasConstArray</a></div><div class="ttdeci">static const char * NumOfObjsHasConstArray</div><div class="ttdoc">SVFIR object node has const array (maybe nested with struct) </div><div class="ttdef"><b>Definition:</b> <a href="PTAStat_8h_source.html#l00091">PTAStat.h:91</a></div></div>
681
681
  <div class="ttc" id="classSVF_1_1PTAStat_html_a3afc0a36232a0388d8aa42c68219cb26"><div class="ttname"><a href="classSVF_1_1PTAStat.html#a3afc0a36232a0388d8aa42c68219cb26">SVF::PTAStat::TotalNumOfEdges</a></div><div class="ttdeci">static const char * TotalNumOfEdges</div><div class="ttdoc">Total SVFIR edge number. </div><div class="ttdef"><b>Definition:</b> <a href="PTAStat_8h_source.html#l00064">PTAStat.h:64</a></div></div>
682
682
  <div class="ttc" id="classSVF_1_1PTAStat_html_ab62eb21c7dc03f68b0509c31451b2e98"><div class="ttname"><a href="classSVF_1_1PTAStat.html#ab62eb21c7dc03f68b0509c31451b2e98">SVF::PTAStat::NumberOfFieldSensitiveObj</a></div><div class="ttdeci">static const char * NumberOfFieldSensitiveObj</div><div class="ttdef"><b>Definition:</b> <a href="PTAStat_8h_source.html#l00096">PTAStat.h:96</a></div></div>
683
683
  <div class="ttc" id="classSVF_1_1PTAStat_html_a4aff48eaa2045ee619a8ea793a9234b8"><div class="ttname"><a href="classSVF_1_1PTAStat.html#a4aff48eaa2045ee619a8ea793a9234b8">SVF::PTAStat::NumOfHeapObjs</a></div><div class="ttdeci">static const char * NumOfHeapObjs</div><div class="ttdoc">SVFIR heap object node. </div><div class="ttdef"><b>Definition:</b> <a href="PTAStat_8h_source.html#l00085">PTAStat.h:85</a></div></div>
684
684
  <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a267169023fc4f8dd66b145f7231fec11"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SVF::SymbolTableInfo::SymbolInfo</a></div><div class="ttdeci">static SymbolTableInfo * SymbolInfo()</div><div class="ttdoc">Singleton design here to make sure we only have one instance during any analysis. ...</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00108">SymbolTableInfo.cpp:108</a></div></div>
685
685
  <div class="ttc" id="classSVF_1_1IRGraph_html_a821df0fcb66e4f0a5b10c295c24b7c2c"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a821df0fcb66e4f0a5b10c295c24b7c2c">SVF::IRGraph::getPAGEdgeNum</a></div><div class="ttdeci">u32_t getPAGEdgeNum() const</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8h_source.html#l00194">IRGraph.h:194</a></div></div>
686
- <div class="ttc" id="classSVF_1_1MemObj_html_ad1966c52f95775ac7d65c0ba6632c3cf"><div class="ttname"><a href="classSVF_1_1MemObj.html#ad1966c52f95775ac7d65c0ba6632c3cf">SVF::MemObj::isVarStruct</a></div><div class="ttdeci">bool isVarStruct() const</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00707">SymbolTableInfo.cpp:707</a></div></div>
686
+ <div class="ttc" id="classSVF_1_1MemObj_html_ad1966c52f95775ac7d65c0ba6632c3cf"><div class="ttname"><a href="classSVF_1_1MemObj.html#ad1966c52f95775ac7d65c0ba6632c3cf">SVF::MemObj::isVarStruct</a></div><div class="ttdeci">bool isVarStruct() const</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00716">SymbolTableInfo.cpp:716</a></div></div>
687
687
  <div class="ttc" id="classSVF_1_1PTAStat_html_ada838d9e03f2be4fb3ceffab3983b564"><div class="ttname"><a href="classSVF_1_1PTAStat.html#ada838d9e03f2be4fb3ceffab3983b564">SVF::PTAStat::branchStat</a></div><div class="ttdeci">void branchStat()</div><div class="ttdef"><b>Definition:</b> <a href="PTAStat_8cpp_source.html#l00366">PTAStat.cpp:366</a></div></div>
688
- <div class="ttc" id="classSVF_1_1MemObj_html_a898c5bb3956402578266a6fb142e02b1"><div class="ttname"><a href="classSVF_1_1MemObj.html#a898c5bb3956402578266a6fb142e02b1">SVF::MemObj::isHeap</a></div><div class="ttdeci">bool isHeap() const</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00692">SymbolTableInfo.cpp:692</a></div></div>
689
- <div class="ttc" id="classSVF_1_1MemObj_html_a41d85883d44ad77832b020455951c6fc"><div class="ttname"><a href="classSVF_1_1MemObj.html#a41d85883d44ad77832b020455951c6fc">SVF::MemObj::isFieldInsensitive</a></div><div class="ttdeci">bool isFieldInsensitive() const</div><div class="ttdoc">Return true if its field limit is 0. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00661">SymbolTableInfo.cpp:661</a></div></div>
688
+ <div class="ttc" id="classSVF_1_1MemObj_html_a898c5bb3956402578266a6fb142e02b1"><div class="ttname"><a href="classSVF_1_1MemObj.html#a898c5bb3956402578266a6fb142e02b1">SVF::MemObj::isHeap</a></div><div class="ttdeci">bool isHeap() const</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00701">SymbolTableInfo.cpp:701</a></div></div>
689
+ <div class="ttc" id="classSVF_1_1MemObj_html_a41d85883d44ad77832b020455951c6fc"><div class="ttname"><a href="classSVF_1_1MemObj.html#a41d85883d44ad77832b020455951c6fc">SVF::MemObj::isFieldInsensitive</a></div><div class="ttdeci">bool isFieldInsensitive() const</div><div class="ttdoc">Return true if its field limit is 0. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00670">SymbolTableInfo.cpp:670</a></div></div>
690
690
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a108380f6f0b67654bb7c7676686096c8"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a108380f6f0b67654bb7c7676686096c8">SVF::PointerAnalysis::isLocalVarInRecursiveFun</a></div><div class="ttdeci">bool isLocalVarInRecursiveFun(NodeID id) const</div><div class="ttdoc">Whether a local variable is in function recursions. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8cpp_source.html#l00151">PointerAnalysis.cpp:151</a></div></div>
691
691
  <div class="ttc" id="classSVF_1_1SVFStmt_html_a0ab8621e75e75f03425c323b3ed62ce9aa0f700b514c431ec5329aec49df56dcc"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9aa0f700b514c431ec5329aec49df56dcc">SVF::SVFStmt::Store</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00056">SVFStatements.h:56</a></div></div>
692
692
  <div class="ttc" id="classSVF_1_1MemObj_html_a3ab6f65ffbf6442daac4d3f70f2d3cb1"><div class="ttname"><a href="classSVF_1_1MemObj.html#a3ab6f65ffbf6442daac4d3f70f2d3cb1">SVF::MemObj::getId</a></div><div class="ttdeci">SymID getId() const</div><div class="ttdoc">Get the memory object id. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00403">SymbolTableInfo.h:403</a></div></div>
@@ -702,7 +702,7 @@ Private Attributes</h2></td></tr>
702
702
  <div class="ttc" id="classSVF_1_1SVFIR_html"><div class="ttname"><a href="classSVF_1_1SVFIR.html">SVF::SVFIR</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00043">SVFIR.h:43</a></div></div>
703
703
  <div class="ttc" id="classSVF_1_1SVFIR_html_ae2006820c0d00482b85e7ae3adcb5744"><div class="ttname"><a href="classSVF_1_1SVFIR.html#ae2006820c0d00482b85e7ae3adcb5744">SVF::SVFIR::getSVFStmtSet</a></div><div class="ttdeci">SVFStmt::SVFStmtSetTy &amp; getSVFStmtSet(SVFStmt::PEDGEK kind)</div><div class="ttdoc">Get/set methods to get SVFStmts based on their kinds and ICFGNodes. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00162">SVFIR.h:162</a></div></div>
704
704
  <div class="ttc" id="classSVF_1_1PTAStat_html_a5b4095f427c9c7b9ec0db497ba33baea"><div class="ttname"><a href="classSVF_1_1PTAStat.html#a5b4095f427c9c7b9ec0db497ba33baea">SVF::PTAStat::localVarInRecursion</a></div><div class="ttdeci">NodeBS localVarInRecursion</div><div class="ttdef"><b>Definition:</b> <a href="PTAStat_8h_source.html#l00150">PTAStat.h:150</a></div></div>
705
- <div class="ttc" id="classSVF_1_1MemObj_html_a1a4ff4aaaf2573240a318e1b79328cd0"><div class="ttname"><a href="classSVF_1_1MemObj.html#a1a4ff4aaaf2573240a318e1b79328cd0">SVF::MemObj::isConstDataOrConstGlobal</a></div><div class="ttdeci">bool isConstDataOrConstGlobal() const</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00727">SymbolTableInfo.cpp:727</a></div></div>
705
+ <div class="ttc" id="classSVF_1_1MemObj_html_a1a4ff4aaaf2573240a318e1b79328cd0"><div class="ttname"><a href="classSVF_1_1MemObj.html#a1a4ff4aaaf2573240a318e1b79328cd0">SVF::MemObj::isConstDataOrConstGlobal</a></div><div class="ttdeci">bool isConstDataOrConstGlobal() const</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00736">SymbolTableInfo.cpp:736</a></div></div>
706
706
  <div class="ttc" id="classSVF_1_1PTAStat_html_aa5f455bfa79743b8e263431593d29bbf"><div class="ttname"><a href="classSVF_1_1PTAStat.html#aa5f455bfa79743b8e263431593d29bbf">SVF::PTAStat::printStat</a></div><div class="ttdeci">virtual void printStat(string str=&quot;&quot;)</div><div class="ttdef"><b>Definition:</b> <a href="PTAStat_8cpp_source.html#l00292">PTAStat.cpp:292</a></div></div>
707
707
  <div class="ttc" id="classSVF_1_1PTAStat_html_ac5bf59a0a7a760c9fec5f22dedec5eb6"><div class="ttname"><a href="classSVF_1_1PTAStat.html#ac5bf59a0a7a760c9fec5f22dedec5eb6">SVF::PTAStat::NumOfAddrs</a></div><div class="ttdeci">static const char * NumOfAddrs</div><div class="ttdoc">SVFIR addr edge. </div><div class="ttdef"><b>Definition:</b> <a href="PTAStat_8h_source.html#l00066">PTAStat.h:66</a></div></div>
708
708
  <div class="ttc" id="classSVF_1_1PTAStat_html_a95edd35cec92fa4cacc8b59b5eecc827"><div class="ttname"><a href="classSVF_1_1PTAStat.html#a95edd35cec92fa4cacc8b59b5eecc827">SVF::PTAStat::NumOfObjsHasVarStruct</a></div><div class="ttdeci">static const char * NumOfObjsHasVarStruct</div><div class="ttdoc">SVFIR object node has var struct (maybe nested with array) </div><div class="ttdef"><b>Definition:</b> <a href="PTAStat_8h_source.html#l00088">PTAStat.h:88</a></div></div>
@@ -2389,7 +2389,7 @@ Private Member Functions</h2></td></tr>
2389
2389
 
2390
2390
  <p class="definition">Definition at line <a class="el" href="PointerAnalysis_8h_source.html#l00358">358</a> of file <a class="el" href="PointerAnalysis_8h_source.html">PointerAnalysis.h</a>.</p>
2391
2391
  <div class="fragment"><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; {</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; <span class="keyword">const</span> MemObj* mem = <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#af76a55c3b8255a81a566bdce35ffc749">getBaseObj</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; <span class="keywordflow">return</span> mem-&gt;<a class="code" href="classSVF_1_1MemObj.html#a41d85883d44ad77832b020455951c6fc">isFieldInsensitive</a>();</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; }</div><div class="ttc" id="classSVF_1_1SVFIR_html_af76a55c3b8255a81a566bdce35ffc749"><div class="ttname"><a href="classSVF_1_1SVFIR.html#af76a55c3b8255a81a566bdce35ffc749">SVF::SVFIR::getBaseObj</a></div><div class="ttdeci">const MemObj * getBaseObj(NodeID id) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00413">SVFIR.h:413</a></div></div>
2392
- <div class="ttc" id="classSVF_1_1MemObj_html_a41d85883d44ad77832b020455951c6fc"><div class="ttname"><a href="classSVF_1_1MemObj.html#a41d85883d44ad77832b020455951c6fc">SVF::MemObj::isFieldInsensitive</a></div><div class="ttdeci">bool isFieldInsensitive() const</div><div class="ttdoc">Return true if its field limit is 0. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00661">SymbolTableInfo.cpp:661</a></div></div>
2392
+ <div class="ttc" id="classSVF_1_1MemObj_html_a41d85883d44ad77832b020455951c6fc"><div class="ttname"><a href="classSVF_1_1MemObj.html#a41d85883d44ad77832b020455951c6fc">SVF::MemObj::isFieldInsensitive</a></div><div class="ttdeci">bool isFieldInsensitive() const</div><div class="ttdoc">Return true if its field limit is 0. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00670">SymbolTableInfo.cpp:670</a></div></div>
2393
2393
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_adc7f5c71efb9cd1bec4f5ca9127654c3"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">SVF::PointerAnalysis::pag</a></div><div class="ttdeci">static SVFIR * pag</div><div class="ttdoc">SVFIR. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00146">PointerAnalysis.h:146</a></div></div>
2394
2394
  </div><!-- fragment -->
2395
2395
  </div>
@@ -2511,7 +2511,7 @@ Private Member Functions</h2></td></tr>
2511
2511
 
2512
2512
  <p class="definition">Definition at line <a class="el" href="PointerAnalysis_8cpp_source.html#l00151">151</a> of file <a class="el" href="PointerAnalysis_8cpp_source.html">PointerAnalysis.cpp</a>.</p>
2513
2513
  <div class="fragment"><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;{</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* obj = <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a2dd4d5f704906270af13e7a07f900eb1">getObject</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; assert(obj &amp;&amp; <span class="stringliteral">&quot;object not found!!&quot;</span>);</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keywordflow">if</span>(obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#af7316c697eafc71d5fc93108da4e2cee">isStack</a>())</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; {</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun = <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(<span class="keywordtype">id</span>)-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a53439a493963d16e5a1b5ed36ab6d33e">getFunction</a>())</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; {</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svffun = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a547b3bc62de65b9dbfc6dee55c063dd7">getSVFFunction</a>(fun);</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#ae3b651799345d9d92b6d736dafb03f63">callGraphSCC</a>-&gt;<a class="code" href="classSVF_1_1SCCDetection.html#a5d699af73b1e7ad4e3a5f6d26b8b6d15">isInCycle</a>(<a class="code" href="classSVF_1_1PointerAnalysis.html#a7c9b7e5fe37ae31ba84d167945ca57df">getPTACallGraph</a>()-&gt;getCallGraphNode(svffun)-&gt;getId());</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; }</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; }</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;}</div><div class="ttc" id="classSVF_1_1MemObj_html"><div class="ttname"><a href="classSVF_1_1MemObj.html">SVF::MemObj</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00373">SymbolTableInfo.h:373</a></div></div>
2514
- <div class="ttc" id="classSVF_1_1MemObj_html_af7316c697eafc71d5fc93108da4e2cee"><div class="ttname"><a href="classSVF_1_1MemObj.html#af7316c697eafc71d5fc93108da4e2cee">SVF::MemObj::isStack</a></div><div class="ttdeci">bool isStack() const</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00687">SymbolTableInfo.cpp:687</a></div></div>
2514
+ <div class="ttc" id="classSVF_1_1MemObj_html_af7316c697eafc71d5fc93108da4e2cee"><div class="ttname"><a href="classSVF_1_1MemObj.html#af7316c697eafc71d5fc93108da4e2cee">SVF::MemObj::isStack</a></div><div class="ttdeci">bool isStack() const</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00696">SymbolTableInfo.cpp:696</a></div></div>
2515
2515
  <div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00126">BasicTypes.h:126</a></div></div>
2516
2516
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a7c9b7e5fe37ae31ba84d167945ca57df"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a7c9b7e5fe37ae31ba84d167945ca57df">SVF::PointerAnalysis::getPTACallGraph</a></div><div class="ttdeci">PTACallGraph * getPTACallGraph() const</div><div class="ttdoc">Return call graph. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00178">PointerAnalysis.h:178</a></div></div>
2517
2517
  <div class="ttc" id="namespaceSVF_html_a5faee14fa1dd41447bc73ac365fe33c1"><div class="ttname"><a href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a></div><div class="ttdeci">llvm::Function Function</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00070">BasicTypes.h:70</a></div></div>
@@ -2863,7 +2863,7 @@ Private Member Functions</h2></td></tr>
2863
2863
  <p class="definition">Definition at line <a class="el" href="PointerAnalysis_8cpp_source.html#l00402">402</a> of file <a class="el" href="PointerAnalysis_8cpp_source.html">PointerAnalysis.cpp</a>.</p>
2864
2864
  <div class="fragment"><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160;{</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160;</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; assert(<a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a3dbe0b17694daa74f648a70e77efaf23">isIndirectCallSites</a>(cs) &amp;&amp; <span class="stringliteral">&quot;not an indirect callsite?&quot;</span>);</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html">PointsTo::iterator</a> ii = target.<a class="code" href="classSVF_1_1PointsTo.html#aa53962e561399bf493d1f2b9137356f6">begin</a>(), ie = target.<a class="code" href="classSVF_1_1PointsTo.html#a8f741cdffbf3c5fe0f602cdca677dee6">end</a>();</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; ii != ie; ii++)</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; {</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160;</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1PointerAnalysis.html#ad2c8654a6672472f9bf17681aa9b60bb">getNumOfResolvedIndCallEdge</a>() &gt;= <a class="code" href="classSVF_1_1Options.html#ad6c29b05188c9e06aa89623c61865ed8">Options::IndirectCallLimit</a>)</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; {</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a6c06020737f7dff22a666b75c28c5e7d">wrnMsg</a>(<span class="stringliteral">&quot;Resolved Indirect Call Edges are Out-Of-Budget, please increase the limit&quot;</span>);</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; }</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160;</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ObjVar.html">ObjVar</a>* objPN = SVFUtil::dyn_cast&lt;ObjVar&gt;(<a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(*ii)))</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; {</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* obj = <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a2dd4d5f704906270af13e7a07f900eb1">getObject</a>(objPN);</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160;</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; <span class="keywordflow">if</span>(obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#ae1d14e2bf0be36cdadebf119822f607b">isFunction</a>())</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; {</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* calleefun = SVFUtil::cast&lt;Function&gt;(obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#a4da54ef60231d2e6c26669226b99d2f3">getValue</a>());</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* callee = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a142e650415cb81011eb59dadd3cb0637">getDefFunForMultipleModule</a>(calleefun);</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160;</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1PointerAnalysis.html#ab541df6fc703c0b21c2c308584c0b7ff">matchArgs</a>(cs, callee) == <span class="keyword">false</span>)</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160;</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; <span class="keywordflow">if</span>(0 == <a class="code" href="classSVF_1_1PointerAnalysis.html#a1ca30dfa42702071b65d363c76d25cbe">getIndCallMap</a>()[cs].<a class="code" href="cJSON_8h.html#ad43c3812e6d13e0518d9f8b8f463ffcf">count</a>(callee))</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; {</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; newEdges[cs].insert(callee);</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a1ca30dfa42702071b65d363c76d25cbe">getIndCallMap</a>()[cs].insert(callee);</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160;</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#ad47b39252e02c68dfb466d4f42dc7ebe">ptaCallGraph</a>-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#a46416c668e2f0099394e79f685ede758">addIndirectCallGraphEdge</a>(cs, cs-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a18f4077d42b23c3fed35efc793b6102e">getCaller</a>(), callee);</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; <span class="comment">// FIXME: do we need to update llvm call graph here?</span></div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; <span class="comment">// The indirect call is maintained by ourself, We may update llvm&#39;s when we need to</span></div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; <span class="comment">//CallGraphNode* callgraphNode = callgraph-&gt;getOrInsertFunction(cs.getCaller());</span></div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; <span class="comment">//callgraphNode-&gt;addCalledFunction(cs,callgraph-&gt;getOrInsertFunction(callee));</span></div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; }</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; }</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; }</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; }</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160;}</div><div class="ttc" id="classSVF_1_1MemObj_html"><div class="ttname"><a href="classSVF_1_1MemObj.html">SVF::MemObj</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00373">SymbolTableInfo.h:373</a></div></div>
2865
2865
  <div class="ttc" id="classSVF_1_1PTACallGraph_html_a46416c668e2f0099394e79f685ede758"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#a46416c668e2f0099394e79f685ede758">SVF::PTACallGraph::addIndirectCallGraphEdge</a></div><div class="ttdeci">void addIndirectCallGraphEdge(const CallICFGNode *cs, const SVFFunction *callerFun, const SVFFunction *calleeFun)</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8cpp_source.html#l00187">PTACallGraph.cpp:187</a></div></div>
2866
- <div class="ttc" id="classSVF_1_1MemObj_html_ae1d14e2bf0be36cdadebf119822f607b"><div class="ttname"><a href="classSVF_1_1MemObj.html#ae1d14e2bf0be36cdadebf119822f607b">SVF::MemObj::isFunction</a></div><div class="ttdeci">bool isFunction() const</div><div class="ttdoc">object attributes methods </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00672">SymbolTableInfo.cpp:672</a></div></div>
2866
+ <div class="ttc" id="classSVF_1_1MemObj_html_ae1d14e2bf0be36cdadebf119822f607b"><div class="ttname"><a href="classSVF_1_1MemObj.html#ae1d14e2bf0be36cdadebf119822f607b">SVF::MemObj::isFunction</a></div><div class="ttdeci">bool isFunction() const</div><div class="ttdoc">object attributes methods </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00681">SymbolTableInfo.cpp:681</a></div></div>
2867
2867
  <div class="ttc" id="classSVF_1_1SVFIR_html_a3dbe0b17694daa74f648a70e77efaf23"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a3dbe0b17694daa74f648a70e77efaf23">SVF::SVFIR::isIndirectCallSites</a></div><div class="ttdeci">bool isIndirectCallSites(const CallICFGNode *cs) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00315">SVFIR.h:315</a></div></div>
2868
2868
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a142e650415cb81011eb59dadd3cb0637"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a142e650415cb81011eb59dadd3cb0637">SVF::SVFUtil::getDefFunForMultipleModule</a></div><div class="ttdeci">const SVFFunction * getDefFunForMultipleModule(const Function *fun)</div><div class="ttdoc">Get the definition of a function across multiple modules. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00269">SVFUtil.h:269</a></div></div>
2869
2869
  <div class="ttc" id="classSVF_1_1PointsTo_1_1PointsToIterator_html"><div class="ttname"><a href="classSVF_1_1PointsTo_1_1PointsToIterator.html">SVF::PointsTo::PointsToIterator</a></div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8h_source.html#l00181">PointsTo.h:181</a></div></div>
@@ -3655,7 +3655,7 @@ Additional Inherited Members</h2></td></tr>
3655
3655
  <div class="ttc" id="classSVF_1_1IRGraph_html_a4f5792216c6f38c32dac5074862ffc50"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a4f5792216c6f38c32dac5074862ffc50">SVF::IRGraph::getMemObj</a></div><div class="ttdeci">const MemObj * getMemObj(const Value *val) const</div><div class="ttdoc">get MemObj according to LLVM value </div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8h_source.html#l00090">IRGraph.h:90</a></div></div>
3656
3656
  <div class="ttc" id="classSVF_1_1SVFIR_html_a7276e82b4648ed0e1b3d1b8b37b24089"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a7276e82b4648ed0e1b3d1b8b37b24089">SVF::SVFIR::getAllFieldsObjVars</a></div><div class="ttdeci">NodeBS &amp; getAllFieldsObjVars(const MemObj *obj)</div><div class="ttdoc">Get all fields of an object. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00480">SVFIR.cpp:480</a></div></div>
3657
3657
  <div class="ttc" id="classSVF_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#l00460">SparseBitVector.h:460</a></div></div>
3658
- <div class="ttc" id="classSVF_1_1MemObj_html_a41d85883d44ad77832b020455951c6fc"><div class="ttname"><a href="classSVF_1_1MemObj.html#a41d85883d44ad77832b020455951c6fc">SVF::MemObj::isFieldInsensitive</a></div><div class="ttdeci">bool isFieldInsensitive() const</div><div class="ttdoc">Return true if its field limit is 0. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00661">SymbolTableInfo.cpp:661</a></div></div>
3658
+ <div class="ttc" id="classSVF_1_1MemObj_html_a41d85883d44ad77832b020455951c6fc"><div class="ttname"><a href="classSVF_1_1MemObj.html#a41d85883d44ad77832b020455951c6fc">SVF::MemObj::isFieldInsensitive</a></div><div class="ttdeci">bool isFieldInsensitive() const</div><div class="ttdoc">Return true if its field limit is 0. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00670">SymbolTableInfo.cpp:670</a></div></div>
3659
3659
  <div class="ttc" id="classSVF_1_1SVFIR_html_a2878e202045b7f2c817185e8bf95d354"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a2878e202045b7f2c817185e8bf95d354">SVF::SVFIR::getFIObjVar</a></div><div class="ttdeci">NodeID getFIObjVar(const MemObj *obj) const</div><div class="ttdoc">Get a field-insensitive obj SVFIR node according to a mem obj. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00364">SVFIR.h:364</a></div></div>
3660
3660
  <div class="ttc" id="classSVF_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#l00745">SparseBitVector.h:745</a></div></div>
3661
3661
  <div class="ttc" id="classSVF_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#l00391">GenericGraph.h:391</a></div></div>
@@ -3972,7 +3972,7 @@ Additional Inherited Members</h2></td></tr>
3972
3972
  <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a267169023fc4f8dd66b145f7231fec11"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SVF::SymbolTableInfo::SymbolInfo</a></div><div class="ttdeci">static SymbolTableInfo * SymbolInfo()</div><div class="ttdoc">Singleton design here to make sure we only have one instance during any analysis. ...</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00108">SymbolTableInfo.cpp:108</a></div></div>
3973
3973
  <div class="ttc" id="classSVF_1_1SVFIR_html_a148b51118eeba8117e033fea84b56be8"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a148b51118eeba8117e033fea84b56be8">SVF::SVFIR::GepObjVarMap</a></div><div class="ttdeci">NodeLocationSetMap GepObjVarMap</div><div class="ttdoc">Map a pair&lt;base,off&gt; to a gep obj node id. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00079">SVFIR.h:79</a></div></div>
3974
3974
  <div class="ttc" id="classSVF_1_1Options_html_a8dc477d83a142a62b63207f6f240f224"><div class="ttname"><a href="classSVF_1_1Options.html#a8dc477d83a142a62b63207f6f240f224">SVF::Options::FirstFieldEqBase</a></div><div class="ttdeci">static const llvm::cl::opt&lt; bool &gt; FirstFieldEqBase</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00113">Options.h:113</a></div></div>
3975
- <div class="ttc" id="classSVF_1_1MemObj_html_a41d85883d44ad77832b020455951c6fc"><div class="ttname"><a href="classSVF_1_1MemObj.html#a41d85883d44ad77832b020455951c6fc">SVF::MemObj::isFieldInsensitive</a></div><div class="ttdeci">bool isFieldInsensitive() const</div><div class="ttdoc">Return true if its field limit is 0. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00661">SymbolTableInfo.cpp:661</a></div></div>
3975
+ <div class="ttc" id="classSVF_1_1MemObj_html_a41d85883d44ad77832b020455951c6fc"><div class="ttname"><a href="classSVF_1_1MemObj.html#a41d85883d44ad77832b020455951c6fc">SVF::MemObj::isFieldInsensitive</a></div><div class="ttdeci">bool isFieldInsensitive() const</div><div class="ttdoc">Return true if its field limit is 0. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00670">SymbolTableInfo.cpp:670</a></div></div>
3976
3976
  <div class="ttc" id="classSVF_1_1SVFIR_html_a2878e202045b7f2c817185e8bf95d354"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a2878e202045b7f2c817185e8bf95d354">SVF::SVFIR::getFIObjVar</a></div><div class="ttdeci">NodeID getFIObjVar(const MemObj *obj) const</div><div class="ttdoc">Get a field-insensitive obj SVFIR node according to a mem obj. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00364">SVFIR.h:364</a></div></div>
3977
3977
  <div class="ttc" id="classSVF_1_1MemObj_html_a3ab6f65ffbf6442daac4d3f70f2d3cb1"><div class="ttname"><a href="classSVF_1_1MemObj.html#a3ab6f65ffbf6442daac4d3f70f2d3cb1">SVF::MemObj::getId</a></div><div class="ttdeci">SymID getId() const</div><div class="ttdoc">Get the memory object id. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00403">SymbolTableInfo.h:403</a></div></div>
3978
3978
  <div class="ttc" id="classSVF_1_1LocationSet_html"><div class="ttname"><a href="classSVF_1_1LocationSet.html">SVF::LocationSet</a></div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00048">LocationSet.h:48</a></div></div>
@@ -696,7 +696,7 @@ Additional Inherited Members</h2></td></tr>
696
696
  <div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_aee289e298e421448caaa604b7eb34fcb"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#aee289e298e421448caaa604b7eb34fcb">SVF::BVDataPTAImpl::getPts</a></div><div class="ttdeci">virtual const PointsTo &amp; getPts(NodeID id)</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00099">PointerAnalysisImpl.h:99</a></div></div>
697
697
  <div class="ttc" id="classSVF_1_1PointsTo_html_a879783ba6629e500af9aa7dfcda2563d"><div class="ttname"><a href="classSVF_1_1PointsTo.html#a879783ba6629e500af9aa7dfcda2563d">SVF::PointsTo::count</a></div><div class="ttdeci">u32_t count(void) const</div><div class="ttdoc">Returns number of elements. </div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8cpp_source.html#l00107">PointsTo.cpp:107</a></div></div>
698
698
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_ae6ea391ac44dffeb6899bb44323c5361"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#ae6ea391ac44dffeb6899bb44323c5361">SVF::PointerAnalysis::isHeapMemObj</a></div><div class="ttdeci">bool isHeapMemObj(NodeID id) const</div><div class="ttdoc">Whether this object is heap or array. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00316">PointerAnalysis.h:316</a></div></div>
699
- <div class="ttc" id="classSVF_1_1MemObj_html_a41d85883d44ad77832b020455951c6fc"><div class="ttname"><a href="classSVF_1_1MemObj.html#a41d85883d44ad77832b020455951c6fc">SVF::MemObj::isFieldInsensitive</a></div><div class="ttdeci">bool isFieldInsensitive() const</div><div class="ttdoc">Return true if its field limit is 0. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00661">SymbolTableInfo.cpp:661</a></div></div>
699
+ <div class="ttc" id="classSVF_1_1MemObj_html_a41d85883d44ad77832b020455951c6fc"><div class="ttname"><a href="classSVF_1_1MemObj.html#a41d85883d44ad77832b020455951c6fc">SVF::MemObj::isFieldInsensitive</a></div><div class="ttdeci">bool isFieldInsensitive() const</div><div class="ttdoc">Return true if its field limit is 0. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00670">SymbolTableInfo.cpp:670</a></div></div>
700
700
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a108380f6f0b67654bb7c7676686096c8"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a108380f6f0b67654bb7c7676686096c8">SVF::PointerAnalysis::isLocalVarInRecursiveFun</a></div><div class="ttdeci">bool isLocalVarInRecursiveFun(NodeID id) const</div><div class="ttdoc">Whether a local variable is in function recursions. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8cpp_source.html#l00151">PointerAnalysis.cpp:151</a></div></div>
701
701
  <div class="ttc" id="classSVF_1_1PointsTo_html"><div class="ttname"><a href="classSVF_1_1PointsTo.html">SVF::PointsTo</a></div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8h_source.html#l00028">PointsTo.h:28</a></div></div>
702
702
  </div><!-- fragment -->
@@ -1304,7 +1304,7 @@ Friends</h2></td></tr>
1304
1304
  <div class="fragment"><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160;{</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160;</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160;</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a> <a class="code" href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a> = ls.<a class="code" href="classSVF_1_1LocationSet.html#a63c5c8e03b35e0d0cea94137d309c853">accumulateConstantFieldIdx</a>();</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <span class="keywordflow">if</span>(offset &lt; 0)</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; {</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">writeWrnMsg</a>(<span class="stringliteral">&quot;try to create a gep node with negative offset.&quot;</span>);</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; offset = abs(offset);</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; }</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> maxOffset = obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#a51be7ad70bc2c6a4230bd2f6b86bdc88">getMaxFieldOffsetLimit</a>();</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <span class="keywordflow">if</span> (maxOffset != 0)</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; offset = offset % maxOffset;</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; offset = 0;</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160;</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>(offset);</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_a9b707002523ece2ac54ca893ee9a2d4e"><div class="ttname"><a href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">SVF::s32_t</a></div><div class="ttdeci">signed s32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00086">SVFBasicTypes.h:86</a></div></div>
1305
1305
  <div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00085">SVFBasicTypes.h:85</a></div></div>
1306
1306
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a077caa1b10ab84d101d79fc7ea50db2d"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">SVF::SVFUtil::writeWrnMsg</a></div><div class="ttdeci">void writeWrnMsg(std::string msg)</div><div class="ttdoc">Writes a message run through wrnMsg. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00067">SVFUtil.cpp:67</a></div></div>
1307
- <div class="ttc" id="classSVF_1_1MemObj_html_a51be7ad70bc2c6a4230bd2f6b86bdc88"><div class="ttname"><a href="classSVF_1_1MemObj.html#a51be7ad70bc2c6a4230bd2f6b86bdc88">SVF::MemObj::getMaxFieldOffsetLimit</a></div><div class="ttdeci">u32_t getMaxFieldOffsetLimit() const</div><div class="ttdoc">Get max field offset limit. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00655">SymbolTableInfo.cpp:655</a></div></div>
1307
+ <div class="ttc" id="classSVF_1_1MemObj_html_a51be7ad70bc2c6a4230bd2f6b86bdc88"><div class="ttname"><a href="classSVF_1_1MemObj.html#a51be7ad70bc2c6a4230bd2f6b86bdc88">SVF::MemObj::getMaxFieldOffsetLimit</a></div><div class="ttdeci">u32_t getMaxFieldOffsetLimit() const</div><div class="ttdoc">Get max field offset limit. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00664">SymbolTableInfo.cpp:664</a></div></div>
1308
1308
  <div class="ttc" id="classSVF_1_1LocationSet_html_a63c5c8e03b35e0d0cea94137d309c853"><div class="ttname"><a href="classSVF_1_1LocationSet.html#a63c5c8e03b35e0d0cea94137d309c853">SVF::LocationSet::accumulateConstantFieldIdx</a></div><div class="ttdeci">s32_t accumulateConstantFieldIdx() const</div><div class="ttdoc">Get methods. </div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00090">LocationSet.h:90</a></div></div>
1309
1309
  <div class="ttc" id="cJSON_8cpp_html_a95bf816579e97b6f33bdb5e25ed6d5de"><div class="ttname"><a href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a></div><div class="ttdeci">buffer offset</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l01113">cJSON.cpp:1113</a></div></div>
1310
1310
  <div class="ttc" id="classSVF_1_1LocationSet_html"><div class="ttname"><a href="classSVF_1_1LocationSet.html">SVF::LocationSet</a></div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00048">LocationSet.h:48</a></div></div>
@@ -1560,8 +1560,8 @@ Friends</h2></td></tr>
1560
1560
 
1561
1561
  <p>Get different kinds of syms. </p>
1562
1562
 
1563
- <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00757">757</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
1564
- <div class="fragment"><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160;{</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160;</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SymbolTableInfo.html#a65a7e9d6d238a04291cb7d0aa15ece90">SymbolTableInfo::isNullPtrSym</a>(val))</div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#adaed6e68c2f53260ed4c4fc38b5c4721">nullPtrSymID</a>();</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SymbolTableInfo.html#ab15112d3900f28525848cbe5fad37deb">SymbolTableInfo::isBlackholeSym</a>(val))</div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a1689fa03795200b501ae3887906e7e72">blkPtrSymID</a>();</div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160; {</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; ValueToIDMapTy::const_iterator iter = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a5054f95a7b77257ffb283044aab17b08">valSymMap</a>.find(val);</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; assert(iter!=<a class="code" href="classSVF_1_1SymbolTableInfo.html#a5054f95a7b77257ffb283044aab17b08">valSymMap</a>.end() &amp;&amp;<span class="stringliteral">&quot;value sym not found&quot;</span>);</div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; <span class="keywordflow">return</span> iter-&gt;second;</div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160; }</div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160;}</div><div class="ttc" id="classSVF_1_1SymbolTableInfo_html_adaed6e68c2f53260ed4c4fc38b5c4721"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#adaed6e68c2f53260ed4c4fc38b5c4721">SVF::SymbolTableInfo::nullPtrSymID</a></div><div class="ttdeci">SymID nullPtrSymID() const</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00208">SymbolTableInfo.h:208</a></div></div>
1563
+ <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00766">766</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
1564
+ <div class="fragment"><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160;{</div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160;</div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SymbolTableInfo.html#a65a7e9d6d238a04291cb7d0aa15ece90">SymbolTableInfo::isNullPtrSym</a>(val))</div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#adaed6e68c2f53260ed4c4fc38b5c4721">nullPtrSymID</a>();</div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SymbolTableInfo.html#ab15112d3900f28525848cbe5fad37deb">SymbolTableInfo::isBlackholeSym</a>(val))</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a1689fa03795200b501ae3887906e7e72">blkPtrSymID</a>();</div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; {</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160; ValueToIDMapTy::const_iterator iter = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a5054f95a7b77257ffb283044aab17b08">valSymMap</a>.find(val);</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160; assert(iter!=<a class="code" href="classSVF_1_1SymbolTableInfo.html#a5054f95a7b77257ffb283044aab17b08">valSymMap</a>.end() &amp;&amp;<span class="stringliteral">&quot;value sym not found&quot;</span>);</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; <span class="keywordflow">return</span> iter-&gt;second;</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; }</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160;}</div><div class="ttc" id="classSVF_1_1SymbolTableInfo_html_adaed6e68c2f53260ed4c4fc38b5c4721"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#adaed6e68c2f53260ed4c4fc38b5c4721">SVF::SymbolTableInfo::nullPtrSymID</a></div><div class="ttdeci">SymID nullPtrSymID() const</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00208">SymbolTableInfo.h:208</a></div></div>
1565
1565
  <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_ab15112d3900f28525848cbe5fad37deb"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#ab15112d3900f28525848cbe5fad37deb">SVF::SymbolTableInfo::isBlackholeSym</a></div><div class="ttdeci">static bool isBlackholeSym(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00332">SymbolTableInfo.cpp:332</a></div></div>
1566
1566
  <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a1689fa03795200b501ae3887906e7e72"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a1689fa03795200b501ae3887906e7e72">SVF::SymbolTableInfo::blkPtrSymID</a></div><div class="ttdeci">SymID blkPtrSymID() const</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00203">SymbolTableInfo.h:203</a></div></div>
1567
1567
  <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a65a7e9d6d238a04291cb7d0aa15ece90"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a65a7e9d6d238a04291cb7d0aa15ece90">SVF::SymbolTableInfo::isNullPtrSym</a></div><div class="ttdeci">static bool isNullPtrSym(const Value *val)</div><div class="ttdoc">special value </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00324">SymbolTableInfo.cpp:324</a></div></div>
@@ -1614,8 +1614,8 @@ Friends</h2></td></tr>
1614
1614
  </table>
1615
1615
  </div><div class="memdoc">
1616
1616
 
1617
- <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00772">772</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
1618
- <div class="fragment"><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160;{</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SymbolTableInfo.html#a65a7e9d6d238a04291cb7d0aa15ece90">SymbolTableInfo::isNullPtrSym</a>(val) || <a class="code" href="classSVF_1_1SymbolTableInfo.html#ab15112d3900f28525848cbe5fad37deb">SymbolTableInfo::isBlackholeSym</a>(val))</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; <span class="keywordflow">return</span> (<a class="code" href="classSVF_1_1SymbolTableInfo.html#a5054f95a7b77257ffb283044aab17b08">valSymMap</a>.find(val) != <a class="code" href="classSVF_1_1SymbolTableInfo.html#a5054f95a7b77257ffb283044aab17b08">valSymMap</a>.end());</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160;}</div><div class="ttc" id="classSVF_1_1SymbolTableInfo_html_ab15112d3900f28525848cbe5fad37deb"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#ab15112d3900f28525848cbe5fad37deb">SVF::SymbolTableInfo::isBlackholeSym</a></div><div class="ttdeci">static bool isBlackholeSym(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00332">SymbolTableInfo.cpp:332</a></div></div>
1617
+ <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00781">781</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
1618
+ <div class="fragment"><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160;{</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SymbolTableInfo.html#a65a7e9d6d238a04291cb7d0aa15ece90">SymbolTableInfo::isNullPtrSym</a>(val) || <a class="code" href="classSVF_1_1SymbolTableInfo.html#ab15112d3900f28525848cbe5fad37deb">SymbolTableInfo::isBlackholeSym</a>(val))</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160; <span class="keywordflow">return</span> (<a class="code" href="classSVF_1_1SymbolTableInfo.html#a5054f95a7b77257ffb283044aab17b08">valSymMap</a>.find(val) != <a class="code" href="classSVF_1_1SymbolTableInfo.html#a5054f95a7b77257ffb283044aab17b08">valSymMap</a>.end());</div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160;}</div><div class="ttc" id="classSVF_1_1SymbolTableInfo_html_ab15112d3900f28525848cbe5fad37deb"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#ab15112d3900f28525848cbe5fad37deb">SVF::SymbolTableInfo::isBlackholeSym</a></div><div class="ttdeci">static bool isBlackholeSym(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00332">SymbolTableInfo.cpp:332</a></div></div>
1619
1619
  <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a65a7e9d6d238a04291cb7d0aa15ece90"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a65a7e9d6d238a04291cb7d0aa15ece90">SVF::SymbolTableInfo::isNullPtrSym</a></div><div class="ttdeci">static bool isNullPtrSym(const Value *val)</div><div class="ttdoc">special value </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00324">SymbolTableInfo.cpp:324</a></div></div>
1620
1620
  <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a5054f95a7b77257ffb283044aab17b08"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a5054f95a7b77257ffb283044aab17b08">SVF::SymbolTableInfo::valSymMap</a></div><div class="ttdeci">ValueToIDMapTy valSymMap</div><div class="ttdoc">map a value to its sym id </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00084">SymbolTableInfo.h:84</a></div></div>
1621
1621
  </div><!-- fragment -->
@@ -1850,7 +1850,7 @@ Additional Inherited Members</h2></td></tr>
1850
1850
  <div class="ttc" id="classSVF_1_1MemObj_html"><div class="ttname"><a href="classSVF_1_1MemObj.html">SVF::MemObj</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00373">SymbolTableInfo.h:373</a></div></div>
1851
1851
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a4dfb43679e9fa794ebad99b6584c32ec"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a4dfb43679e9fa794ebad99b6584c32ec">SVF::PointerAnalysis::getPts</a></div><div class="ttdeci">virtual const PointsTo &amp; getPts(NodeID ptr)=0</div><div class="ttdoc">Get points-to targets of a pointer. It needs to be implemented in child class. </div></div>
1852
1852
  <div class="ttc" id="classSVF_1_1PTACallGraph_html_a46416c668e2f0099394e79f685ede758"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#a46416c668e2f0099394e79f685ede758">SVF::PTACallGraph::addIndirectCallGraphEdge</a></div><div class="ttdeci">void addIndirectCallGraphEdge(const CallICFGNode *cs, const SVFFunction *callerFun, const SVFFunction *calleeFun)</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8cpp_source.html#l00187">PTACallGraph.cpp:187</a></div></div>
1853
- <div class="ttc" id="classSVF_1_1MemObj_html_ae1d14e2bf0be36cdadebf119822f607b"><div class="ttname"><a href="classSVF_1_1MemObj.html#ae1d14e2bf0be36cdadebf119822f607b">SVF::MemObj::isFunction</a></div><div class="ttdeci">bool isFunction() const</div><div class="ttdoc">object attributes methods </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00672">SymbolTableInfo.cpp:672</a></div></div>
1853
+ <div class="ttc" id="classSVF_1_1MemObj_html_ae1d14e2bf0be36cdadebf119822f607b"><div class="ttname"><a href="classSVF_1_1MemObj.html#ae1d14e2bf0be36cdadebf119822f607b">SVF::MemObj::isFunction</a></div><div class="ttdeci">bool isFunction() const</div><div class="ttdoc">object attributes methods </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00681">SymbolTableInfo.cpp:681</a></div></div>
1854
1854
  <div class="ttc" id="classSVF_1_1ThreadCallGraph_html_a1ebbd26c17cff1c1a1bee9caa9a8f825"><div class="ttname"><a href="classSVF_1_1ThreadCallGraph.html#a1ebbd26c17cff1c1a1bee9caa9a8f825">SVF::ThreadCallGraph::forksitesEnd</a></div><div class="ttdeci">CallSiteSet::const_iterator forksitesEnd() const</div><div class="ttdef"><b>Definition:</b> <a href="ThreadCallGraph_8h_source.html#l00277">ThreadCallGraph.h:277</a></div></div>
1855
1855
  <div class="ttc" id="classSVF_1_1PTACallGraph_html_a5f5a5ec7e707a21994d301cc07d32a5a"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#a5f5a5ec7e707a21994d301cc07d32a5a">SVF::PTACallGraph::FunctionSet</a></div><div class="ttdeci">Set&lt; const SVFFunction * &gt; FunctionSet</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00228">PTACallGraph.h:228</a></div></div>
1856
1856
  <div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00126">BasicTypes.h:126</a></div></div>
@@ -552,7 +552,7 @@ Additional Inherited Members</h2></td></tr>
552
552
  <div class="ttc" id="classSVF_1_1VersionedFlowSensitiveStat_html_a99a7d0bbea0f015f5a656c33ee3ab88d"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitiveStat.html#a99a7d0bbea0f015f5a656c33ee3ab88d">SVF::VersionedFlowSensitiveStat::_MaxPtsSize</a></div><div class="ttdeci">u32_t _MaxPtsSize</div><div class="ttdoc">Largest PTS size. </div><div class="ttdef"><b>Definition:</b> <a href="WPAStat_8h_source.html#l00204">WPAStat.h:204</a></div></div>
553
553
  <div class="ttc" id="classSVF_1_1FlowSensitive_html_a88a111b6bc347d6562db7af8bd8f2f0e"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#a88a111b6bc347d6562db7af8bd8f2f0e">SVF::FlowSensitive::numOfProcessedGep</a></div><div class="ttdeci">u32_t numOfProcessedGep</div><div class="ttdoc">Number of processed Copy node. </div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8h_source.html#l00289">FlowSensitive.h:289</a></div></div>
554
554
  <div class="ttc" id="classSVF_1_1FlowSensitive_html_af71a5ae3aef022c569e89f40515072cf"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#af71a5ae3aef022c569e89f40515072cf">SVF::FlowSensitive::numOfProcessedMSSANode</a></div><div class="ttdeci">u32_t numOfProcessedMSSANode</div><div class="ttdoc">Number of processed formal ret node. </div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8h_source.html#l00295">FlowSensitive.h:295</a></div></div>
555
- <div class="ttc" id="classSVF_1_1MemObj_html_a41d85883d44ad77832b020455951c6fc"><div class="ttname"><a href="classSVF_1_1MemObj.html#a41d85883d44ad77832b020455951c6fc">SVF::MemObj::isFieldInsensitive</a></div><div class="ttdeci">bool isFieldInsensitive() const</div><div class="ttdoc">Return true if its field limit is 0. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00661">SymbolTableInfo.cpp:661</a></div></div>
555
+ <div class="ttc" id="classSVF_1_1MemObj_html_a41d85883d44ad77832b020455951c6fc"><div class="ttname"><a href="classSVF_1_1MemObj.html#a41d85883d44ad77832b020455951c6fc">SVF::MemObj::isFieldInsensitive</a></div><div class="ttdeci">bool isFieldInsensitive() const</div><div class="ttdoc">Return true if its field limit is 0. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00670">SymbolTableInfo.cpp:670</a></div></div>
556
556
  <div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a77a5dd9578def9a8e2b48e8b90d9b996"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a77a5dd9578def9a8e2b48e8b90d9b996">SVF::VersionedFlowSensitive::prelabelingTime</a></div><div class="ttdeci">double prelabelingTime</div><div class="ttdoc">Time to prelabel SVFG. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#l00232">VersionedFlowSensitive.h:232</a></div></div>
557
557
  <div class="ttc" id="classSVF_1_1MemObj_html_a3ab6f65ffbf6442daac4d3f70f2d3cb1"><div class="ttname"><a href="classSVF_1_1MemObj.html#a3ab6f65ffbf6442daac4d3f70f2d3cb1">SVF::MemObj::getId</a></div><div class="ttdeci">SymID getId() const</div><div class="ttdoc">Get the memory object id. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00403">SymbolTableInfo.h:403</a></div></div>
558
558
  <div class="ttc" id="classSVF_1_1FlowSensitive_html_a888d6334e5e226c634680e4c0674dcfb"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#a888d6334e5e226c634680e4c0674dcfb">SVF::FlowSensitive::copyTime</a></div><div class="ttdeci">double copyTime</div><div class="ttdoc">time of handling copy edges </div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8h_source.html#l00309">FlowSensitive.h:309</a></div></div>
package/codecov.yml ADDED
@@ -0,0 +1,4 @@
1
+ comment:
2
+ layout: "reach,diff,flags,tree"
3
+ behavior: default
4
+ require_changes: no
@@ -586,13 +586,22 @@ bool ObjTypeInfo::isNonPtrFieldObj(const LocationSet& ls)
586
586
 
587
587
  const Type* ety = getType();
588
588
 
589
- if ((SVFUtil::isa<StructType>(ety) && !SVFUtil::cast<StructType>(ety)->isOpaque()) || SVFUtil::isa<ArrayType>(ety))
589
+ if (SVFUtil::isa<StructType>(ety) || SVFUtil::isa<ArrayType>(ety))
590
590
  {
591
- const Type* elemTy = SymbolTableInfo::SymbolInfo()->getFlatternedElemType(ety, ls.accumulateConstantFieldIdx());
592
- if(elemTy->isPointerTy())
593
- return false;
591
+ u32_t sz = 0;
592
+ if(Options::ModelArrays)
593
+ sz = SymbolTableInfo::SymbolInfo()->getStructInfoIter(ety)->second->getFlattenElementTypes().size();
594
594
  else
595
- return true;
595
+ sz = SymbolTableInfo::SymbolInfo()->getStructInfoIter(ety)->second->getFlattenFieldTypes().size();
596
+
597
+ if(sz <= (u32_t)ls.accumulateConstantFieldIdx())
598
+ {
599
+ writeWrnMsg("out of bound error when accessing the struct/array");
600
+ return false;
601
+ }
602
+
603
+ const Type* elemTy = SymbolTableInfo::SymbolInfo()->getFlatternedElemType(ety, ls.accumulateConstantFieldIdx());
604
+ return (elemTy->isPointerTy() == false);
596
605
  }
597
606
  else
598
607
  {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "svf-tools",
3
- "version": "1.0.511",
3
+ "version": "1.0.514",
4
4
  "description": "* <b>[TypeClone](https://github.com/SVF-tools/SVF/wiki/TypeClone) published in our [ECOOP paper](https://yuleisui.github.io/publications/ecoop20.pdf) is now available in SVF </b> * <b>SVF now uses a single script for its build. Just type [`source ./build.sh`](https://github.com/SVF-tools/SVF/blob/master/build.sh) in your terminal, that's it!</b> * <b>SVF now supports LLVM-10.0.0! </b> * <b>We thank [bsauce](https://github.com/bsauce) for writing a user manual of SVF ([link1](https://www.jianshu.com/p/068a08ec749c) and [link2](https://www.jianshu.com/p/777c30d4240e)) in Chinese </b> * <b>SVF now supports LLVM-9.0.0 (Thank [Byoungyoung Lee](https://github.com/SVF-tools/SVF/issues/142) for his help!). </b> * <b>SVF now supports a set of [field-sensitive pointer analyses](https://yuleisui.github.io/publications/sas2019a.pdf). </b> * <b>[Use SVF as an external lib](https://github.com/SVF-tools/SVF/wiki/Using-SVF-as-a-lib-in-your-own-tool) for your own project (Contributed by [Hongxu Chen](https://github.com/HongxuChen)). </b> * <b>SVF now supports LLVM-7.0.0. </b> * <b>SVF now supports Docker. [Try SVF in Docker](https://github.com/SVF-tools/SVF/wiki/Try-SVF-in-Docker)! </b> * <b>SVF now supports [LLVM-6.0.0](https://github.com/svf-tools/SVF/pull/38) (Contributed by [Jack Anthony](https://github.com/jackanth)). </b> * <b>SVF now supports [LLVM-4.0.0](https://github.com/svf-tools/SVF/pull/23) (Contributed by Jared Carlson. Thank [Jared](https://github.com/jcarlson23) and [Will](https://github.com/dtzWill) for their in-depth [discussions](https://github.com/svf-tools/SVF/pull/18) about updating SVF!) </b> * <b>SVF now supports analysis for C++ programs.</b> <br />",
5
5
  "main": "index.js",
6
6
  "scripts": {