svf-tools 1.0.861 → 1.0.863

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.
@@ -203,7 +203,7 @@ $(function() {
203
203
  <div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; {</div>
204
204
  <div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; types.insert(fwInferObjType(source));</div>
205
205
  <div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; }</div>
206
- <div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *largestTy = selectLargestType(types);</div>
206
+ <div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *largestTy = selectLargestSizedType(types);</div>
207
207
  <div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <a class="code" href="ObjTypeInference_8cpp.html#a7165377d2fbd76a86ed0ec5218712c78">ABORT_IFNOT</a>(largestTy, <span class="stringliteral">&quot;return type cannot be null&quot;</span>);</div>
208
208
  <div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keywordflow">return</span> largestTy;</div>
209
209
  <div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;}</div>
@@ -240,7 +240,7 @@ $(function() {
240
240
  <div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keyword">auto</span> vIt = _valueToInferSites.find(pUser);</div>
241
241
  <div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="keywordflow">if</span> (canUpdate)</div>
242
242
  <div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; {</div>
243
- <div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="keywordflow">if</span> (vIt != _valueToInferSites.end() &amp;&amp; !vIt-&gt;second.empty())</div>
243
+ <div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="keywordflow">if</span> (vIt != _valueToInferSites.end())</div>
244
244
  <div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; {</div>
245
245
  <div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; infersites.insert(vIt-&gt;second.begin(), vIt-&gt;second.end());</div>
246
246
  <div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; }</div>
@@ -413,8 +413,8 @@ $(function() {
413
413
  <div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const Type *&gt;</a> types;</div>
414
414
  <div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; std::transform(infersites.begin(), infersites.end(), std::inserter(types, types.begin()),</div>
415
415
  <div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <a class="code" href="ObjTypeInference_8cpp.html#a19b8626948c43f4ce19dbc69742d309e">infersiteToType</a>);</div>
416
- <div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; _valueToInferSites[curValue] = infersites;</div>
417
- <div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; _valueToType[curValue] = selectLargestType(types);</div>
416
+ <div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; _valueToInferSites[curValue] = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a72502f7f536418621485e90ab98c2016">SVFUtil::move</a>(infersites);</div>
417
+ <div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; _valueToType[curValue] = selectLargestSizedType(types);</div>
418
418
  <div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; }</div>
419
419
  <div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; }</div>
420
420
  <div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> = _valueToType[startValue];</div>
@@ -460,7 +460,7 @@ $(function() {
460
460
  <div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <span class="keyword">auto</span> vIt = _valueToAllocs.find(pUser);</div>
461
461
  <div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; <span class="keywordflow">if</span> (canUpdate)</div>
462
462
  <div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; {</div>
463
- <div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; <span class="keywordflow">if</span> (vIt != _valueToAllocs.end() &amp;&amp; !vIt-&gt;second.empty())</div>
463
+ <div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; <span class="keywordflow">if</span> (vIt != _valueToAllocs.end())</div>
464
464
  <div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; {</div>
465
465
  <div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; sources.insert(vIt-&gt;second.begin(), vIt-&gt;second.end());</div>
466
466
  <div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; }</div>
@@ -536,7 +536,7 @@ $(function() {
536
536
  <div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; }</div>
537
537
  <div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <span class="keywordflow">if</span> (canUpdate)</div>
538
538
  <div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; {</div>
539
- <div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; _valueToAllocs[curValue] = sources;</div>
539
+ <div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; _valueToAllocs[curValue] = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a72502f7f536418621485e90ab98c2016">SVFUtil::move</a>(sources);</div>
540
540
  <div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; }</div>
541
541
  <div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; }</div>
542
542
  <div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const Value *&gt;</a> srcs = _valueToAllocs[startValue];</div>
@@ -602,17 +602,17 @@ $(function() {
602
602
  <div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160;}</div>
603
603
  <div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; </div>
604
604
  <div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; </div>
605
- <div class="line"><a name="l00555"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjTypeInference.html#aff3be73b7348c0e4dece6a9b5b1bd1f1"> 555</a></span>&#160;<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *<a class="code" href="classSVF_1_1ObjTypeInference.html#aff3be73b7348c0e4dece6a9b5b1bd1f1">ObjTypeInference::selectLargestType</a>(<a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const Type *&gt;</a> &amp;objTys)</div>
605
+ <div class="line"><a name="l00555"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjTypeInference.html#a205fa59a7250270b216f47df78ef2319"> 555</a></span>&#160;<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *<a class="code" href="classSVF_1_1ObjTypeInference.html#a205fa59a7250270b216f47df78ef2319">ObjTypeInference::selectLargestSizedType</a>(<a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const Type *&gt;</a> &amp;objTys)</div>
606
606
  <div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160;{</div>
607
607
  <div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; <span class="keywordflow">if</span> (objTys.empty()) <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
608
608
  <div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; <span class="comment">// map type size to types from with key in descending order</span></div>
609
- <div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; <a class="code" href="namespaceSVF.html#aedf0d6718ca176e0b9e17ab4b30729c6">OrderedMap&lt;u32_t, Set&lt;const Type *&gt;</a>, std::greater&lt;int&gt;&gt; typeSzToTypes;</div>
609
+ <div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; <a class="code" href="namespaceSVF.html#aedf0d6718ca176e0b9e17ab4b30729c6">OrderedMap&lt;u32_t, OrderedSet&lt;const Type *&gt;</a>, std::greater&lt;int&gt;&gt; typeSzToTypes;</div>
610
610
  <div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *ty: objTys)</div>
611
611
  <div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; {</div>
612
612
  <div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; typeSzToTypes[objTyToNumFields(ty)].insert(ty);</div>
613
613
  <div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; }</div>
614
614
  <div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; assert(!typeSzToTypes.empty() &amp;&amp; <span class="stringliteral">&quot;typeSzToTypes cannot be empty&quot;</span>);</div>
615
- <div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const Type *&gt;</a> largestTypes;</div>
615
+ <div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; <a class="code" href="namespaceSVF.html#a4f21e91ff8eaea5207afe5c60dbd78d7">OrderedSet&lt;const Type *&gt;</a> largestTypes;</div>
616
616
  <div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; std::tie(std::ignore, largestTypes) = *typeSzToTypes.begin();</div>
617
617
  <div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; assert(!largestTypes.empty() &amp;&amp; <span class="stringliteral">&quot;largest element cannot be empty&quot;</span>);</div>
618
618
  <div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; <span class="keywordflow">return</span> *largestTypes.begin();</div>
@@ -648,6 +648,7 @@ $(function() {
648
648
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a50fc24901350df9db890ba16a9b87e33"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">SVF::LLVMModuleSet::getSVFFunction</a></div><div class="ttdeci">SVFFunction * getSVFFunction(const Function *fun) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00202">LLVMModule.h:202</a></div></div>
649
649
  <div class="ttc" id="anamespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdoc">LLVM Basic classes.</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00080">BasicTypes.h:80</a></div></div>
650
650
  <div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_ab2064cb70c76f399ce115f2621adea35"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#ab2064cb70c76f399ce115f2621adea35">SVF::SVFUtil::isHeapAllocExtCallViaRet</a></div><div class="ttdeci">bool isHeapAllocExtCallViaRet(const CallSite cs)</div><div class="ttdoc">interfaces to be used externally</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00442">SVFUtil.h:442</a></div></div>
651
+ <div class="ttc" id="aclassSVF_1_1ObjTypeInference_html_a205fa59a7250270b216f47df78ef2319"><div class="ttname"><a href="classSVF_1_1ObjTypeInference.html#a205fa59a7250270b216f47df78ef2319">SVF::ObjTypeInference::selectLargestSizedType</a></div><div class="ttdeci">const Type * selectLargestSizedType(Set&lt; const Type * &gt; &amp;objTys)</div><div class="ttdoc">Select the largest (conservative) type from all types.</div><div class="ttdef"><b>Definition:</b> <a href="ObjTypeInference_8cpp_source.html#l00555">ObjTypeInference.cpp:555</a></div></div>
651
652
  <div class="ttc" id="anamespaceSVF_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="BasicTypes_8h_source.html#l00083">BasicTypes.h:83</a></div></div>
652
653
  <div class="ttc" id="anamespaceSVF_html_affba423b674a0aba723e33101826e297"><div class="ttname"><a href="namespaceSVF.html#affba423b674a0aba723e33101826e297">SVF::LLVMContext</a></div><div class="ttdeci">llvm::LLVMContext LLVMContext</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00068">BasicTypes.h:68</a></div></div>
653
654
  <div class="ttc" id="anamespaceSVF_html_a1f4624771922dc8c2447ad7433588c73"><div class="ttname"><a href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">SVF::CallBase</a></div><div class="ttdeci">llvm::CallBase CallBase</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00144">BasicTypes.h:144</a></div></div>
@@ -670,13 +671,14 @@ $(function() {
670
671
  <div class="ttc" id="aclassSVF_1_1FILOWorkList_html_afcf3fcda18e8d3e2bad70a51376c0ce1"><div class="ttname"><a href="classSVF_1_1FILOWorkList.html#afcf3fcda18e8d3e2bad70a51376c0ce1">SVF::FILOWorkList::push</a></div><div class="ttdeci">bool push(const Data &amp;data)</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00257">WorkList.h:257</a></div></div>
671
672
  <div class="ttc" id="anamespaceSVF_html_a3bacb4f95c73e6d794901d01c6b65a83"><div class="ttname"><a href="namespaceSVF.html#a3bacb4f95c73e6d794901d01c6b65a83">SVF::AllocaInst</a></div><div class="ttdeci">llvm::AllocaInst AllocaInst</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00148">BasicTypes.h:148</a></div></div>
672
673
  <div class="ttc" id="aclassSVF_1_1ObjTypeInference_html_af8113e432377917c1a0de9ab100aaafe"><div class="ttname"><a href="classSVF_1_1ObjTypeInference.html#af8113e432377917c1a0de9ab100aaafe">SVF::ObjTypeInference::isAllocation</a></div><div class="ttdeci">bool isAllocation(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="ObjTypeInference_8cpp_source.html#l00498">ObjTypeInference.cpp:498</a></div></div>
673
- <div class="ttc" id="aclassSVF_1_1ObjTypeInference_html_aff3be73b7348c0e4dece6a9b5b1bd1f1"><div class="ttname"><a href="classSVF_1_1ObjTypeInference.html#aff3be73b7348c0e4dece6a9b5b1bd1f1">SVF::ObjTypeInference::selectLargestType</a></div><div class="ttdeci">const Type * selectLargestType(Set&lt; const Type * &gt; &amp;objTys)</div><div class="ttdoc">Select the largest (conservative) type from all types.</div><div class="ttdef"><b>Definition:</b> <a href="ObjTypeInference_8cpp_source.html#l00555">ObjTypeInference.cpp:555</a></div></div>
674
674
  <div class="ttc" id="anamespaceSVF_html_ac4e93e1fec646ff222940a663843921b"><div class="ttname"><a href="namespaceSVF.html#ac4e93e1fec646ff222940a663843921b">SVF::GetElementPtrInst</a></div><div class="ttdeci">llvm::GetElementPtrInst GetElementPtrInst</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00160">BasicTypes.h:160</a></div></div>
675
+ <div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_a72502f7f536418621485e90ab98c2016"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a72502f7f536418621485e90ab98c2016">SVF::SVFUtil::move</a></div><div class="ttdeci">constexpr std::remove_reference&lt; T &gt;::type &amp;&amp; move(T &amp;&amp;t) noexcept</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00621">SVFUtil.h:621</a></div></div>
675
676
  <div class="ttc" id="aclassSVF_1_1SVFFunction_html_ac4c28c8d205d354f3a982119f29f2aac"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ac4c28c8d205d354f3a982119f29f2aac">SVF::SVFFunction::getExitBB</a></div><div class="ttdeci">const SVFBasicBlock * getExitBB() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8cpp_source.html#l00193">SVFValue.cpp:193</a></div></div>
676
677
  <div class="ttc" id="anamespaceSVF_html_adefcb50414ea999d70cea5ccdbcb98d7"><div class="ttname"><a href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">SVF::ConstantInt</a></div><div class="ttdeci">llvm::ConstantInt ConstantInt</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00123">BasicTypes.h:123</a></div></div>
677
678
  <div class="ttc" id="aLLVMModule_8h_html"><div class="ttname"><a href="LLVMModule_8h.html">LLVMModule.h</a></div></div>
678
679
  <div class="ttc" id="aclassSVF_1_1ObjTypeInference_html_aee4383a13cda421acb034ea147e33a6d"><div class="ttname"><a href="classSVF_1_1ObjTypeInference.html#aee4383a13cda421acb034ea147e33a6d">SVF::ObjTypeInference::defaultType</a></div><div class="ttdeci">const Type * defaultType(const Value *val)</div><div class="ttdoc">Default type.</div><div class="ttdef"><b>Definition:</b> <a href="ObjTypeInference_8cpp_source.html#l00112">ObjTypeInference.cpp:112</a></div></div>
679
680
  <div class="ttc" id="anamespaceSVF_html_afc50da46a6ea7c2cf61683bbec4d7c8d"><div class="ttname"><a href="namespaceSVF.html#afc50da46a6ea7c2cf61683bbec4d7c8d">SVF::BitCastInst</a></div><div class="ttdeci">llvm::BitCastInst BitCastInst</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00151">BasicTypes.h:151</a></div></div>
681
+ <div class="ttc" id="anamespaceSVF_html_a4f21e91ff8eaea5207afe5c60dbd78d7"><div class="ttname"><a href="namespaceSVF.html#a4f21e91ff8eaea5207afe5c60dbd78d7">SVF::OrderedSet</a></div><div class="ttdeci">std::set&lt; Key, Compare, Allocator &gt; OrderedSet</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00106">SVFType.h:106</a></div></div>
680
682
  <div class="ttc" id="aclassSVF_1_1ObjTypeInference_html_a707f0575f3d70e62a78f08c961ec7dae"><div class="ttname"><a href="classSVF_1_1ObjTypeInference.html#a707f0575f3d70e62a78f08c961ec7dae">SVF::ObjTypeInference::bwfindAllocations</a></div><div class="ttdeci">Set&lt; const Value * &gt; bwfindAllocations(const Value *startValue)</div><div class="ttdoc">Backward collect all possible allocation sites (stack, static, heap) starting from a value.</div><div class="ttdef"><b>Definition:</b> <a href="ObjTypeInference_8cpp_source.html#l00376">ObjTypeInference.cpp:376</a></div></div>
681
683
  <div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_aed0b0b9f035057552a6a82154fd88e61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVF::SVFUtil::outs</a></div><div class="ttdeci">std::ostream &amp; outs()</div><div class="ttdoc">Overwrite llvm::outs()</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00050">SVFUtil.h:50</a></div></div>
682
684
  <div class="ttc" id="aclassSVF_1_1ObjTypeInference_html_afe926ee3427bb329d189e0c40bb1cd60"><div class="ttname"><a href="classSVF_1_1ObjTypeInference.html#afe926ee3427bb329d189e0c40bb1cd60">SVF::ObjTypeInference::validateTypeCheck</a></div><div class="ttdeci">void validateTypeCheck(const CallBase *cs)</div><div class="ttdoc">Validate type inference.</div><div class="ttdef"><b>Definition:</b> <a href="ObjTypeInference_8cpp_source.html#l00507">ObjTypeInference.cpp:507</a></div></div>
@@ -162,7 +162,7 @@ $(function() {
162
162
  <div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ObjTypeInference.html#af8113e432377917c1a0de9ab100aaafe">isAllocation</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *val);</div>
163
163
  <div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; </div>
164
164
  <div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;<span class="keyword">public</span>:</div>
165
- <div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *<a class="code" href="classSVF_1_1ObjTypeInference.html#aff3be73b7348c0e4dece6a9b5b1bd1f1">selectLargestType</a>(<a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const Type *&gt;</a> &amp;objTys);</div>
165
+ <div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *<a class="code" href="classSVF_1_1ObjTypeInference.html#a205fa59a7250270b216f47df78ef2319">selectLargestSizedType</a>(<a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const Type *&gt;</a> &amp;objTys);</div>
166
166
  <div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; </div>
167
167
  <div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1ObjTypeInference.html#a5eae038a7bffb0549ca75cd9c850ff1e">objTyToNumFields</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *objTy);</div>
168
168
  <div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; </div>
@@ -179,6 +179,7 @@ $(function() {
179
179
  <div class="ttc" id="anamespaceSVF_html_aa962cc1d782cc46553251e96b64a754b"><div class="ttname"><a href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">SVF::PointerType</a></div><div class="ttdeci">llvm::PointerType PointerType</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00094">BasicTypes.h:94</a></div></div>
180
180
  <div class="ttc" id="aclassSVF_1_1ObjTypeInference_html_a3ef6cdbd56a4d169a2d2cab0b2f6515b"><div class="ttname"><a href="classSVF_1_1ObjTypeInference.html#a3ef6cdbd56a4d169a2d2cab0b2f6515b">SVF::ObjTypeInference::ValueToSources</a></div><div class="ttdeci">ValueToValueSet ValueToSources</div><div class="ttdef"><b>Definition:</b> <a href="ObjTypeInference_8h_source.html#l00047">ObjTypeInference.h:47</a></div></div>
181
181
  <div class="ttc" id="anamespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdoc">LLVM Basic classes.</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00080">BasicTypes.h:80</a></div></div>
182
+ <div class="ttc" id="aclassSVF_1_1ObjTypeInference_html_a205fa59a7250270b216f47df78ef2319"><div class="ttname"><a href="classSVF_1_1ObjTypeInference.html#a205fa59a7250270b216f47df78ef2319">SVF::ObjTypeInference::selectLargestSizedType</a></div><div class="ttdeci">const Type * selectLargestSizedType(Set&lt; const Type * &gt; &amp;objTys)</div><div class="ttdoc">Select the largest (conservative) type from all types.</div><div class="ttdef"><b>Definition:</b> <a href="ObjTypeInference_8cpp_source.html#l00555">ObjTypeInference.cpp:555</a></div></div>
182
183
  <div class="ttc" id="anamespaceSVF_html_affba423b674a0aba723e33101826e297"><div class="ttname"><a href="namespaceSVF.html#affba423b674a0aba723e33101826e297">SVF::LLVMContext</a></div><div class="ttdeci">llvm::LLVMContext LLVMContext</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00068">BasicTypes.h:68</a></div></div>
183
184
  <div class="ttc" id="anamespaceSVF_html_a1f4624771922dc8c2447ad7433588c73"><div class="ttname"><a href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">SVF::CallBase</a></div><div class="ttdeci">llvm::CallBase CallBase</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00144">BasicTypes.h:144</a></div></div>
184
185
  <div class="ttc" id="anamespaceSVF_html_a1d008c0666c145622b81d427be64c52d"><div class="ttname"><a href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">SVF::Type</a></div><div class="ttdeci">llvm::Type Type</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00081">BasicTypes.h:81</a></div></div>
@@ -195,7 +196,6 @@ $(function() {
195
196
  <div class="ttc" id="aclassSVF_1_1ObjTypeInference_html_a5eae038a7bffb0549ca75cd9c850ff1e"><div class="ttname"><a href="classSVF_1_1ObjTypeInference.html#a5eae038a7bffb0549ca75cd9c850ff1e">SVF::ObjTypeInference::objTyToNumFields</a></div><div class="ttdeci">u32_t objTyToNumFields(const Type *objTy)</div><div class="ttdef"><b>Definition:</b> <a href="ObjTypeInference_8cpp_source.html#l00571">ObjTypeInference.cpp:571</a></div></div>
196
197
  <div class="ttc" id="aBasicTypes_8h_html"><div class="ttname"><a href="BasicTypes_8h.html">BasicTypes.h</a></div></div>
197
198
  <div class="ttc" id="aclassSVF_1_1ObjTypeInference_html_af8113e432377917c1a0de9ab100aaafe"><div class="ttname"><a href="classSVF_1_1ObjTypeInference.html#af8113e432377917c1a0de9ab100aaafe">SVF::ObjTypeInference::isAllocation</a></div><div class="ttdeci">bool isAllocation(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="ObjTypeInference_8cpp_source.html#l00498">ObjTypeInference.cpp:498</a></div></div>
198
- <div class="ttc" id="aclassSVF_1_1ObjTypeInference_html_aff3be73b7348c0e4dece6a9b5b1bd1f1"><div class="ttname"><a href="classSVF_1_1ObjTypeInference.html#aff3be73b7348c0e4dece6a9b5b1bd1f1">SVF::ObjTypeInference::selectLargestType</a></div><div class="ttdeci">const Type * selectLargestType(Set&lt; const Type * &gt; &amp;objTys)</div><div class="ttdoc">Select the largest (conservative) type from all types.</div><div class="ttdef"><b>Definition:</b> <a href="ObjTypeInference_8cpp_source.html#l00555">ObjTypeInference.cpp:555</a></div></div>
199
199
  <div class="ttc" id="aclassSVF_1_1ObjTypeInference_html_a18edeb47fb7734eb17ba3a84181cbc16"><div class="ttname"><a href="classSVF_1_1ObjTypeInference.html#a18edeb47fb7734eb17ba3a84181cbc16">SVF::ObjTypeInference::_valueToAllocs</a></div><div class="ttdeci">ValueToSources _valueToAllocs</div><div class="ttdef"><b>Definition:</b> <a href="ObjTypeInference_8h_source.html#l00055">ObjTypeInference.h:55</a></div></div>
200
200
  <div class="ttc" id="aclassSVF_1_1ObjTypeInference_html_ac97f30431b4e96d9d70dced9960072e9"><div class="ttname"><a href="classSVF_1_1ObjTypeInference.html#ac97f30431b4e96d9d70dced9960072e9">SVF::ObjTypeInference::ValueToType</a></div><div class="ttdeci">Map&lt; const Value *, const Type * &gt; ValueToType</div><div class="ttdef"><b>Definition:</b> <a href="ObjTypeInference_8h_source.html#l00048">ObjTypeInference.h:48</a></div></div>
201
201
  <div class="ttc" id="aclassSVF_1_1ObjTypeInference_html_aee4383a13cda421acb034ea147e33a6d"><div class="ttname"><a href="classSVF_1_1ObjTypeInference.html#aee4383a13cda421acb034ea147e33a6d">SVF::ObjTypeInference::defaultType</a></div><div class="ttdeci">const Type * defaultType(const Value *val)</div><div class="ttdoc">Default type.</div><div class="ttdef"><b>Definition:</b> <a href="ObjTypeInference_8cpp_source.html#l00112">ObjTypeInference.cpp:112</a></div></div>
@@ -86,7 +86,7 @@ $(function() {
86
86
  <tr><td class="entry"><a class="el" href="classSVF_1_1ObjTypeInference.html#ae8b18f3e71cc14c0cc085742a8f79510">ObjTypeInference</a>()=default</td><td class="entry"><a class="el" href="classSVF_1_1ObjTypeInference.html">SVF::ObjTypeInference</a></td><td class="entry"><span class="mlabel">explicit</span></td></tr>
87
87
  <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1ObjTypeInference.html#a5eae038a7bffb0549ca75cd9c850ff1e">objTyToNumFields</a>(const Type *objTy)</td><td class="entry"><a class="el" href="classSVF_1_1ObjTypeInference.html">SVF::ObjTypeInference</a></td><td class="entry"></td></tr>
88
88
  <tr><td class="entry"><a class="el" href="classSVF_1_1ObjTypeInference.html#a873679d5197310cb7d1bf708ef1ade6e">ptrType</a>()</td><td class="entry"><a class="el" href="classSVF_1_1ObjTypeInference.html">SVF::ObjTypeInference</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
89
- <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1ObjTypeInference.html#aff3be73b7348c0e4dece6a9b5b1bd1f1">selectLargestType</a>(Set&lt; const Type * &gt; &amp;objTys)</td><td class="entry"><a class="el" href="classSVF_1_1ObjTypeInference.html">SVF::ObjTypeInference</a></td><td class="entry"></td></tr>
89
+ <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1ObjTypeInference.html#a205fa59a7250270b216f47df78ef2319">selectLargestSizedType</a>(Set&lt; const Type * &gt; &amp;objTys)</td><td class="entry"><a class="el" href="classSVF_1_1ObjTypeInference.html">SVF::ObjTypeInference</a></td><td class="entry"></td></tr>
90
90
  <tr><td class="entry"><a class="el" href="classSVF_1_1ObjTypeInference.html#a99eaaef89f214fc8587349361600b44d">typeSizeDiffTest</a>(const PointerType *oPTy, const Type *iTy, const Value *val)</td><td class="entry"><a class="el" href="classSVF_1_1ObjTypeInference.html">SVF::ObjTypeInference</a></td><td class="entry"></td></tr>
91
91
  <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1ObjTypeInference.html#afe926ee3427bb329d189e0c40bb1cd60">validateTypeCheck</a>(const CallBase *cs)</td><td class="entry"><a class="el" href="classSVF_1_1ObjTypeInference.html">SVF::ObjTypeInference</a></td><td class="entry"></td></tr>
92
92
  <tr><td class="entry"><a class="el" href="classSVF_1_1ObjTypeInference.html#afb1c28ce04b61c423bd734db48b0a5b6">ValueBoolPair</a> typedef</td><td class="entry"><a class="el" href="classSVF_1_1ObjTypeInference.html">SVF::ObjTypeInference</a></td><td class="entry"></td></tr>
@@ -118,9 +118,9 @@ Public Member Functions</h2></td></tr>
118
118
  <tr class="separator:a172d2e9ab858fc7cd145721e175c4deb"><td class="memSeparator" colspan="2">&#160;</td></tr>
119
119
  <tr class="memitem:a172f97ff9c9a7c90dbec6329c89775ad"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceSVF.html#affba423b674a0aba723e33101826e297">LLVMContext</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1ObjTypeInference.html#a172f97ff9c9a7c90dbec6329c89775ad">getLLVMCtx</a> ()</td></tr>
120
120
  <tr class="separator:a172f97ff9c9a7c90dbec6329c89775ad"><td class="memSeparator" colspan="2">&#160;</td></tr>
121
- <tr class="memitem:aff3be73b7348c0e4dece6a9b5b1bd1f1"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1ObjTypeInference.html#aff3be73b7348c0e4dece6a9b5b1bd1f1">selectLargestType</a> (<a class="el" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set</a>&lt; const <a class="el" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> * &gt; &amp;objTys)</td></tr>
122
- <tr class="memdesc:aff3be73b7348c0e4dece6a9b5b1bd1f1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Select the largest (conservative) type from all types. <a href="classSVF_1_1ObjTypeInference.html#aff3be73b7348c0e4dece6a9b5b1bd1f1">More...</a><br /></td></tr>
123
- <tr class="separator:aff3be73b7348c0e4dece6a9b5b1bd1f1"><td class="memSeparator" colspan="2">&#160;</td></tr>
121
+ <tr class="memitem:a205fa59a7250270b216f47df78ef2319"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1ObjTypeInference.html#a205fa59a7250270b216f47df78ef2319">selectLargestSizedType</a> (<a class="el" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set</a>&lt; const <a class="el" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> * &gt; &amp;objTys)</td></tr>
122
+ <tr class="memdesc:a205fa59a7250270b216f47df78ef2319"><td class="mdescLeft">&#160;</td><td class="mdescRight">Select the largest (conservative) type from all types. <a href="classSVF_1_1ObjTypeInference.html#a205fa59a7250270b216f47df78ef2319">More...</a><br /></td></tr>
123
+ <tr class="separator:a205fa59a7250270b216f47df78ef2319"><td class="memSeparator" colspan="2">&#160;</td></tr>
124
124
  <tr class="memitem:a5eae038a7bffb0549ca75cd9c850ff1e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1ObjTypeInference.html#a5eae038a7bffb0549ca75cd9c850ff1e">objTyToNumFields</a> (const <a class="el" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *objTy)</td></tr>
125
125
  <tr class="separator:a5eae038a7bffb0549ca75cd9c850ff1e"><td class="memSeparator" colspan="2">&#160;</td></tr>
126
126
  <tr class="memitem:a72da2d7f06e8fee67dc5b3c451fa5dee"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1ObjTypeInference.html#a72da2d7f06e8fee67dc5b3c451fa5dee">getArgPosInCall</a> (const <a class="el" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a> *callBase, const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *arg)</td></tr>
@@ -364,7 +364,7 @@ Private Attributes</h2></td></tr>
364
364
  <div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <span class="keyword">auto</span> vIt = <a class="code" href="classSVF_1_1ObjTypeInference.html#a18edeb47fb7734eb17ba3a84181cbc16">_valueToAllocs</a>.find(pUser);</div>
365
365
  <div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; <span class="keywordflow">if</span> (canUpdate)</div>
366
366
  <div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; {</div>
367
- <div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; <span class="keywordflow">if</span> (vIt != <a class="code" href="classSVF_1_1ObjTypeInference.html#a18edeb47fb7734eb17ba3a84181cbc16">_valueToAllocs</a>.end() &amp;&amp; !vIt-&gt;second.empty())</div>
367
+ <div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; <span class="keywordflow">if</span> (vIt != <a class="code" href="classSVF_1_1ObjTypeInference.html#a18edeb47fb7734eb17ba3a84181cbc16">_valueToAllocs</a>.end())</div>
368
368
  <div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; {</div>
369
369
  <div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; sources.insert(vIt-&gt;second.begin(), vIt-&gt;second.end());</div>
370
370
  <div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; }</div>
@@ -440,7 +440,7 @@ Private Attributes</h2></td></tr>
440
440
  <div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; }</div>
441
441
  <div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <span class="keywordflow">if</span> (canUpdate)</div>
442
442
  <div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; {</div>
443
- <div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; <a class="code" href="classSVF_1_1ObjTypeInference.html#a18edeb47fb7734eb17ba3a84181cbc16">_valueToAllocs</a>[curValue] = sources;</div>
443
+ <div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; <a class="code" href="classSVF_1_1ObjTypeInference.html#a18edeb47fb7734eb17ba3a84181cbc16">_valueToAllocs</a>[curValue] = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a72502f7f536418621485e90ab98c2016">SVFUtil::move</a>(sources);</div>
444
444
  <div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; }</div>
445
445
  <div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; }</div>
446
446
  <div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const Value *&gt;</a> srcs = <a class="code" href="classSVF_1_1ObjTypeInference.html#a18edeb47fb7734eb17ba3a84181cbc16">_valueToAllocs</a>[startValue];</div>
@@ -550,7 +550,7 @@ Private Attributes</h2></td></tr>
550
550
  <div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keyword">auto</span> vIt = <a class="code" href="classSVF_1_1ObjTypeInference.html#a0e34e7ea20e9ff7650f89750c53f4671">_valueToInferSites</a>.find(pUser);</div>
551
551
  <div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="keywordflow">if</span> (canUpdate)</div>
552
552
  <div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; {</div>
553
- <div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="keywordflow">if</span> (vIt != <a class="code" href="classSVF_1_1ObjTypeInference.html#a0e34e7ea20e9ff7650f89750c53f4671">_valueToInferSites</a>.end() &amp;&amp; !vIt-&gt;second.empty())</div>
553
+ <div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="keywordflow">if</span> (vIt != <a class="code" href="classSVF_1_1ObjTypeInference.html#a0e34e7ea20e9ff7650f89750c53f4671">_valueToInferSites</a>.end())</div>
554
554
  <div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; {</div>
555
555
  <div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; infersites.insert(vIt-&gt;second.begin(), vIt-&gt;second.end());</div>
556
556
  <div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; }</div>
@@ -723,8 +723,8 @@ Private Attributes</h2></td></tr>
723
723
  <div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const Type *&gt;</a> types;</div>
724
724
  <div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; std::transform(infersites.begin(), infersites.end(), std::inserter(types, types.begin()),</div>
725
725
  <div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <a class="code" href="ObjTypeInference_8cpp.html#a19b8626948c43f4ce19dbc69742d309e">infersiteToType</a>);</div>
726
- <div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <a class="code" href="classSVF_1_1ObjTypeInference.html#a0e34e7ea20e9ff7650f89750c53f4671">_valueToInferSites</a>[curValue] = infersites;</div>
727
- <div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; <a class="code" href="classSVF_1_1ObjTypeInference.html#ad9ceac3c884a08ce0ae4fef4b488a7c5">_valueToType</a>[curValue] = <a class="code" href="classSVF_1_1ObjTypeInference.html#aff3be73b7348c0e4dece6a9b5b1bd1f1">selectLargestType</a>(types);</div>
726
+ <div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <a class="code" href="classSVF_1_1ObjTypeInference.html#a0e34e7ea20e9ff7650f89750c53f4671">_valueToInferSites</a>[curValue] = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a72502f7f536418621485e90ab98c2016">SVFUtil::move</a>(infersites);</div>
727
+ <div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; <a class="code" href="classSVF_1_1ObjTypeInference.html#ad9ceac3c884a08ce0ae4fef4b488a7c5">_valueToType</a>[curValue] = <a class="code" href="classSVF_1_1ObjTypeInference.html#a205fa59a7250270b216f47df78ef2319">selectLargestSizedType</a>(types);</div>
728
728
  <div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; }</div>
729
729
  <div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; }</div>
730
730
  <div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> = <a class="code" href="classSVF_1_1ObjTypeInference.html#ad9ceac3c884a08ce0ae4fef4b488a7c5">_valueToType</a>[startValue];</div>
@@ -830,7 +830,7 @@ Private Attributes</h2></td></tr>
830
830
  <div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; {</div>
831
831
  <div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; types.insert(<a class="code" href="classSVF_1_1ObjTypeInference.html#abf0978f7128506f7d19996f184fe8154">fwInferObjType</a>(source));</div>
832
832
  <div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; }</div>
833
- <div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *largestTy = <a class="code" href="classSVF_1_1ObjTypeInference.html#aff3be73b7348c0e4dece6a9b5b1bd1f1">selectLargestType</a>(types);</div>
833
+ <div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *largestTy = <a class="code" href="classSVF_1_1ObjTypeInference.html#a205fa59a7250270b216f47df78ef2319">selectLargestSizedType</a>(types);</div>
834
834
  <div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <a class="code" href="ObjTypeInference_8cpp.html#a7165377d2fbd76a86ed0ec5218712c78">ABORT_IFNOT</a>(largestTy, <span class="stringliteral">&quot;return type cannot be null&quot;</span>);</div>
835
835
  <div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keywordflow">return</span> largestTy;</div>
836
836
  <div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;}</div>
@@ -964,14 +964,14 @@ Private Attributes</h2></td></tr>
964
964
  </div><!-- fragment -->
965
965
  </div>
966
966
  </div>
967
- <a id="aff3be73b7348c0e4dece6a9b5b1bd1f1"></a>
968
- <h2 class="memtitle"><span class="permalink"><a href="#aff3be73b7348c0e4dece6a9b5b1bd1f1">&#9670;&nbsp;</a></span>selectLargestType()</h2>
967
+ <a id="a205fa59a7250270b216f47df78ef2319"></a>
968
+ <h2 class="memtitle"><span class="permalink"><a href="#a205fa59a7250270b216f47df78ef2319">&#9670;&nbsp;</a></span>selectLargestSizedType()</h2>
969
969
 
970
970
  <div class="memitem">
971
971
  <div class="memproto">
972
972
  <table class="memname">
973
973
  <tr>
974
- <td class="memname">const <a class="el" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> * ObjTypeInference::selectLargestType </td>
974
+ <td class="memname">const <a class="el" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> * ObjTypeInference::selectLargestSizedType </td>
975
975
  <td>(</td>
976
976
  <td class="paramtype"><a class="el" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set</a>&lt; const <a class="el" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> * &gt; &amp;&#160;</td>
977
977
  <td class="paramname"><em>objTys</em></td><td>)</td>
@@ -986,13 +986,13 @@ Private Attributes</h2></td></tr>
986
986
  <div class="fragment"><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160;{</div>
987
987
  <div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; <span class="keywordflow">if</span> (objTys.empty()) <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
988
988
  <div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; <span class="comment">// map type size to types from with key in descending order</span></div>
989
- <div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; <a class="code" href="namespaceSVF.html#aedf0d6718ca176e0b9e17ab4b30729c6">OrderedMap&lt;u32_t, Set&lt;const Type *&gt;</a>, std::greater&lt;int&gt;&gt; typeSzToTypes;</div>
989
+ <div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; <a class="code" href="namespaceSVF.html#aedf0d6718ca176e0b9e17ab4b30729c6">OrderedMap&lt;u32_t, OrderedSet&lt;const Type *&gt;</a>, std::greater&lt;int&gt;&gt; typeSzToTypes;</div>
990
990
  <div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *ty: objTys)</div>
991
991
  <div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; {</div>
992
992
  <div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; typeSzToTypes[<a class="code" href="classSVF_1_1ObjTypeInference.html#a5eae038a7bffb0549ca75cd9c850ff1e">objTyToNumFields</a>(ty)].insert(ty);</div>
993
993
  <div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; }</div>
994
994
  <div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; assert(!typeSzToTypes.empty() &amp;&amp; <span class="stringliteral">&quot;typeSzToTypes cannot be empty&quot;</span>);</div>
995
- <div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const Type *&gt;</a> largestTypes;</div>
995
+ <div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; <a class="code" href="namespaceSVF.html#a4f21e91ff8eaea5207afe5c60dbd78d7">OrderedSet&lt;const Type *&gt;</a> largestTypes;</div>
996
996
  <div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; std::tie(std::ignore, largestTypes) = *typeSzToTypes.begin();</div>
997
997
  <div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; assert(!largestTypes.empty() &amp;&amp; <span class="stringliteral">&quot;largest element cannot be empty&quot;</span>);</div>
998
998
  <div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; <span class="keywordflow">return</span> *largestTypes.begin();</div>
@@ -1192,6 +1192,7 @@ Private Attributes</h2></td></tr>
1192
1192
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a50fc24901350df9db890ba16a9b87e33"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">SVF::LLVMModuleSet::getSVFFunction</a></div><div class="ttdeci">SVFFunction * getSVFFunction(const Function *fun) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00202">LLVMModule.h:202</a></div></div>
1193
1193
  <div class="ttc" id="anamespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdoc">LLVM Basic classes.</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00080">BasicTypes.h:80</a></div></div>
1194
1194
  <div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_ab2064cb70c76f399ce115f2621adea35"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#ab2064cb70c76f399ce115f2621adea35">SVF::SVFUtil::isHeapAllocExtCallViaRet</a></div><div class="ttdeci">bool isHeapAllocExtCallViaRet(const CallSite cs)</div><div class="ttdoc">interfaces to be used externally</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00442">SVFUtil.h:442</a></div></div>
1195
+ <div class="ttc" id="aclassSVF_1_1ObjTypeInference_html_a205fa59a7250270b216f47df78ef2319"><div class="ttname"><a href="classSVF_1_1ObjTypeInference.html#a205fa59a7250270b216f47df78ef2319">SVF::ObjTypeInference::selectLargestSizedType</a></div><div class="ttdeci">const Type * selectLargestSizedType(Set&lt; const Type * &gt; &amp;objTys)</div><div class="ttdoc">Select the largest (conservative) type from all types.</div><div class="ttdef"><b>Definition:</b> <a href="ObjTypeInference_8cpp_source.html#l00555">ObjTypeInference.cpp:555</a></div></div>
1195
1196
  <div class="ttc" id="anamespaceSVF_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="BasicTypes_8h_source.html#l00083">BasicTypes.h:83</a></div></div>
1196
1197
  <div class="ttc" id="anamespaceSVF_html_a1f4624771922dc8c2447ad7433588c73"><div class="ttname"><a href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">SVF::CallBase</a></div><div class="ttdeci">llvm::CallBase CallBase</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00144">BasicTypes.h:144</a></div></div>
1197
1198
  <div class="ttc" id="anamespaceSVF_html_a1d008c0666c145622b81d427be64c52d"><div class="ttname"><a href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">SVF::Type</a></div><div class="ttdeci">llvm::Type Type</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00081">BasicTypes.h:81</a></div></div>
@@ -1210,13 +1211,14 @@ Private Attributes</h2></td></tr>
1210
1211
  <div class="ttc" id="aclassSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00297">SVFValue.h:297</a></div></div>
1211
1212
  <div class="ttc" id="aclassSVF_1_1FILOWorkList_html_afcf3fcda18e8d3e2bad70a51376c0ce1"><div class="ttname"><a href="classSVF_1_1FILOWorkList.html#afcf3fcda18e8d3e2bad70a51376c0ce1">SVF::FILOWorkList::push</a></div><div class="ttdeci">bool push(const Data &amp;data)</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00257">WorkList.h:257</a></div></div>
1212
1213
  <div class="ttc" id="aclassSVF_1_1ObjTypeInference_html_af8113e432377917c1a0de9ab100aaafe"><div class="ttname"><a href="classSVF_1_1ObjTypeInference.html#af8113e432377917c1a0de9ab100aaafe">SVF::ObjTypeInference::isAllocation</a></div><div class="ttdeci">bool isAllocation(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="ObjTypeInference_8cpp_source.html#l00498">ObjTypeInference.cpp:498</a></div></div>
1213
- <div class="ttc" id="aclassSVF_1_1ObjTypeInference_html_aff3be73b7348c0e4dece6a9b5b1bd1f1"><div class="ttname"><a href="classSVF_1_1ObjTypeInference.html#aff3be73b7348c0e4dece6a9b5b1bd1f1">SVF::ObjTypeInference::selectLargestType</a></div><div class="ttdeci">const Type * selectLargestType(Set&lt; const Type * &gt; &amp;objTys)</div><div class="ttdoc">Select the largest (conservative) type from all types.</div><div class="ttdef"><b>Definition:</b> <a href="ObjTypeInference_8cpp_source.html#l00555">ObjTypeInference.cpp:555</a></div></div>
1214
1214
  <div class="ttc" id="anamespaceSVF_html_ac4e93e1fec646ff222940a663843921b"><div class="ttname"><a href="namespaceSVF.html#ac4e93e1fec646ff222940a663843921b">SVF::GetElementPtrInst</a></div><div class="ttdeci">llvm::GetElementPtrInst GetElementPtrInst</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00160">BasicTypes.h:160</a></div></div>
1215
1215
  <div class="ttc" id="aclassSVF_1_1ObjTypeInference_html_a18edeb47fb7734eb17ba3a84181cbc16"><div class="ttname"><a href="classSVF_1_1ObjTypeInference.html#a18edeb47fb7734eb17ba3a84181cbc16">SVF::ObjTypeInference::_valueToAllocs</a></div><div class="ttdeci">ValueToSources _valueToAllocs</div><div class="ttdef"><b>Definition:</b> <a href="ObjTypeInference_8h_source.html#l00055">ObjTypeInference.h:55</a></div></div>
1216
+ <div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_a72502f7f536418621485e90ab98c2016"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a72502f7f536418621485e90ab98c2016">SVF::SVFUtil::move</a></div><div class="ttdeci">constexpr std::remove_reference&lt; T &gt;::type &amp;&amp; move(T &amp;&amp;t) noexcept</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00621">SVFUtil.h:621</a></div></div>
1216
1217
  <div class="ttc" id="aclassSVF_1_1SVFFunction_html_ac4c28c8d205d354f3a982119f29f2aac"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ac4c28c8d205d354f3a982119f29f2aac">SVF::SVFFunction::getExitBB</a></div><div class="ttdeci">const SVFBasicBlock * getExitBB() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8cpp_source.html#l00193">SVFValue.cpp:193</a></div></div>
1217
1218
  <div class="ttc" id="anamespaceSVF_html_adefcb50414ea999d70cea5ccdbcb98d7"><div class="ttname"><a href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">SVF::ConstantInt</a></div><div class="ttdeci">llvm::ConstantInt ConstantInt</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00123">BasicTypes.h:123</a></div></div>
1218
1219
  <div class="ttc" id="aclassSVF_1_1ObjTypeInference_html_aee4383a13cda421acb034ea147e33a6d"><div class="ttname"><a href="classSVF_1_1ObjTypeInference.html#aee4383a13cda421acb034ea147e33a6d">SVF::ObjTypeInference::defaultType</a></div><div class="ttdeci">const Type * defaultType(const Value *val)</div><div class="ttdoc">Default type.</div><div class="ttdef"><b>Definition:</b> <a href="ObjTypeInference_8cpp_source.html#l00112">ObjTypeInference.cpp:112</a></div></div>
1219
1220
  <div class="ttc" id="anamespaceSVF_html_afc50da46a6ea7c2cf61683bbec4d7c8d"><div class="ttname"><a href="namespaceSVF.html#afc50da46a6ea7c2cf61683bbec4d7c8d">SVF::BitCastInst</a></div><div class="ttdeci">llvm::BitCastInst BitCastInst</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00151">BasicTypes.h:151</a></div></div>
1221
+ <div class="ttc" id="anamespaceSVF_html_a4f21e91ff8eaea5207afe5c60dbd78d7"><div class="ttname"><a href="namespaceSVF.html#a4f21e91ff8eaea5207afe5c60dbd78d7">SVF::OrderedSet</a></div><div class="ttdeci">std::set&lt; Key, Compare, Allocator &gt; OrderedSet</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00106">SVFType.h:106</a></div></div>
1220
1222
  <div class="ttc" id="aclassSVF_1_1ObjTypeInference_html_a707f0575f3d70e62a78f08c961ec7dae"><div class="ttname"><a href="classSVF_1_1ObjTypeInference.html#a707f0575f3d70e62a78f08c961ec7dae">SVF::ObjTypeInference::bwfindAllocations</a></div><div class="ttdeci">Set&lt; const Value * &gt; bwfindAllocations(const Value *startValue)</div><div class="ttdoc">Backward collect all possible allocation sites (stack, static, heap) starting from a value.</div><div class="ttdef"><b>Definition:</b> <a href="ObjTypeInference_8cpp_source.html#l00376">ObjTypeInference.cpp:376</a></div></div>
1221
1223
  <div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_aed0b0b9f035057552a6a82154fd88e61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVF::SVFUtil::outs</a></div><div class="ttdeci">std::ostream &amp; outs()</div><div class="ttdoc">Overwrite llvm::outs()</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00050">SVFUtil.h:50</a></div></div>
1222
1224
  <div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_a05dc00b2bd9a8176aae31b6cfffe725d"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a05dc00b2bd9a8176aae31b6cfffe725d">SVF::SVFUtil::sucMsg</a></div><div class="ttdeci">std::string sucMsg(const std::string &amp;msg)</div><div class="ttdoc">Returns successful message by converting a string into green string output.</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00053">SVFUtil.cpp:53</a></div></div>
@@ -117,8 +117,8 @@ $(function() {
117
117
  <li>selectClient()
118
118
  : <a class="el" href="classSVF_1_1DDAPass.html#aa33694e0b5f30c451c229e92877e4842">SVF::DDAPass</a>
119
119
  </li>
120
- <li>selectLargestType()
121
- : <a class="el" href="classSVF_1_1ObjTypeInference.html#aff3be73b7348c0e4dece6a9b5b1bd1f1">SVF::ObjTypeInference</a>
120
+ <li>selectLargestSizedType()
121
+ : <a class="el" href="classSVF_1_1ObjTypeInference.html#a205fa59a7250270b216f47df78ef2319">SVF::ObjTypeInference</a>
122
122
  </li>
123
123
  <li>SelectStmt()
124
124
  : <a class="el" href="classSVF_1_1SelectStmt.html#a995baa18cc36d0671be3e98761f9879a">SVF::SelectStmt</a>
@@ -182,8 +182,8 @@ $(function() {
182
182
  <li>selectedValidationScenarios
183
183
  : <a class="el" href="classSVF_1_1RaceResultValidator.html#a1294cb90b073ba25a8ffc06180c09419">SVF::RaceResultValidator</a>
184
184
  </li>
185
- <li>selectLargestType()
186
- : <a class="el" href="classSVF_1_1ObjTypeInference.html#aff3be73b7348c0e4dece6a9b5b1bd1f1">SVF::ObjTypeInference</a>
185
+ <li>selectLargestSizedType()
186
+ : <a class="el" href="classSVF_1_1ObjTypeInference.html#a205fa59a7250270b216f47df78ef2319">SVF::ObjTypeInference</a>
187
187
  </li>
188
188
  <li>SelectStmt()
189
189
  : <a class="el" href="classSVF_1_1SelectStmt.html#a995baa18cc36d0671be3e98761f9879a">SVF::SelectStmt</a>
@@ -53,7 +53,7 @@ var searchData=
53
53
  ['selectclient_5237',['selectClient',['../classSVF_1_1DDAPass.html#aa33694e0b5f30c451c229e92877e4842',1,'SVF::DDAPass']]],
54
54
  ['selectedvalidationscenarios_5238',['selectedValidationScenarios',['../classSVF_1_1RaceResultValidator.html#a1294cb90b073ba25a8ffc06180c09419',1,'SVF::RaceResultValidator']]],
55
55
  ['selectinst_5239',['SelectInst',['../namespaceSVF.html#ab7fac9d4a4839be445c89777e21bc307',1,'SVF']]],
56
- ['selectlargesttype_5240',['selectLargestType',['../classSVF_1_1ObjTypeInference.html#aff3be73b7348c0e4dece6a9b5b1bd1f1',1,'SVF::ObjTypeInference']]],
56
+ ['selectlargestsizedtype_5240',['selectLargestSizedType',['../classSVF_1_1ObjTypeInference.html#a205fa59a7250270b216f47df78ef2319',1,'SVF::ObjTypeInference']]],
57
57
  ['selectstmt_5241',['SelectStmt',['../classSVF_1_1SelectStmt.html',1,'SVF::SelectStmt'],['../classSVF_1_1SelectStmt.html#a995baa18cc36d0671be3e98761f9879a',1,'SVF::SelectStmt::SelectStmt()'],['../classSVF_1_1SelectStmt.html#ad51a542e72f165abbba9d3242db1bea6',1,'SVF::SelectStmt::SelectStmt(const SelectStmt &amp;)'],['../classSVF_1_1SelectStmt.html#af3ffdfb0b260754b64250f980c065198',1,'SVF::SelectStmt::SelectStmt(SVFVar *s, const OPVars &amp;opnds, const SVFVar *cond)']]],
58
58
  ['selfcycle_5242',['SelfCycle',['../classSVF_1_1Options.html#a9ef14f68939b7678ddff83d544e024cc',1,'SVF::Options']]],
59
59
  ['seq_5243',['SEQ',['../classSVF_1_1NodeIDAllocator.html#a8cf553cd07768aad3f3b91bf3d7c6228a85142db6ed24203f054117f3a5110e2f',1,'SVF::NodeIDAllocator']]],
@@ -15,7 +15,7 @@ var searchData=
15
15
  ['sccrepnode_10260',['sccRepNode',['../classSVF_1_1ConstraintGraph.html#a39b973543acdcdc5493832cc9d0f586f',1,'SVF::ConstraintGraph::sccRepNode()'],['../classSVF_1_1Andersen.html#aad706e332847e6b0892350a05028ba30',1,'SVF::Andersen::sccRepNode()'],['../classSVF_1_1WPAFSSolver.html#a0bbaffd1673cc3850217afad0ca56e42',1,'SVF::WPAFSSolver::sccRepNode()'],['../classSVF_1_1WPASolver.html#a3bd463cd456a1d58242f118328f51ddb',1,'SVF::WPASolver::sccRepNode()']]],
16
16
  ['sccsubnodes_10261',['sccSubNodes',['../classSVF_1_1ConstraintGraph.html#aed605b010e313f4b11e95b83fe50e3b3',1,'SVF::ConstraintGraph::sccSubNodes()'],['../classSVF_1_1Andersen.html#acd2feff818906db49a1bb2d94c33db5f',1,'SVF::Andersen::sccSubNodes()']]],
17
17
  ['selectclient_10262',['selectClient',['../classSVF_1_1DDAPass.html#aa33694e0b5f30c451c229e92877e4842',1,'SVF::DDAPass']]],
18
- ['selectlargesttype_10263',['selectLargestType',['../classSVF_1_1ObjTypeInference.html#aff3be73b7348c0e4dece6a9b5b1bd1f1',1,'SVF::ObjTypeInference']]],
18
+ ['selectlargestsizedtype_10263',['selectLargestSizedType',['../classSVF_1_1ObjTypeInference.html#a205fa59a7250270b216f47df78ef2319',1,'SVF::ObjTypeInference']]],
19
19
  ['selectstmt_10264',['SelectStmt',['../classSVF_1_1SelectStmt.html#a995baa18cc36d0671be3e98761f9879a',1,'SVF::SelectStmt::SelectStmt()'],['../classSVF_1_1SelectStmt.html#ad51a542e72f165abbba9d3242db1bea6',1,'SVF::SelectStmt::SelectStmt(const SelectStmt &amp;)'],['../classSVF_1_1SelectStmt.html#af3ffdfb0b260754b64250f980c065198',1,'SVF::SelectStmt::SelectStmt(SVFVar *s, const OPVars &amp;opnds, const SVFVar *cond)']]],
20
20
  ['set_10265',['set',['../classSVF_1_1CondStdSet.html#ae11deddad534be115d29daad08c90599',1,'SVF::CondStdSet::set()'],['../classSVF_1_1CondPointsToSet.html#aadf2576b55bbdb82d7affc8466c09861',1,'SVF::CondPointsToSet::set()'],['../classSVF_1_1PointsTo.html#ab196d86cfb48d1c5d27a0c03c7497afa',1,'SVF::PointsTo::set()'],['../classSVF_1_1CoreBitVector.html#a553e3e51bffe1aab04adc047e0fd3f24',1,'SVF::CoreBitVector::set()'],['../structSVF_1_1SparseBitVectorElement.html#a094acafea02f3c117445267e75c9a629',1,'SVF::SparseBitVectorElement::set()'],['../classSVF_1_1SparseBitVector.html#a61bd86909a141f9de873d92c0f904832',1,'SVF::SparseBitVector::set()'],['../WPA_2CMakeLists_8txt.html#a5b660868031b6dee85d01fea51ef09a5',1,'set():&#160;CMakeLists.txt']]],
21
21
  ['set_5fminus_5finfinite_10266',['set_minus_infinite',['../classSVF_1_1BoundedZ3Expr.html#ae76bf19d580cbc12a40f7c1823165178',1,'SVF::BoundedZ3Expr']]],
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "svf-tools",
3
- "version": "1.0.861",
3
+ "version": "1.0.863",
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": {
@@ -99,7 +99,7 @@ private:
99
99
 
100
100
  public:
101
101
  /// Select the largest (conservative) type from all types
102
- const Type *selectLargestType(Set<const Type *> &objTys);
102
+ const Type *selectLargestSizedType(Set<const Type *> &objTys);
103
103
 
104
104
  u32_t objTyToNumFields(const Type *objTy);
105
105
 
@@ -140,7 +140,7 @@ const Type *ObjTypeInference::inferObjType(const Value *startValue)
140
140
  {
141
141
  types.insert(fwInferObjType(source));
142
142
  }
143
- const Type *largestTy = selectLargestType(types);
143
+ const Type *largestTy = selectLargestSizedType(types);
144
144
  ABORT_IFNOT(largestTy, "return type cannot be null");
145
145
  return largestTy;
146
146
  }
@@ -181,7 +181,7 @@ const Type *ObjTypeInference::fwInferObjType(const Value *startValue)
181
181
  auto vIt = _valueToInferSites.find(pUser);
182
182
  if (canUpdate)
183
183
  {
184
- if (vIt != _valueToInferSites.end() && !vIt->second.empty())
184
+ if (vIt != _valueToInferSites.end())
185
185
  {
186
186
  infersites.insert(vIt->second.begin(), vIt->second.end());
187
187
  }
@@ -354,8 +354,8 @@ const Type *ObjTypeInference::fwInferObjType(const Value *startValue)
354
354
  Set<const Type *> types;
355
355
  std::transform(infersites.begin(), infersites.end(), std::inserter(types, types.begin()),
356
356
  infersiteToType);
357
- _valueToInferSites[curValue] = infersites;
358
- _valueToType[curValue] = selectLargestType(types);
357
+ _valueToInferSites[curValue] = SVFUtil::move(infersites);
358
+ _valueToType[curValue] = selectLargestSizedType(types);
359
359
  }
360
360
  }
361
361
  const Type *type = _valueToType[startValue];
@@ -406,7 +406,7 @@ Set<const Value *> ObjTypeInference::bwfindAllocations(const Value *startValue)
406
406
  auto vIt = _valueToAllocs.find(pUser);
407
407
  if (canUpdate)
408
408
  {
409
- if (vIt != _valueToAllocs.end() && !vIt->second.empty())
409
+ if (vIt != _valueToAllocs.end())
410
410
  {
411
411
  sources.insert(vIt->second.begin(), vIt->second.end());
412
412
  }
@@ -482,7 +482,7 @@ Set<const Value *> ObjTypeInference::bwfindAllocations(const Value *startValue)
482
482
  }
483
483
  if (canUpdate)
484
484
  {
485
- _valueToAllocs[curValue] = sources;
485
+ _valueToAllocs[curValue] = SVFUtil::move(sources);
486
486
  }
487
487
  }
488
488
  Set<const Value *> srcs = _valueToAllocs[startValue];
@@ -552,17 +552,17 @@ u32_t ObjTypeInference::getArgPosInCall(const CallBase *callBase, const Value *a
552
552
  }
553
553
 
554
554
 
555
- const Type *ObjTypeInference::selectLargestType(Set<const Type *> &objTys)
555
+ const Type *ObjTypeInference::selectLargestSizedType(Set<const Type *> &objTys)
556
556
  {
557
557
  if (objTys.empty()) return nullptr;
558
558
  // map type size to types from with key in descending order
559
- OrderedMap<u32_t, Set<const Type *>, std::greater<int>> typeSzToTypes;
559
+ OrderedMap<u32_t, OrderedSet<const Type *>, std::greater<int>> typeSzToTypes;
560
560
  for (const Type *ty: objTys)
561
561
  {
562
562
  typeSzToTypes[objTyToNumFields(ty)].insert(ty);
563
563
  }
564
564
  assert(!typeSzToTypes.empty() && "typeSzToTypes cannot be empty");
565
- Set<const Type *> largestTypes;
565
+ OrderedSet<const Type *> largestTypes;
566
566
  std::tie(std::ignore, largestTypes) = *typeSzToTypes.begin();
567
567
  assert(!largestTypes.empty() && "largest element cannot be empty");
568
568
  return *largestTypes.begin();