svf-tools 1.0.900 → 1.0.901

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.
@@ -1306,333 +1306,334 @@ $(function() {
1306
1306
  <div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>&#160; <span class="comment">// TODO: Why only double is considered? What about float?</span></div>
1307
1307
  <div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>&#160; <span class="keywordflow">if</span> (cfp-&gt;isNormalFP())</div>
1308
1308
  <div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>&#160; {</div>
1309
- <div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>&#160; <span class="keywordflow">if</span> (&amp;cfp-&gt;getValueAPF().getSemantics()== &amp;llvm::APFloatBase::IEEEsingle())</div>
1310
- <div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>&#160; {</div>
1311
- <div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>&#160; dval = cfp-&gt;getValueAPF().convertToFloat();</div>
1312
- <div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>&#160; }</div>
1313
- <div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (&amp;cfp-&gt;getValueAPF().getSemantics()== &amp;llvm::APFloatBase::IEEEdouble())</div>
1314
- <div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>&#160; {</div>
1315
- <div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>&#160; dval = cfp-&gt;getValueAPF().convertToDouble();</div>
1316
- <div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>&#160; }</div>
1317
- <div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>&#160; <span class="keywordflow">else</span></div>
1318
- <div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>&#160; {</div>
1319
- <div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>&#160; assert (<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;Unsupported floating point type&quot;</span>);</div>
1320
- <div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>&#160; abort();</div>
1321
- <div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>&#160; }</div>
1322
- <div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>&#160; }</div>
1323
- <div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>&#160; <span class="keywordflow">else</span></div>
1324
- <div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>&#160; {</div>
1325
- <div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>&#160; <span class="comment">// other cfp type, like isZero(), isInfinity(), isNegative(), etc.</span></div>
1326
- <div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>&#160; <span class="comment">// do nothing</span></div>
1327
- <div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>&#160; }</div>
1328
- <div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>&#160; svfcd = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFConstantFP.html">SVFConstantFP</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(cd-&gt;getType()), dval);</div>
1329
- <div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>&#160; }</div>
1330
- <div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;ConstantPointerNull&gt;(cd))</div>
1331
- <div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>&#160; svfcd = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFConstantNullPtr.html">SVFConstantNullPtr</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(cd-&gt;getType()));</div>
1332
- <div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;UndefValue&gt;(cd))</div>
1333
- <div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>&#160; svfcd = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFBlackHoleValue.html">SVFBlackHoleValue</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(cd-&gt;getType()));</div>
1334
- <div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>&#160; <span class="keywordflow">else</span></div>
1335
- <div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>&#160; svfcd = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFConstantData.html">SVFConstantData</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(cd-&gt;getType()));</div>
1336
- <div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>&#160; </div>
1309
+ <div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>&#160; <span class="keyword">const</span> llvm::fltSemantics&amp; semantics = cfp-&gt;getValueAPF().getSemantics();</div>
1310
+ <div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>&#160; <span class="keywordflow">if</span> (&amp;semantics == &amp;llvm::APFloat::IEEEhalf() ||</div>
1311
+ <div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>&#160; &amp;semantics == &amp;llvm::APFloat::IEEEsingle() ||</div>
1312
+ <div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>&#160; &amp;semantics == &amp;llvm::APFloat::IEEEdouble() ||</div>
1313
+ <div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>&#160; &amp;semantics == &amp;llvm::APFloat::IEEEquad() ||</div>
1314
+ <div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>&#160; &amp;semantics == &amp;llvm::APFloat::x87DoubleExtended())</div>
1315
+ <div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>&#160; {</div>
1316
+ <div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>&#160; dval = cfp-&gt;getValueAPF().convertToDouble();</div>
1317
+ <div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>&#160; }</div>
1318
+ <div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>&#160; <span class="keywordflow">else</span></div>
1319
+ <div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>&#160; {</div>
1320
+ <div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>&#160; assert (<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;Unsupported floating point type&quot;</span>);</div>
1321
+ <div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>&#160; abort();</div>
1322
+ <div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>&#160; }</div>
1323
+ <div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>&#160; }</div>
1324
+ <div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>&#160; <span class="keywordflow">else</span></div>
1325
+ <div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>&#160; {</div>
1326
+ <div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>&#160; <span class="comment">// other cfp type, like isZero(), isInfinity(), isNegative(), etc.</span></div>
1327
+ <div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>&#160; <span class="comment">// do nothing</span></div>
1328
+ <div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>&#160; }</div>
1329
+ <div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>&#160; svfcd = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFConstantFP.html">SVFConstantFP</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(cd-&gt;getType()), dval);</div>
1330
+ <div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>&#160; }</div>
1331
+ <div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;ConstantPointerNull&gt;(cd))</div>
1332
+ <div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>&#160; svfcd = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFConstantNullPtr.html">SVFConstantNullPtr</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(cd-&gt;getType()));</div>
1333
+ <div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;UndefValue&gt;(cd))</div>
1334
+ <div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>&#160; svfcd = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFBlackHoleValue.html">SVFBlackHoleValue</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(cd-&gt;getType()));</div>
1335
+ <div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>&#160; <span class="keywordflow">else</span></div>
1336
+ <div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>&#160; svfcd = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFConstantData.html">SVFConstantData</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(cd-&gt;getType()));</div>
1337
1337
  <div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>&#160; </div>
1338
- <div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a43832e93a42ae43d44b0cc160981678f">svfModule</a>-&gt;<a class="code" href="classSVF_1_1SVFModule.html#ae64d24569942d7c4b18d2198be4839f3">addConstant</a>(svfcd);</div>
1339
- <div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#af4bd487b3b6efe55bf869b869f5e8a80">addConstantDataMap</a>(cd,svfcd);</div>
1340
- <div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>&#160; <span class="keywordflow">return</span> svfcd;</div>
1341
- <div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>&#160; }</div>
1342
- <div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>&#160;}</div>
1343
- <div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>&#160; </div>
1344
- <div class="line"><a name="l01300"></a><span class="lineno"><a class="line" href="classSVF_1_1LLVMModuleSet.html#a74256f36f0fdc242df9729906c34efbc"> 1300</a></span>&#160;<a class="code" href="classSVF_1_1SVFConstant.html">SVFConstant</a>* <a class="code" href="classSVF_1_1LLVMModuleSet.html#a74256f36f0fdc242df9729906c34efbc">LLVMModuleSet::getOtherSVFConstant</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">Constant</a>* oc)</div>
1345
- <div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>&#160;{</div>
1346
- <div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>&#160; LLVMConst2SVFConstMap::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a4b94c96898dbbc71bc1cee04786cf3dc">LLVMConst2SVFConst</a>.find(oc);</div>
1347
- <div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>&#160; <span class="keywordflow">if</span>(it!=<a class="code" href="classSVF_1_1LLVMModuleSet.html#a4b94c96898dbbc71bc1cee04786cf3dc">LLVMConst2SVFConst</a>.end())</div>
1348
- <div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>&#160; {</div>
1349
- <div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div>
1350
- <div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>&#160; }</div>
1351
- <div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>&#160; <span class="keywordflow">else</span></div>
1352
- <div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>&#160; {</div>
1353
- <div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>&#160; <a class="code" href="classSVF_1_1SVFConstant.html">SVFConstant</a>* svfoc = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFConstant.html">SVFConstant</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(oc-&gt;getType()));</div>
1354
- <div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a43832e93a42ae43d44b0cc160981678f">svfModule</a>-&gt;<a class="code" href="classSVF_1_1SVFModule.html#ae64d24569942d7c4b18d2198be4839f3">addConstant</a>(svfoc);</div>
1355
- <div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5badf03aeb1ebda02bc186bbb58a892a">addOtherConstantMap</a>(oc,svfoc);</div>
1356
- <div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>&#160; <span class="keywordflow">return</span> svfoc;</div>
1357
- <div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>&#160; }</div>
1358
- <div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>&#160;}</div>
1359
- <div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>&#160; </div>
1360
- <div class="line"><a name="l01316"></a><span class="lineno"><a class="line" href="classSVF_1_1LLVMModuleSet.html#a0ef17c1d5e6a95c597d2334ea577a965"> 1316</a></span>&#160;<a class="code" href="classSVF_1_1SVFOtherValue.html">SVFOtherValue</a>* <a class="code" href="classSVF_1_1LLVMModuleSet.html#a0ef17c1d5e6a95c597d2334ea577a965">LLVMModuleSet::getSVFOtherValue</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* ov)</div>
1361
- <div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>&#160;{</div>
1362
- <div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>&#160; LLVMValue2SVFOtherValueMap::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#ac3e70bd338be3a54330be5dc10321eb3">LLVMValue2SVFOtherValue</a>.find(ov);</div>
1363
- <div class="line"><a name="l01319"></a><span class="lineno"> 1319</span>&#160; <span class="keywordflow">if</span>(it!=<a class="code" href="classSVF_1_1LLVMModuleSet.html#ac3e70bd338be3a54330be5dc10321eb3">LLVMValue2SVFOtherValue</a>.end())</div>
1364
- <div class="line"><a name="l01320"></a><span class="lineno"> 1320</span>&#160; {</div>
1365
- <div class="line"><a name="l01321"></a><span class="lineno"> 1321</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div>
1366
- <div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>&#160; }</div>
1367
- <div class="line"><a name="l01323"></a><span class="lineno"> 1323</span>&#160; <span class="keywordflow">else</span></div>
1368
- <div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>&#160; {</div>
1369
- <div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>&#160; <a class="code" href="classSVF_1_1SVFOtherValue.html">SVFOtherValue</a>* svfov =</div>
1370
- <div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>&#160; SVFUtil::isa&lt;MetadataAsValue&gt;(ov)</div>
1371
- <div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>&#160; ? <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFMetadataAsValue.html">SVFMetadataAsValue</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(ov-&gt;getType()))</div>
1372
- <div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>&#160; : <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFOtherValue.html">SVFOtherValue</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(ov-&gt;getType()));</div>
1373
- <div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a43832e93a42ae43d44b0cc160981678f">svfModule</a>-&gt;<a class="code" href="classSVF_1_1SVFModule.html#a48d7f0643bb228701dcabb88ef541fca">addOtherValue</a>(svfov);</div>
1374
- <div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a023ea6f179433fa4d007c98ddc38e3c5">addOtherValueMap</a>(ov,svfov);</div>
1375
- <div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>&#160; <span class="keywordflow">return</span> svfov;</div>
1376
- <div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>&#160; }</div>
1377
- <div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>&#160;}</div>
1378
- <div class="line"><a name="l01334"></a><span class="lineno"> 1334</span>&#160; </div>
1379
- <div class="line"><a name="l01335"></a><span class="lineno"><a class="line" href="classSVF_1_1LLVMModuleSet.html#afdd77bc1fca91f70b2ec362f1dacd392"> 1335</a></span>&#160;<a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* <a class="code" href="classSVF_1_1LLVMModuleSet.html#afdd77bc1fca91f70b2ec362f1dacd392">LLVMModuleSet::getSVFValue</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* value)</div>
1380
- <div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>&#160;{</div>
1381
- <div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun = SVFUtil::dyn_cast&lt;Function&gt;(value))</div>
1382
- <div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">getSVFFunction</a>(fun);</div>
1383
- <div class="line"><a name="l01339"></a><span class="lineno"> 1339</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb = SVFUtil::dyn_cast&lt;BasicBlock&gt;(value))</div>
1384
- <div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">getSVFBasicBlock</a>(bb);</div>
1385
- <div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst = SVFUtil::dyn_cast&lt;Instruction&gt;(value))</div>
1386
- <div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(inst);</div>
1387
- <div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a58cdfbc4160cae08745b67844ac29801">Argument</a>* arg = SVFUtil::dyn_cast&lt;Argument&gt;(value))</div>
1388
- <div class="line"><a name="l01344"></a><span class="lineno"> 1344</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#ad3f66b40ad360003845253f452d6a711">getSVFArgument</a>(arg);</div>
1389
- <div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">Constant</a>* cons = SVFUtil::dyn_cast&lt;Constant&gt;(value))</div>
1390
- <div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>&#160; {</div>
1391
- <div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7332f8059ea95472dcc231de884a5768">ConstantData</a>* cd = SVFUtil::dyn_cast&lt;ConstantData&gt;(cons))</div>
1392
- <div class="line"><a name="l01348"></a><span class="lineno"> 1348</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a25821b0feeb3b08e00ec9d444520b727">getSVFConstantData</a>(cd);</div>
1393
- <div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a67f3f86344f028cacfbeb08caaf7bb0f">GlobalValue</a>* glob = SVFUtil::dyn_cast&lt;GlobalValue&gt;(cons))</div>
1394
- <div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a3cbba2eb702a3481478b2590dfffa352">getSVFGlobalValue</a>(glob);</div>
1395
- <div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>&#160; <span class="keywordflow">else</span></div>
1396
- <div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a74256f36f0fdc242df9729906c34efbc">getOtherSVFConstant</a>(cons);</div>
1397
- <div class="line"><a name="l01353"></a><span class="lineno"> 1353</span>&#160; }</div>
1398
- <div class="line"><a name="l01354"></a><span class="lineno"> 1354</span>&#160; <span class="keywordflow">else</span></div>
1399
- <div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a0ef17c1d5e6a95c597d2334ea577a965">getSVFOtherValue</a>(value);</div>
1400
- <div class="line"><a name="l01356"></a><span class="lineno"> 1356</span>&#160;}</div>
1401
- <div class="line"><a name="l01357"></a><span class="lineno"> 1357</span>&#160; </div>
1402
- <div class="line"><a name="l01358"></a><span class="lineno"><a class="line" href="classSVF_1_1LLVMModuleSet.html#a610a7777a48132caadec167c8109f044"> 1358</a></span>&#160;<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* <a class="code" href="classSVF_1_1LLVMModuleSet.html#a610a7777a48132caadec167c8109f044">LLVMModuleSet::getLLVMType</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* T)<span class="keyword"> const</span></div>
1403
- <div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>&#160;<span class="keyword"></span>{</div>
1404
- <div class="line"><a name="l01360"></a><span class="lineno"> 1360</span>&#160; <span class="keywordflow">for</span>(LLVMType2SVFTypeMap::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">LLVMType2SVFType</a>.begin(), eit = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">LLVMType2SVFType</a>.end(); it!=eit; ++it)</div>
1405
- <div class="line"><a name="l01361"></a><span class="lineno"> 1361</span>&#160; {</div>
1406
- <div class="line"><a name="l01362"></a><span class="lineno"> 1362</span>&#160; <span class="keywordflow">if</span> (it-&gt;second == T)</div>
1407
- <div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>&#160; <span class="keywordflow">return</span> it-&gt;first;</div>
1408
- <div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>&#160; }</div>
1409
- <div class="line"><a name="l01365"></a><span class="lineno"> 1365</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;can&#39;t find the corresponding LLVM Type&quot;</span>);</div>
1410
- <div class="line"><a name="l01366"></a><span class="lineno"> 1366</span>&#160; abort();</div>
1411
- <div class="line"><a name="l01367"></a><span class="lineno"> 1367</span>&#160;}</div>
1412
- <div class="line"><a name="l01368"></a><span class="lineno"> 1368</span>&#160; </div>
1413
- <div class="line"><a name="l01372"></a><span class="lineno"><a class="line" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99"> 1372</a></span>&#160;<a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">LLVMModuleSet::getSVFType</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* T)</div>
1414
- <div class="line"><a name="l01373"></a><span class="lineno"> 1373</span>&#160;{</div>
1415
- <div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>&#160; assert(T &amp;&amp; <span class="stringliteral">&quot;SVFType should not be null&quot;</span>);</div>
1416
- <div class="line"><a name="l01375"></a><span class="lineno"> 1375</span>&#160; LLVMType2SVFTypeMap::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">LLVMType2SVFType</a>.find(T);</div>
1417
- <div class="line"><a name="l01376"></a><span class="lineno"> 1376</span>&#160; <span class="keywordflow">if</span> (it != <a class="code" href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">LLVMType2SVFType</a>.end())</div>
1418
- <div class="line"><a name="l01377"></a><span class="lineno"> 1377</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div>
1419
- <div class="line"><a name="l01378"></a><span class="lineno"> 1378</span>&#160; </div>
1420
- <div class="line"><a name="l01379"></a><span class="lineno"> 1379</span>&#160; <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* svfType = <a class="code" href="classSVF_1_1LLVMModuleSet.html#aab7b08db9252ef7e21e54d019f44b073">addSVFTypeInfo</a>(T);</div>
1421
- <div class="line"><a name="l01380"></a><span class="lineno"> 1380</span>&#160; <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* stinfo = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a1f6cc76c996a0577b20b8cedd83fff92">collectTypeInfo</a>(T);</div>
1422
- <div class="line"><a name="l01381"></a><span class="lineno"> 1381</span>&#160; svfType-&gt;<a class="code" href="classSVF_1_1SVFType.html#aef5999ada62dac3cc946d832ac66948c">setTypeInfo</a>(stinfo);</div>
1423
- <div class="line"><a name="l01382"></a><span class="lineno"> 1382</span>&#160; <span class="keywordflow">return</span> svfType;</div>
1424
- <div class="line"><a name="l01383"></a><span class="lineno"> 1383</span>&#160;}</div>
1425
- <div class="line"><a name="l01384"></a><span class="lineno"> 1384</span>&#160; </div>
1426
- <div class="line"><a name="l01385"></a><span class="lineno"><a class="line" href="classSVF_1_1LLVMModuleSet.html#a1f6cc76c996a0577b20b8cedd83fff92"> 1385</a></span>&#160;<a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* <a class="code" href="classSVF_1_1LLVMModuleSet.html#a1f6cc76c996a0577b20b8cedd83fff92">LLVMModuleSet::collectTypeInfo</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* T)</div>
1427
- <div class="line"><a name="l01386"></a><span class="lineno"> 1386</span>&#160;{</div>
1428
- <div class="line"><a name="l01387"></a><span class="lineno"> 1387</span>&#160; Type2TypeInfoMap::iterator tit = <a class="code" href="classSVF_1_1LLVMModuleSet.html#af2c555af91679d9e6d3009547ee11486">Type2TypeInfo</a>.find(T);</div>
1429
- <div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>&#160; <span class="keywordflow">if</span> (tit != <a class="code" href="classSVF_1_1LLVMModuleSet.html#af2c555af91679d9e6d3009547ee11486">Type2TypeInfo</a>.end())</div>
1430
- <div class="line"><a name="l01389"></a><span class="lineno"> 1389</span>&#160; {</div>
1431
- <div class="line"><a name="l01390"></a><span class="lineno"> 1390</span>&#160; <span class="keywordflow">return</span> tit-&gt;second;</div>
1432
- <div class="line"><a name="l01391"></a><span class="lineno"> 1391</span>&#160; }</div>
1433
- <div class="line"><a name="l01392"></a><span class="lineno"> 1392</span>&#160; <span class="comment">// No such StInfo for T, create it now.</span></div>
1434
- <div class="line"><a name="l01393"></a><span class="lineno"> 1393</span>&#160; <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* stInfo;</div>
1435
- <div class="line"><a name="l01394"></a><span class="lineno"> 1394</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a146d286041987860388da3d8bc85cee3">ArrayType</a>* aty = SVFUtil::dyn_cast&lt;ArrayType&gt;(T))</div>
1436
- <div class="line"><a name="l01395"></a><span class="lineno"> 1395</span>&#160; {</div>
1437
- <div class="line"><a name="l01396"></a><span class="lineno"> 1396</span>&#160; stInfo = <a class="code" href="classSVF_1_1LLVMModuleSet.html#aa8de934358332505d4805db137d8ec29">collectArrayInfo</a>(aty);</div>
1438
- <div class="line"><a name="l01397"></a><span class="lineno"> 1397</span>&#160; }</div>
1439
- <div class="line"><a name="l01398"></a><span class="lineno"> 1398</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a2bf58575ac7d068e0f1a4cf953b9e6cb">StructType</a>* sty = SVFUtil::dyn_cast&lt;StructType&gt;(T))</div>
1440
- <div class="line"><a name="l01399"></a><span class="lineno"> 1399</span>&#160; {</div>
1441
- <div class="line"><a name="l01400"></a><span class="lineno"> 1400</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> nf;</div>
1442
- <div class="line"><a name="l01401"></a><span class="lineno"> 1401</span>&#160; stInfo = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a946d1251501c7e0e33a9210838951258">collectStructInfo</a>(sty, nf);</div>
1443
- <div class="line"><a name="l01402"></a><span class="lineno"> 1402</span>&#160; <span class="keywordflow">if</span> (nf &gt; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5552135a27684cbe4d2a5ed346f64644">symInfo</a>-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#abb8550c9ef856e45cb7675c3796f9a35">maxStSize</a>)</div>
1444
- <div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>&#160; {</div>
1445
- <div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5552135a27684cbe4d2a5ed346f64644">symInfo</a>-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a0c1143eff451edf8ea47d4487a8d3a55">maxStruct</a> = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(sty);</div>
1446
- <div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5552135a27684cbe4d2a5ed346f64644">symInfo</a>-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#abb8550c9ef856e45cb7675c3796f9a35">maxStSize</a> = nf;</div>
1447
- <div class="line"><a name="l01406"></a><span class="lineno"> 1406</span>&#160; }</div>
1448
- <div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>&#160; }</div>
1449
- <div class="line"><a name="l01408"></a><span class="lineno"> 1408</span>&#160; <span class="keywordflow">else</span></div>
1450
- <div class="line"><a name="l01409"></a><span class="lineno"> 1409</span>&#160; {</div>
1451
- <div class="line"><a name="l01410"></a><span class="lineno"> 1410</span>&#160; stInfo = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a52853bd34a394882c6fd0fc73739c9f2">collectSimpleTypeInfo</a>(T);</div>
1452
- <div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>&#160; }</div>
1453
- <div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#af2c555af91679d9e6d3009547ee11486">Type2TypeInfo</a>.emplace(T, stInfo);</div>
1454
- <div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5552135a27684cbe4d2a5ed346f64644">symInfo</a>-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a72be32d606db86090067159de44e01ec">addStInfo</a>(stInfo);</div>
1455
- <div class="line"><a name="l01414"></a><span class="lineno"> 1414</span>&#160; <span class="keywordflow">return</span> stInfo;</div>
1456
- <div class="line"><a name="l01415"></a><span class="lineno"> 1415</span>&#160;}</div>
1457
- <div class="line"><a name="l01416"></a><span class="lineno"> 1416</span>&#160; </div>
1458
- <div class="line"><a name="l01417"></a><span class="lineno"><a class="line" href="classSVF_1_1LLVMModuleSet.html#aab7b08db9252ef7e21e54d019f44b073"> 1417</a></span>&#160;<a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* <a class="code" href="classSVF_1_1LLVMModuleSet.html#aab7b08db9252ef7e21e54d019f44b073">LLVMModuleSet::addSVFTypeInfo</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* T)</div>
1459
- <div class="line"><a name="l01418"></a><span class="lineno"> 1418</span>&#160;{</div>
1460
- <div class="line"><a name="l01419"></a><span class="lineno"> 1419</span>&#160; assert(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">LLVMType2SVFType</a>.find(T) == <a class="code" href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">LLVMType2SVFType</a>.end() &amp;&amp;</div>
1461
- <div class="line"><a name="l01420"></a><span class="lineno"> 1420</span>&#160; <span class="stringliteral">&quot;SVFType has been added before&quot;</span>);</div>
1462
- <div class="line"><a name="l01421"></a><span class="lineno"> 1421</span>&#160; </div>
1463
- <div class="line"><a name="l01422"></a><span class="lineno"> 1422</span>&#160; <span class="comment">// add SVFType&#39;s LLVM byte size iff T isSized(), otherwise byteSize is 1 (default value)</span></div>
1464
- <div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> byteSize = 1;</div>
1465
- <div class="line"><a name="l01424"></a><span class="lineno"> 1424</span>&#160; <span class="keywordflow">if</span> (T-&gt;isSized())</div>
1466
- <div class="line"><a name="l01425"></a><span class="lineno"> 1425</span>&#160; {</div>
1467
- <div class="line"><a name="l01426"></a><span class="lineno"> 1426</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a03db82b8a7914367024723dba4d6ca3c">llvm::DataLayout</a> &amp;DL = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;</div>
1468
- <div class="line"><a name="l01427"></a><span class="lineno"> 1427</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a9fe3fa15a6a0ec25864cb8439a45596e">getMainLLVMModule</a>()-&gt;getDataLayout();</div>
1469
- <div class="line"><a name="l01428"></a><span class="lineno"> 1428</span>&#160; <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *mut_T = <span class="keyword">const_cast&lt;</span><a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *<span class="keyword">&gt;</span>(T);</div>
1470
- <div class="line"><a name="l01429"></a><span class="lineno"> 1429</span>&#160; byteSize = DL.getTypeAllocSize(mut_T);</div>
1471
- <div class="line"><a name="l01430"></a><span class="lineno"> 1430</span>&#160; }</div>
1472
- <div class="line"><a name="l01431"></a><span class="lineno"> 1431</span>&#160; </div>
1473
- <div class="line"><a name="l01432"></a><span class="lineno"> 1432</span>&#160; <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* svftype;</div>
1474
- <div class="line"><a name="l01433"></a><span class="lineno"> 1433</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;PointerType&gt;(T))</div>
1475
- <div class="line"><a name="l01434"></a><span class="lineno"> 1434</span>&#160; {</div>
1476
- <div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>&#160; svftype = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFPointerType.html">SVFPointerType</a>(byteSize);</div>
1477
- <div class="line"><a name="l01436"></a><span class="lineno"> 1436</span>&#160; }</div>
1478
- <div class="line"><a name="l01437"></a><span class="lineno"> 1437</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a3d9e7f32dc17fe8d40f8d6a011403b91">IntegerType</a>* intT = SVFUtil::dyn_cast&lt;IntegerType&gt;(T))</div>
1479
- <div class="line"><a name="l01438"></a><span class="lineno"> 1438</span>&#160; {</div>
1480
- <div class="line"><a name="l01439"></a><span class="lineno"> 1439</span>&#160; <span class="keyword">auto</span> svfIntT = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFIntegerType.html">SVFIntegerType</a>(byteSize);</div>
1481
- <div class="line"><a name="l01440"></a><span class="lineno"> 1440</span>&#160; <span class="keywordtype">unsigned</span> signWidth = intT-&gt;getBitWidth();</div>
1482
- <div class="line"><a name="l01441"></a><span class="lineno"> 1441</span>&#160; assert(signWidth &lt; INT16_MAX &amp;&amp; <span class="stringliteral">&quot;Integer width too big&quot;</span>);</div>
1483
- <div class="line"><a name="l01442"></a><span class="lineno"> 1442</span>&#160; svfIntT-&gt;setSignAndWidth(intT-&gt;getSignBit() ? -signWidth : signWidth);</div>
1484
- <div class="line"><a name="l01443"></a><span class="lineno"> 1443</span>&#160; svftype = svfIntT;</div>
1485
- <div class="line"><a name="l01444"></a><span class="lineno"> 1444</span>&#160; }</div>
1486
- <div class="line"><a name="l01445"></a><span class="lineno"> 1445</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a6ec0236303089a01fd9da36a8bb84e0a">FunctionType</a>* ft = SVFUtil::dyn_cast&lt;FunctionType&gt;(T))</div>
1487
- <div class="line"><a name="l01446"></a><span class="lineno"> 1446</span>&#160; svftype = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFFunctionType.html">SVFFunctionType</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(ft-&gt;getReturnType()));</div>
1488
- <div class="line"><a name="l01447"></a><span class="lineno"> 1447</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a2bf58575ac7d068e0f1a4cf953b9e6cb">StructType</a>* st = SVFUtil::dyn_cast&lt;StructType&gt;(T))</div>
1489
- <div class="line"><a name="l01448"></a><span class="lineno"> 1448</span>&#160; {</div>
1490
- <div class="line"><a name="l01449"></a><span class="lineno"> 1449</span>&#160; <span class="keyword">auto</span> svfst = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFStructType.html">SVFStructType</a>(byteSize);</div>
1491
- <div class="line"><a name="l01450"></a><span class="lineno"> 1450</span>&#160; <span class="keywordflow">if</span> (st-&gt;hasName())</div>
1492
- <div class="line"><a name="l01451"></a><span class="lineno"> 1451</span>&#160; svfst-&gt;setName(st-&gt;getName().str());</div>
1493
- <div class="line"><a name="l01452"></a><span class="lineno"> 1452</span>&#160; svftype = svfst;</div>
1494
- <div class="line"><a name="l01453"></a><span class="lineno"> 1453</span>&#160; }</div>
1495
- <div class="line"><a name="l01454"></a><span class="lineno"> 1454</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <span class="keyword">auto</span> at = SVFUtil::dyn_cast&lt;ArrayType&gt;(T))</div>
1496
- <div class="line"><a name="l01455"></a><span class="lineno"> 1455</span>&#160; {</div>
1497
- <div class="line"><a name="l01456"></a><span class="lineno"> 1456</span>&#160; <span class="keyword">auto</span> svfat = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFArrayType.html">SVFArrayType</a>(byteSize);</div>
1498
- <div class="line"><a name="l01457"></a><span class="lineno"> 1457</span>&#160; svfat-&gt;setNumOfElement(at-&gt;getNumElements());</div>
1499
- <div class="line"><a name="l01458"></a><span class="lineno"> 1458</span>&#160; svfat-&gt;setTypeOfElement(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(at-&gt;getElementType()));</div>
1500
- <div class="line"><a name="l01459"></a><span class="lineno"> 1459</span>&#160; svftype = svfat;</div>
1501
- <div class="line"><a name="l01460"></a><span class="lineno"> 1460</span>&#160; }</div>
1502
- <div class="line"><a name="l01461"></a><span class="lineno"> 1461</span>&#160; <span class="keywordflow">else</span></div>
1503
- <div class="line"><a name="l01462"></a><span class="lineno"> 1462</span>&#160; {</div>
1504
- <div class="line"><a name="l01463"></a><span class="lineno"> 1463</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="cJSON_8h.html#a503753140aa27b00f99a3501280b2746">buffer</a>;</div>
1505
- <div class="line"><a name="l01464"></a><span class="lineno"> 1464</span>&#160; <span class="keyword">auto</span> ot = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFOtherType.html">SVFOtherType</a>(T-&gt;isSingleValueType(), byteSize);</div>
1506
- <div class="line"><a name="l01465"></a><span class="lineno"> 1465</span>&#160; llvm::raw_string_ostream(<a class="code" href="cJSON_8h.html#a503753140aa27b00f99a3501280b2746">buffer</a>) &lt;&lt; *T;</div>
1507
- <div class="line"><a name="l01466"></a><span class="lineno"> 1466</span>&#160; ot-&gt;setRepr(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a72502f7f536418621485e90ab98c2016">std::move</a>(<a class="code" href="cJSON_8h.html#a503753140aa27b00f99a3501280b2746">buffer</a>));</div>
1508
- <div class="line"><a name="l01467"></a><span class="lineno"> 1467</span>&#160; svftype = ot;</div>
1509
- <div class="line"><a name="l01468"></a><span class="lineno"> 1468</span>&#160; }</div>
1510
- <div class="line"><a name="l01469"></a><span class="lineno"> 1469</span>&#160; </div>
1511
- <div class="line"><a name="l01470"></a><span class="lineno"> 1470</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5552135a27684cbe4d2a5ed346f64644">symInfo</a>-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a91083d9504ae5d220b28e0b3e461d4aa">addTypeInfo</a>(svftype);</div>
1512
- <div class="line"><a name="l01471"></a><span class="lineno"> 1471</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">LLVMType2SVFType</a>[T] = svftype;</div>
1513
- <div class="line"><a name="l01472"></a><span class="lineno"> 1472</span>&#160; </div>
1514
- <div class="line"><a name="l01473"></a><span class="lineno"> 1473</span>&#160; <span class="keywordflow">return</span> svftype;</div>
1515
- <div class="line"><a name="l01474"></a><span class="lineno"> 1474</span>&#160;}</div>
1516
- <div class="line"><a name="l01475"></a><span class="lineno"> 1475</span>&#160; </div>
1517
- <div class="line"><a name="l01479"></a><span class="lineno"><a class="line" href="classSVF_1_1LLVMModuleSet.html#aa8de934358332505d4805db137d8ec29"> 1479</a></span>&#160;<a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* <a class="code" href="classSVF_1_1LLVMModuleSet.html#aa8de934358332505d4805db137d8ec29">LLVMModuleSet::collectArrayInfo</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a146d286041987860388da3d8bc85cee3">ArrayType</a>* ty)</div>
1518
- <div class="line"><a name="l01480"></a><span class="lineno"> 1480</span>&#160;{</div>
1519
- <div class="line"><a name="l01481"></a><span class="lineno"> 1481</span>&#160; <a class="code" href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">u64_t</a> totalElemNum = ty-&gt;getNumElements();</div>
1520
- <div class="line"><a name="l01482"></a><span class="lineno"> 1482</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* elemTy = ty-&gt;getElementType();</div>
1521
- <div class="line"><a name="l01483"></a><span class="lineno"> 1483</span>&#160; <span class="keywordflow">while</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a146d286041987860388da3d8bc85cee3">ArrayType</a>* aty = SVFUtil::dyn_cast&lt;ArrayType&gt;(elemTy))</div>
1522
- <div class="line"><a name="l01484"></a><span class="lineno"> 1484</span>&#160; {</div>
1523
- <div class="line"><a name="l01485"></a><span class="lineno"> 1485</span>&#160; totalElemNum *= aty-&gt;getNumElements();</div>
1524
- <div class="line"><a name="l01486"></a><span class="lineno"> 1486</span>&#160; elemTy = aty-&gt;getElementType();</div>
1525
- <div class="line"><a name="l01487"></a><span class="lineno"> 1487</span>&#160; }</div>
1526
- <div class="line"><a name="l01488"></a><span class="lineno"> 1488</span>&#160; </div>
1527
- <div class="line"><a name="l01489"></a><span class="lineno"> 1489</span>&#160; <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* stInfo = <span class="keyword">new</span> <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>(totalElemNum);</div>
1528
- <div class="line"><a name="l01490"></a><span class="lineno"> 1490</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* elemSvfType = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(elemTy);</div>
1529
- <div class="line"><a name="l01491"></a><span class="lineno"> 1491</span>&#160; </div>
1530
- <div class="line"><a name="l01493"></a><span class="lineno"> 1493</span>&#160; <span class="keywordflow">if</span> (totalElemNum == 0)</div>
1531
- <div class="line"><a name="l01494"></a><span class="lineno"> 1494</span>&#160; {</div>
1532
- <div class="line"><a name="l01495"></a><span class="lineno"> 1495</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a00339d1d7074e9222776801ce8689f6b">addFldWithType</a>(0, elemSvfType, 0);</div>
1533
- <div class="line"><a name="l01496"></a><span class="lineno"> 1496</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a1a07c2b1415c29d7d70791c6dfe602a3">setNumOfFieldsAndElems</a>(1, 1);</div>
1534
- <div class="line"><a name="l01497"></a><span class="lineno"> 1497</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>().push_back(elemSvfType);</div>
1535
- <div class="line"><a name="l01498"></a><span class="lineno"> 1498</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().push_back(elemSvfType);</div>
1536
- <div class="line"><a name="l01499"></a><span class="lineno"> 1499</span>&#160; <span class="keywordflow">return</span> stInfo;</div>
1537
- <div class="line"><a name="l01500"></a><span class="lineno"> 1500</span>&#160; }</div>
1538
- <div class="line"><a name="l01501"></a><span class="lineno"> 1501</span>&#160; </div>
1539
- <div class="line"><a name="l01504"></a><span class="lineno"> 1504</span>&#160; <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* elemStInfo = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a1f6cc76c996a0577b20b8cedd83fff92">collectTypeInfo</a>(elemTy);</div>
1540
- <div class="line"><a name="l01505"></a><span class="lineno"> 1505</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> nfF = elemStInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ae5fad367673315da57a604e64b5889f0">getNumOfFlattenFields</a>();</div>
1541
- <div class="line"><a name="l01506"></a><span class="lineno"> 1506</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> nfE = elemStInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a518c82138fcadc6634980566c1c0f762">getNumOfFlattenElements</a>();</div>
1542
- <div class="line"><a name="l01507"></a><span class="lineno"> 1507</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> j = 0; j &lt; nfF; j++)</div>
1543
- <div class="line"><a name="l01508"></a><span class="lineno"> 1508</span>&#160; {</div>
1544
- <div class="line"><a name="l01509"></a><span class="lineno"> 1509</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* fieldTy = elemStInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>()[j];</div>
1545
- <div class="line"><a name="l01510"></a><span class="lineno"> 1510</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>().push_back(fieldTy);</div>
1546
- <div class="line"><a name="l01511"></a><span class="lineno"> 1511</span>&#160; }</div>
1547
- <div class="line"><a name="l01512"></a><span class="lineno"> 1512</span>&#160; </div>
1548
- <div class="line"><a name="l01515"></a><span class="lineno"> 1515</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> outArrayElemNum = ty-&gt;getNumElements();</div>
1549
- <div class="line"><a name="l01516"></a><span class="lineno"> 1516</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i &lt; outArrayElemNum; ++i)</div>
1550
- <div class="line"><a name="l01517"></a><span class="lineno"> 1517</span>&#160; {</div>
1551
- <div class="line"><a name="l01518"></a><span class="lineno"> 1518</span>&#160; <span class="keyword">auto</span> idx = (i * nfE * totalElemNum) / outArrayElemNum;</div>
1552
- <div class="line"><a name="l01519"></a><span class="lineno"> 1519</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a00339d1d7074e9222776801ce8689f6b">addFldWithType</a>(0, elemSvfType, idx);</div>
1553
- <div class="line"><a name="l01520"></a><span class="lineno"> 1520</span>&#160; }</div>
1554
- <div class="line"><a name="l01521"></a><span class="lineno"> 1521</span>&#160; </div>
1555
- <div class="line"><a name="l01522"></a><span class="lineno"> 1522</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i &lt; totalElemNum; ++i)</div>
1556
- <div class="line"><a name="l01523"></a><span class="lineno"> 1523</span>&#160; {</div>
1557
- <div class="line"><a name="l01524"></a><span class="lineno"> 1524</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> j = 0; j &lt; nfE; ++j)</div>
1558
- <div class="line"><a name="l01525"></a><span class="lineno"> 1525</span>&#160; {</div>
1559
- <div class="line"><a name="l01526"></a><span class="lineno"> 1526</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* et = elemStInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>()[j];</div>
1560
- <div class="line"><a name="l01527"></a><span class="lineno"> 1527</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().push_back(et);</div>
1561
- <div class="line"><a name="l01528"></a><span class="lineno"> 1528</span>&#160; }</div>
1562
- <div class="line"><a name="l01529"></a><span class="lineno"> 1529</span>&#160; }</div>
1563
- <div class="line"><a name="l01530"></a><span class="lineno"> 1530</span>&#160; </div>
1564
- <div class="line"><a name="l01531"></a><span class="lineno"> 1531</span>&#160; assert(stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().size() == nfE * totalElemNum &amp;&amp;</div>
1565
- <div class="line"><a name="l01532"></a><span class="lineno"> 1532</span>&#160; <span class="stringliteral">&quot;typeForArray size incorrect!!!&quot;</span>);</div>
1566
- <div class="line"><a name="l01533"></a><span class="lineno"> 1533</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a1a07c2b1415c29d7d70791c6dfe602a3">setNumOfFieldsAndElems</a>(nfF, nfE * totalElemNum);</div>
1567
- <div class="line"><a name="l01534"></a><span class="lineno"> 1534</span>&#160; </div>
1568
- <div class="line"><a name="l01535"></a><span class="lineno"> 1535</span>&#160; <span class="keywordflow">return</span> stInfo;</div>
1569
- <div class="line"><a name="l01536"></a><span class="lineno"> 1536</span>&#160;}</div>
1570
- <div class="line"><a name="l01537"></a><span class="lineno"> 1537</span>&#160; </div>
1571
- <div class="line"><a name="l01542"></a><span class="lineno"><a class="line" href="classSVF_1_1LLVMModuleSet.html#a946d1251501c7e0e33a9210838951258"> 1542</a></span>&#160;<a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* <a class="code" href="classSVF_1_1LLVMModuleSet.html#a946d1251501c7e0e33a9210838951258">LLVMModuleSet::collectStructInfo</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a2bf58575ac7d068e0f1a4cf953b9e6cb">StructType</a>* structTy,</div>
1572
- <div class="line"><a name="l01543"></a><span class="lineno"> 1543</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>&amp; numFields)</div>
1573
- <div class="line"><a name="l01544"></a><span class="lineno"> 1544</span>&#160;{</div>
1574
- <div class="line"><a name="l01546"></a><span class="lineno"> 1546</span>&#160; <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* stInfo = <span class="keyword">new</span> <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>(1);</div>
1575
- <div class="line"><a name="l01547"></a><span class="lineno"> 1547</span>&#160; </div>
1576
- <div class="line"><a name="l01548"></a><span class="lineno"> 1548</span>&#160; <span class="comment">// Number of fields after flattening the struct</span></div>
1577
- <div class="line"><a name="l01549"></a><span class="lineno"> 1549</span>&#160; numFields = 0;</div>
1578
- <div class="line"><a name="l01550"></a><span class="lineno"> 1550</span>&#160; <span class="comment">// The offset when considering array stride info</span></div>
1579
- <div class="line"><a name="l01551"></a><span class="lineno"> 1551</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> strideOffset = 0;</div>
1580
- <div class="line"><a name="l01552"></a><span class="lineno"> 1552</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* elemTy : structTy-&gt;elements())</div>
1581
- <div class="line"><a name="l01553"></a><span class="lineno"> 1553</span>&#160; {</div>
1582
- <div class="line"><a name="l01554"></a><span class="lineno"> 1554</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* elemSvfTy = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(elemTy);</div>
1583
- <div class="line"><a name="l01555"></a><span class="lineno"> 1555</span>&#160; <span class="comment">// offset with int_32 (s32_t) is large enough and won&#39;t overflow</span></div>
1584
- <div class="line"><a name="l01556"></a><span class="lineno"> 1556</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a00339d1d7074e9222776801ce8689f6b">addFldWithType</a>(numFields, elemSvfTy, strideOffset);</div>
1585
- <div class="line"><a name="l01557"></a><span class="lineno"> 1557</span>&#160; </div>
1586
- <div class="line"><a name="l01558"></a><span class="lineno"> 1558</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;StructType, ArrayType&gt;(elemTy))</div>
1587
- <div class="line"><a name="l01559"></a><span class="lineno"> 1559</span>&#160; {</div>
1588
- <div class="line"><a name="l01560"></a><span class="lineno"> 1560</span>&#160; <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* subStInfo = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a1f6cc76c996a0577b20b8cedd83fff92">collectTypeInfo</a>(elemTy);</div>
1589
- <div class="line"><a name="l01561"></a><span class="lineno"> 1561</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> nfF = subStInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ae5fad367673315da57a604e64b5889f0">getNumOfFlattenFields</a>();</div>
1590
- <div class="line"><a name="l01562"></a><span class="lineno"> 1562</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> nfE = subStInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a518c82138fcadc6634980566c1c0f762">getNumOfFlattenElements</a>();</div>
1591
- <div class="line"><a name="l01563"></a><span class="lineno"> 1563</span>&#160; <span class="comment">// Copy ST&#39;s info, whose element 0 is the size of ST itself.</span></div>
1592
- <div class="line"><a name="l01564"></a><span class="lineno"> 1564</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> j = 0; j &lt; nfF; ++j)</div>
1593
- <div class="line"><a name="l01565"></a><span class="lineno"> 1565</span>&#160; {</div>
1594
- <div class="line"><a name="l01566"></a><span class="lineno"> 1566</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* elemTy = subStInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>()[j];</div>
1595
- <div class="line"><a name="l01567"></a><span class="lineno"> 1567</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>().push_back(elemTy);</div>
1596
- <div class="line"><a name="l01568"></a><span class="lineno"> 1568</span>&#160; }</div>
1597
- <div class="line"><a name="l01569"></a><span class="lineno"> 1569</span>&#160; numFields += nfF;</div>
1598
- <div class="line"><a name="l01570"></a><span class="lineno"> 1570</span>&#160; strideOffset += nfE;</div>
1599
- <div class="line"><a name="l01571"></a><span class="lineno"> 1571</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> tpj = 0; tpj &lt; nfE; ++tpj)</div>
1600
- <div class="line"><a name="l01572"></a><span class="lineno"> 1572</span>&#160; {</div>
1601
- <div class="line"><a name="l01573"></a><span class="lineno"> 1573</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* ty = subStInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>()[tpj];</div>
1602
- <div class="line"><a name="l01574"></a><span class="lineno"> 1574</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().push_back(ty);</div>
1603
- <div class="line"><a name="l01575"></a><span class="lineno"> 1575</span>&#160; }</div>
1604
- <div class="line"><a name="l01576"></a><span class="lineno"> 1576</span>&#160; </div>
1605
- <div class="line"><a name="l01577"></a><span class="lineno"> 1577</span>&#160; }</div>
1606
- <div class="line"><a name="l01578"></a><span class="lineno"> 1578</span>&#160; <span class="keywordflow">else</span></div>
1607
- <div class="line"><a name="l01579"></a><span class="lineno"> 1579</span>&#160; {</div>
1608
- <div class="line"><a name="l01580"></a><span class="lineno"> 1580</span>&#160; <span class="comment">// Simple type</span></div>
1609
- <div class="line"><a name="l01581"></a><span class="lineno"> 1581</span>&#160; numFields += 1;</div>
1610
- <div class="line"><a name="l01582"></a><span class="lineno"> 1582</span>&#160; strideOffset += 1;</div>
1611
- <div class="line"><a name="l01583"></a><span class="lineno"> 1583</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>().push_back(elemSvfTy);</div>
1612
- <div class="line"><a name="l01584"></a><span class="lineno"> 1584</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().push_back(elemSvfTy);</div>
1613
- <div class="line"><a name="l01585"></a><span class="lineno"> 1585</span>&#160; }</div>
1614
- <div class="line"><a name="l01586"></a><span class="lineno"> 1586</span>&#160; }</div>
1615
- <div class="line"><a name="l01587"></a><span class="lineno"> 1587</span>&#160; </div>
1616
- <div class="line"><a name="l01588"></a><span class="lineno"> 1588</span>&#160; assert(stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().size() == strideOffset &amp;&amp;</div>
1617
- <div class="line"><a name="l01589"></a><span class="lineno"> 1589</span>&#160; <span class="stringliteral">&quot;typeForStruct size incorrect!&quot;</span>);</div>
1618
- <div class="line"><a name="l01590"></a><span class="lineno"> 1590</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a1a07c2b1415c29d7d70791c6dfe602a3">setNumOfFieldsAndElems</a>(numFields,strideOffset);</div>
1619
- <div class="line"><a name="l01591"></a><span class="lineno"> 1591</span>&#160; </div>
1620
- <div class="line"><a name="l01592"></a><span class="lineno"> 1592</span>&#160; <span class="keywordflow">return</span> stInfo;</div>
1621
- <div class="line"><a name="l01593"></a><span class="lineno"> 1593</span>&#160;}</div>
1622
- <div class="line"><a name="l01594"></a><span class="lineno"> 1594</span>&#160; </div>
1338
+ <div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>&#160; </div>
1339
+ <div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a43832e93a42ae43d44b0cc160981678f">svfModule</a>-&gt;<a class="code" href="classSVF_1_1SVFModule.html#ae64d24569942d7c4b18d2198be4839f3">addConstant</a>(svfcd);</div>
1340
+ <div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#af4bd487b3b6efe55bf869b869f5e8a80">addConstantDataMap</a>(cd,svfcd);</div>
1341
+ <div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>&#160; <span class="keywordflow">return</span> svfcd;</div>
1342
+ <div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>&#160; }</div>
1343
+ <div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>&#160;}</div>
1344
+ <div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>&#160; </div>
1345
+ <div class="line"><a name="l01301"></a><span class="lineno"><a class="line" href="classSVF_1_1LLVMModuleSet.html#a74256f36f0fdc242df9729906c34efbc"> 1301</a></span>&#160;<a class="code" href="classSVF_1_1SVFConstant.html">SVFConstant</a>* <a class="code" href="classSVF_1_1LLVMModuleSet.html#a74256f36f0fdc242df9729906c34efbc">LLVMModuleSet::getOtherSVFConstant</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">Constant</a>* oc)</div>
1346
+ <div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>&#160;{</div>
1347
+ <div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>&#160; LLVMConst2SVFConstMap::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a4b94c96898dbbc71bc1cee04786cf3dc">LLVMConst2SVFConst</a>.find(oc);</div>
1348
+ <div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>&#160; <span class="keywordflow">if</span>(it!=<a class="code" href="classSVF_1_1LLVMModuleSet.html#a4b94c96898dbbc71bc1cee04786cf3dc">LLVMConst2SVFConst</a>.end())</div>
1349
+ <div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>&#160; {</div>
1350
+ <div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div>
1351
+ <div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>&#160; }</div>
1352
+ <div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>&#160; <span class="keywordflow">else</span></div>
1353
+ <div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>&#160; {</div>
1354
+ <div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>&#160; <a class="code" href="classSVF_1_1SVFConstant.html">SVFConstant</a>* svfoc = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFConstant.html">SVFConstant</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(oc-&gt;getType()));</div>
1355
+ <div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a43832e93a42ae43d44b0cc160981678f">svfModule</a>-&gt;<a class="code" href="classSVF_1_1SVFModule.html#ae64d24569942d7c4b18d2198be4839f3">addConstant</a>(svfoc);</div>
1356
+ <div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5badf03aeb1ebda02bc186bbb58a892a">addOtherConstantMap</a>(oc,svfoc);</div>
1357
+ <div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>&#160; <span class="keywordflow">return</span> svfoc;</div>
1358
+ <div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>&#160; }</div>
1359
+ <div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>&#160;}</div>
1360
+ <div class="line"><a name="l01316"></a><span class="lineno"> 1316</span>&#160; </div>
1361
+ <div class="line"><a name="l01317"></a><span class="lineno"><a class="line" href="classSVF_1_1LLVMModuleSet.html#a0ef17c1d5e6a95c597d2334ea577a965"> 1317</a></span>&#160;<a class="code" href="classSVF_1_1SVFOtherValue.html">SVFOtherValue</a>* <a class="code" href="classSVF_1_1LLVMModuleSet.html#a0ef17c1d5e6a95c597d2334ea577a965">LLVMModuleSet::getSVFOtherValue</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* ov)</div>
1362
+ <div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>&#160;{</div>
1363
+ <div class="line"><a name="l01319"></a><span class="lineno"> 1319</span>&#160; LLVMValue2SVFOtherValueMap::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#ac3e70bd338be3a54330be5dc10321eb3">LLVMValue2SVFOtherValue</a>.find(ov);</div>
1364
+ <div class="line"><a name="l01320"></a><span class="lineno"> 1320</span>&#160; <span class="keywordflow">if</span>(it!=<a class="code" href="classSVF_1_1LLVMModuleSet.html#ac3e70bd338be3a54330be5dc10321eb3">LLVMValue2SVFOtherValue</a>.end())</div>
1365
+ <div class="line"><a name="l01321"></a><span class="lineno"> 1321</span>&#160; {</div>
1366
+ <div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div>
1367
+ <div class="line"><a name="l01323"></a><span class="lineno"> 1323</span>&#160; }</div>
1368
+ <div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>&#160; <span class="keywordflow">else</span></div>
1369
+ <div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>&#160; {</div>
1370
+ <div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>&#160; <a class="code" href="classSVF_1_1SVFOtherValue.html">SVFOtherValue</a>* svfov =</div>
1371
+ <div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>&#160; SVFUtil::isa&lt;MetadataAsValue&gt;(ov)</div>
1372
+ <div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>&#160; ? <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFMetadataAsValue.html">SVFMetadataAsValue</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(ov-&gt;getType()))</div>
1373
+ <div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>&#160; : <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFOtherValue.html">SVFOtherValue</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(ov-&gt;getType()));</div>
1374
+ <div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a43832e93a42ae43d44b0cc160981678f">svfModule</a>-&gt;<a class="code" href="classSVF_1_1SVFModule.html#a48d7f0643bb228701dcabb88ef541fca">addOtherValue</a>(svfov);</div>
1375
+ <div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a023ea6f179433fa4d007c98ddc38e3c5">addOtherValueMap</a>(ov,svfov);</div>
1376
+ <div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>&#160; <span class="keywordflow">return</span> svfov;</div>
1377
+ <div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>&#160; }</div>
1378
+ <div class="line"><a name="l01334"></a><span class="lineno"> 1334</span>&#160;}</div>
1379
+ <div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>&#160; </div>
1380
+ <div class="line"><a name="l01336"></a><span class="lineno"><a class="line" href="classSVF_1_1LLVMModuleSet.html#afdd77bc1fca91f70b2ec362f1dacd392"> 1336</a></span>&#160;<a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* <a class="code" href="classSVF_1_1LLVMModuleSet.html#afdd77bc1fca91f70b2ec362f1dacd392">LLVMModuleSet::getSVFValue</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* value)</div>
1381
+ <div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>&#160;{</div>
1382
+ <div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun = SVFUtil::dyn_cast&lt;Function&gt;(value))</div>
1383
+ <div class="line"><a name="l01339"></a><span class="lineno"> 1339</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">getSVFFunction</a>(fun);</div>
1384
+ <div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb = SVFUtil::dyn_cast&lt;BasicBlock&gt;(value))</div>
1385
+ <div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">getSVFBasicBlock</a>(bb);</div>
1386
+ <div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst = SVFUtil::dyn_cast&lt;Instruction&gt;(value))</div>
1387
+ <div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(inst);</div>
1388
+ <div class="line"><a name="l01344"></a><span class="lineno"> 1344</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a58cdfbc4160cae08745b67844ac29801">Argument</a>* arg = SVFUtil::dyn_cast&lt;Argument&gt;(value))</div>
1389
+ <div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#ad3f66b40ad360003845253f452d6a711">getSVFArgument</a>(arg);</div>
1390
+ <div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">Constant</a>* cons = SVFUtil::dyn_cast&lt;Constant&gt;(value))</div>
1391
+ <div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>&#160; {</div>
1392
+ <div class="line"><a name="l01348"></a><span class="lineno"> 1348</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7332f8059ea95472dcc231de884a5768">ConstantData</a>* cd = SVFUtil::dyn_cast&lt;ConstantData&gt;(cons))</div>
1393
+ <div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a25821b0feeb3b08e00ec9d444520b727">getSVFConstantData</a>(cd);</div>
1394
+ <div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a67f3f86344f028cacfbeb08caaf7bb0f">GlobalValue</a>* glob = SVFUtil::dyn_cast&lt;GlobalValue&gt;(cons))</div>
1395
+ <div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a3cbba2eb702a3481478b2590dfffa352">getSVFGlobalValue</a>(glob);</div>
1396
+ <div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>&#160; <span class="keywordflow">else</span></div>
1397
+ <div class="line"><a name="l01353"></a><span class="lineno"> 1353</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a74256f36f0fdc242df9729906c34efbc">getOtherSVFConstant</a>(cons);</div>
1398
+ <div class="line"><a name="l01354"></a><span class="lineno"> 1354</span>&#160; }</div>
1399
+ <div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>&#160; <span class="keywordflow">else</span></div>
1400
+ <div class="line"><a name="l01356"></a><span class="lineno"> 1356</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a0ef17c1d5e6a95c597d2334ea577a965">getSVFOtherValue</a>(value);</div>
1401
+ <div class="line"><a name="l01357"></a><span class="lineno"> 1357</span>&#160;}</div>
1402
+ <div class="line"><a name="l01358"></a><span class="lineno"> 1358</span>&#160; </div>
1403
+ <div class="line"><a name="l01359"></a><span class="lineno"><a class="line" href="classSVF_1_1LLVMModuleSet.html#a610a7777a48132caadec167c8109f044"> 1359</a></span>&#160;<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* <a class="code" href="classSVF_1_1LLVMModuleSet.html#a610a7777a48132caadec167c8109f044">LLVMModuleSet::getLLVMType</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* T)<span class="keyword"> const</span></div>
1404
+ <div class="line"><a name="l01360"></a><span class="lineno"> 1360</span>&#160;<span class="keyword"></span>{</div>
1405
+ <div class="line"><a name="l01361"></a><span class="lineno"> 1361</span>&#160; <span class="keywordflow">for</span>(LLVMType2SVFTypeMap::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">LLVMType2SVFType</a>.begin(), eit = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">LLVMType2SVFType</a>.end(); it!=eit; ++it)</div>
1406
+ <div class="line"><a name="l01362"></a><span class="lineno"> 1362</span>&#160; {</div>
1407
+ <div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>&#160; <span class="keywordflow">if</span> (it-&gt;second == T)</div>
1408
+ <div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>&#160; <span class="keywordflow">return</span> it-&gt;first;</div>
1409
+ <div class="line"><a name="l01365"></a><span class="lineno"> 1365</span>&#160; }</div>
1410
+ <div class="line"><a name="l01366"></a><span class="lineno"> 1366</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;can&#39;t find the corresponding LLVM Type&quot;</span>);</div>
1411
+ <div class="line"><a name="l01367"></a><span class="lineno"> 1367</span>&#160; abort();</div>
1412
+ <div class="line"><a name="l01368"></a><span class="lineno"> 1368</span>&#160;}</div>
1413
+ <div class="line"><a name="l01369"></a><span class="lineno"> 1369</span>&#160; </div>
1414
+ <div class="line"><a name="l01373"></a><span class="lineno"><a class="line" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99"> 1373</a></span>&#160;<a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">LLVMModuleSet::getSVFType</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* T)</div>
1415
+ <div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>&#160;{</div>
1416
+ <div class="line"><a name="l01375"></a><span class="lineno"> 1375</span>&#160; assert(T &amp;&amp; <span class="stringliteral">&quot;SVFType should not be null&quot;</span>);</div>
1417
+ <div class="line"><a name="l01376"></a><span class="lineno"> 1376</span>&#160; LLVMType2SVFTypeMap::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">LLVMType2SVFType</a>.find(T);</div>
1418
+ <div class="line"><a name="l01377"></a><span class="lineno"> 1377</span>&#160; <span class="keywordflow">if</span> (it != <a class="code" href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">LLVMType2SVFType</a>.end())</div>
1419
+ <div class="line"><a name="l01378"></a><span class="lineno"> 1378</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div>
1420
+ <div class="line"><a name="l01379"></a><span class="lineno"> 1379</span>&#160; </div>
1421
+ <div class="line"><a name="l01380"></a><span class="lineno"> 1380</span>&#160; <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* svfType = <a class="code" href="classSVF_1_1LLVMModuleSet.html#aab7b08db9252ef7e21e54d019f44b073">addSVFTypeInfo</a>(T);</div>
1422
+ <div class="line"><a name="l01381"></a><span class="lineno"> 1381</span>&#160; <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* stinfo = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a1f6cc76c996a0577b20b8cedd83fff92">collectTypeInfo</a>(T);</div>
1423
+ <div class="line"><a name="l01382"></a><span class="lineno"> 1382</span>&#160; svfType-&gt;<a class="code" href="classSVF_1_1SVFType.html#aef5999ada62dac3cc946d832ac66948c">setTypeInfo</a>(stinfo);</div>
1424
+ <div class="line"><a name="l01383"></a><span class="lineno"> 1383</span>&#160; <span class="keywordflow">return</span> svfType;</div>
1425
+ <div class="line"><a name="l01384"></a><span class="lineno"> 1384</span>&#160;}</div>
1426
+ <div class="line"><a name="l01385"></a><span class="lineno"> 1385</span>&#160; </div>
1427
+ <div class="line"><a name="l01386"></a><span class="lineno"><a class="line" href="classSVF_1_1LLVMModuleSet.html#a1f6cc76c996a0577b20b8cedd83fff92"> 1386</a></span>&#160;<a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* <a class="code" href="classSVF_1_1LLVMModuleSet.html#a1f6cc76c996a0577b20b8cedd83fff92">LLVMModuleSet::collectTypeInfo</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* T)</div>
1428
+ <div class="line"><a name="l01387"></a><span class="lineno"> 1387</span>&#160;{</div>
1429
+ <div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>&#160; Type2TypeInfoMap::iterator tit = <a class="code" href="classSVF_1_1LLVMModuleSet.html#af2c555af91679d9e6d3009547ee11486">Type2TypeInfo</a>.find(T);</div>
1430
+ <div class="line"><a name="l01389"></a><span class="lineno"> 1389</span>&#160; <span class="keywordflow">if</span> (tit != <a class="code" href="classSVF_1_1LLVMModuleSet.html#af2c555af91679d9e6d3009547ee11486">Type2TypeInfo</a>.end())</div>
1431
+ <div class="line"><a name="l01390"></a><span class="lineno"> 1390</span>&#160; {</div>
1432
+ <div class="line"><a name="l01391"></a><span class="lineno"> 1391</span>&#160; <span class="keywordflow">return</span> tit-&gt;second;</div>
1433
+ <div class="line"><a name="l01392"></a><span class="lineno"> 1392</span>&#160; }</div>
1434
+ <div class="line"><a name="l01393"></a><span class="lineno"> 1393</span>&#160; <span class="comment">// No such StInfo for T, create it now.</span></div>
1435
+ <div class="line"><a name="l01394"></a><span class="lineno"> 1394</span>&#160; <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* stInfo;</div>
1436
+ <div class="line"><a name="l01395"></a><span class="lineno"> 1395</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a146d286041987860388da3d8bc85cee3">ArrayType</a>* aty = SVFUtil::dyn_cast&lt;ArrayType&gt;(T))</div>
1437
+ <div class="line"><a name="l01396"></a><span class="lineno"> 1396</span>&#160; {</div>
1438
+ <div class="line"><a name="l01397"></a><span class="lineno"> 1397</span>&#160; stInfo = <a class="code" href="classSVF_1_1LLVMModuleSet.html#aa8de934358332505d4805db137d8ec29">collectArrayInfo</a>(aty);</div>
1439
+ <div class="line"><a name="l01398"></a><span class="lineno"> 1398</span>&#160; }</div>
1440
+ <div class="line"><a name="l01399"></a><span class="lineno"> 1399</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a2bf58575ac7d068e0f1a4cf953b9e6cb">StructType</a>* sty = SVFUtil::dyn_cast&lt;StructType&gt;(T))</div>
1441
+ <div class="line"><a name="l01400"></a><span class="lineno"> 1400</span>&#160; {</div>
1442
+ <div class="line"><a name="l01401"></a><span class="lineno"> 1401</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> nf;</div>
1443
+ <div class="line"><a name="l01402"></a><span class="lineno"> 1402</span>&#160; stInfo = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a946d1251501c7e0e33a9210838951258">collectStructInfo</a>(sty, nf);</div>
1444
+ <div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>&#160; <span class="keywordflow">if</span> (nf &gt; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5552135a27684cbe4d2a5ed346f64644">symInfo</a>-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#abb8550c9ef856e45cb7675c3796f9a35">maxStSize</a>)</div>
1445
+ <div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>&#160; {</div>
1446
+ <div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5552135a27684cbe4d2a5ed346f64644">symInfo</a>-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a0c1143eff451edf8ea47d4487a8d3a55">maxStruct</a> = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(sty);</div>
1447
+ <div class="line"><a name="l01406"></a><span class="lineno"> 1406</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5552135a27684cbe4d2a5ed346f64644">symInfo</a>-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#abb8550c9ef856e45cb7675c3796f9a35">maxStSize</a> = nf;</div>
1448
+ <div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>&#160; }</div>
1449
+ <div class="line"><a name="l01408"></a><span class="lineno"> 1408</span>&#160; }</div>
1450
+ <div class="line"><a name="l01409"></a><span class="lineno"> 1409</span>&#160; <span class="keywordflow">else</span></div>
1451
+ <div class="line"><a name="l01410"></a><span class="lineno"> 1410</span>&#160; {</div>
1452
+ <div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>&#160; stInfo = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a52853bd34a394882c6fd0fc73739c9f2">collectSimpleTypeInfo</a>(T);</div>
1453
+ <div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>&#160; }</div>
1454
+ <div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#af2c555af91679d9e6d3009547ee11486">Type2TypeInfo</a>.emplace(T, stInfo);</div>
1455
+ <div class="line"><a name="l01414"></a><span class="lineno"> 1414</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5552135a27684cbe4d2a5ed346f64644">symInfo</a>-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a72be32d606db86090067159de44e01ec">addStInfo</a>(stInfo);</div>
1456
+ <div class="line"><a name="l01415"></a><span class="lineno"> 1415</span>&#160; <span class="keywordflow">return</span> stInfo;</div>
1457
+ <div class="line"><a name="l01416"></a><span class="lineno"> 1416</span>&#160;}</div>
1458
+ <div class="line"><a name="l01417"></a><span class="lineno"> 1417</span>&#160; </div>
1459
+ <div class="line"><a name="l01418"></a><span class="lineno"><a class="line" href="classSVF_1_1LLVMModuleSet.html#aab7b08db9252ef7e21e54d019f44b073"> 1418</a></span>&#160;<a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* <a class="code" href="classSVF_1_1LLVMModuleSet.html#aab7b08db9252ef7e21e54d019f44b073">LLVMModuleSet::addSVFTypeInfo</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* T)</div>
1460
+ <div class="line"><a name="l01419"></a><span class="lineno"> 1419</span>&#160;{</div>
1461
+ <div class="line"><a name="l01420"></a><span class="lineno"> 1420</span>&#160; assert(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">LLVMType2SVFType</a>.find(T) == <a class="code" href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">LLVMType2SVFType</a>.end() &amp;&amp;</div>
1462
+ <div class="line"><a name="l01421"></a><span class="lineno"> 1421</span>&#160; <span class="stringliteral">&quot;SVFType has been added before&quot;</span>);</div>
1463
+ <div class="line"><a name="l01422"></a><span class="lineno"> 1422</span>&#160; </div>
1464
+ <div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>&#160; <span class="comment">// add SVFType&#39;s LLVM byte size iff T isSized(), otherwise byteSize is 1 (default value)</span></div>
1465
+ <div class="line"><a name="l01424"></a><span class="lineno"> 1424</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> byteSize = 1;</div>
1466
+ <div class="line"><a name="l01425"></a><span class="lineno"> 1425</span>&#160; <span class="keywordflow">if</span> (T-&gt;isSized())</div>
1467
+ <div class="line"><a name="l01426"></a><span class="lineno"> 1426</span>&#160; {</div>
1468
+ <div class="line"><a name="l01427"></a><span class="lineno"> 1427</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a03db82b8a7914367024723dba4d6ca3c">llvm::DataLayout</a> &amp;DL = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;</div>
1469
+ <div class="line"><a name="l01428"></a><span class="lineno"> 1428</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a9fe3fa15a6a0ec25864cb8439a45596e">getMainLLVMModule</a>()-&gt;getDataLayout();</div>
1470
+ <div class="line"><a name="l01429"></a><span class="lineno"> 1429</span>&#160; <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *mut_T = <span class="keyword">const_cast&lt;</span><a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *<span class="keyword">&gt;</span>(T);</div>
1471
+ <div class="line"><a name="l01430"></a><span class="lineno"> 1430</span>&#160; byteSize = DL.getTypeAllocSize(mut_T);</div>
1472
+ <div class="line"><a name="l01431"></a><span class="lineno"> 1431</span>&#160; }</div>
1473
+ <div class="line"><a name="l01432"></a><span class="lineno"> 1432</span>&#160; </div>
1474
+ <div class="line"><a name="l01433"></a><span class="lineno"> 1433</span>&#160; <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* svftype;</div>
1475
+ <div class="line"><a name="l01434"></a><span class="lineno"> 1434</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;PointerType&gt;(T))</div>
1476
+ <div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>&#160; {</div>
1477
+ <div class="line"><a name="l01436"></a><span class="lineno"> 1436</span>&#160; svftype = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFPointerType.html">SVFPointerType</a>(byteSize);</div>
1478
+ <div class="line"><a name="l01437"></a><span class="lineno"> 1437</span>&#160; }</div>
1479
+ <div class="line"><a name="l01438"></a><span class="lineno"> 1438</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a3d9e7f32dc17fe8d40f8d6a011403b91">IntegerType</a>* intT = SVFUtil::dyn_cast&lt;IntegerType&gt;(T))</div>
1480
+ <div class="line"><a name="l01439"></a><span class="lineno"> 1439</span>&#160; {</div>
1481
+ <div class="line"><a name="l01440"></a><span class="lineno"> 1440</span>&#160; <span class="keyword">auto</span> svfIntT = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFIntegerType.html">SVFIntegerType</a>(byteSize);</div>
1482
+ <div class="line"><a name="l01441"></a><span class="lineno"> 1441</span>&#160; <span class="keywordtype">unsigned</span> signWidth = intT-&gt;getBitWidth();</div>
1483
+ <div class="line"><a name="l01442"></a><span class="lineno"> 1442</span>&#160; assert(signWidth &lt; INT16_MAX &amp;&amp; <span class="stringliteral">&quot;Integer width too big&quot;</span>);</div>
1484
+ <div class="line"><a name="l01443"></a><span class="lineno"> 1443</span>&#160; svfIntT-&gt;setSignAndWidth(intT-&gt;getSignBit() ? -signWidth : signWidth);</div>
1485
+ <div class="line"><a name="l01444"></a><span class="lineno"> 1444</span>&#160; svftype = svfIntT;</div>
1486
+ <div class="line"><a name="l01445"></a><span class="lineno"> 1445</span>&#160; }</div>
1487
+ <div class="line"><a name="l01446"></a><span class="lineno"> 1446</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a6ec0236303089a01fd9da36a8bb84e0a">FunctionType</a>* ft = SVFUtil::dyn_cast&lt;FunctionType&gt;(T))</div>
1488
+ <div class="line"><a name="l01447"></a><span class="lineno"> 1447</span>&#160; svftype = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFFunctionType.html">SVFFunctionType</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(ft-&gt;getReturnType()));</div>
1489
+ <div class="line"><a name="l01448"></a><span class="lineno"> 1448</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a2bf58575ac7d068e0f1a4cf953b9e6cb">StructType</a>* st = SVFUtil::dyn_cast&lt;StructType&gt;(T))</div>
1490
+ <div class="line"><a name="l01449"></a><span class="lineno"> 1449</span>&#160; {</div>
1491
+ <div class="line"><a name="l01450"></a><span class="lineno"> 1450</span>&#160; <span class="keyword">auto</span> svfst = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFStructType.html">SVFStructType</a>(byteSize);</div>
1492
+ <div class="line"><a name="l01451"></a><span class="lineno"> 1451</span>&#160; <span class="keywordflow">if</span> (st-&gt;hasName())</div>
1493
+ <div class="line"><a name="l01452"></a><span class="lineno"> 1452</span>&#160; svfst-&gt;setName(st-&gt;getName().str());</div>
1494
+ <div class="line"><a name="l01453"></a><span class="lineno"> 1453</span>&#160; svftype = svfst;</div>
1495
+ <div class="line"><a name="l01454"></a><span class="lineno"> 1454</span>&#160; }</div>
1496
+ <div class="line"><a name="l01455"></a><span class="lineno"> 1455</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <span class="keyword">auto</span> at = SVFUtil::dyn_cast&lt;ArrayType&gt;(T))</div>
1497
+ <div class="line"><a name="l01456"></a><span class="lineno"> 1456</span>&#160; {</div>
1498
+ <div class="line"><a name="l01457"></a><span class="lineno"> 1457</span>&#160; <span class="keyword">auto</span> svfat = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFArrayType.html">SVFArrayType</a>(byteSize);</div>
1499
+ <div class="line"><a name="l01458"></a><span class="lineno"> 1458</span>&#160; svfat-&gt;setNumOfElement(at-&gt;getNumElements());</div>
1500
+ <div class="line"><a name="l01459"></a><span class="lineno"> 1459</span>&#160; svfat-&gt;setTypeOfElement(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(at-&gt;getElementType()));</div>
1501
+ <div class="line"><a name="l01460"></a><span class="lineno"> 1460</span>&#160; svftype = svfat;</div>
1502
+ <div class="line"><a name="l01461"></a><span class="lineno"> 1461</span>&#160; }</div>
1503
+ <div class="line"><a name="l01462"></a><span class="lineno"> 1462</span>&#160; <span class="keywordflow">else</span></div>
1504
+ <div class="line"><a name="l01463"></a><span class="lineno"> 1463</span>&#160; {</div>
1505
+ <div class="line"><a name="l01464"></a><span class="lineno"> 1464</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="cJSON_8h.html#a503753140aa27b00f99a3501280b2746">buffer</a>;</div>
1506
+ <div class="line"><a name="l01465"></a><span class="lineno"> 1465</span>&#160; <span class="keyword">auto</span> ot = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFOtherType.html">SVFOtherType</a>(T-&gt;isSingleValueType(), byteSize);</div>
1507
+ <div class="line"><a name="l01466"></a><span class="lineno"> 1466</span>&#160; llvm::raw_string_ostream(<a class="code" href="cJSON_8h.html#a503753140aa27b00f99a3501280b2746">buffer</a>) &lt;&lt; *T;</div>
1508
+ <div class="line"><a name="l01467"></a><span class="lineno"> 1467</span>&#160; ot-&gt;setRepr(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a72502f7f536418621485e90ab98c2016">std::move</a>(<a class="code" href="cJSON_8h.html#a503753140aa27b00f99a3501280b2746">buffer</a>));</div>
1509
+ <div class="line"><a name="l01468"></a><span class="lineno"> 1468</span>&#160; svftype = ot;</div>
1510
+ <div class="line"><a name="l01469"></a><span class="lineno"> 1469</span>&#160; }</div>
1511
+ <div class="line"><a name="l01470"></a><span class="lineno"> 1470</span>&#160; </div>
1512
+ <div class="line"><a name="l01471"></a><span class="lineno"> 1471</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5552135a27684cbe4d2a5ed346f64644">symInfo</a>-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a91083d9504ae5d220b28e0b3e461d4aa">addTypeInfo</a>(svftype);</div>
1513
+ <div class="line"><a name="l01472"></a><span class="lineno"> 1472</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">LLVMType2SVFType</a>[T] = svftype;</div>
1514
+ <div class="line"><a name="l01473"></a><span class="lineno"> 1473</span>&#160; </div>
1515
+ <div class="line"><a name="l01474"></a><span class="lineno"> 1474</span>&#160; <span class="keywordflow">return</span> svftype;</div>
1516
+ <div class="line"><a name="l01475"></a><span class="lineno"> 1475</span>&#160;}</div>
1517
+ <div class="line"><a name="l01476"></a><span class="lineno"> 1476</span>&#160; </div>
1518
+ <div class="line"><a name="l01480"></a><span class="lineno"><a class="line" href="classSVF_1_1LLVMModuleSet.html#aa8de934358332505d4805db137d8ec29"> 1480</a></span>&#160;<a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* <a class="code" href="classSVF_1_1LLVMModuleSet.html#aa8de934358332505d4805db137d8ec29">LLVMModuleSet::collectArrayInfo</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a146d286041987860388da3d8bc85cee3">ArrayType</a>* ty)</div>
1519
+ <div class="line"><a name="l01481"></a><span class="lineno"> 1481</span>&#160;{</div>
1520
+ <div class="line"><a name="l01482"></a><span class="lineno"> 1482</span>&#160; <a class="code" href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">u64_t</a> totalElemNum = ty-&gt;getNumElements();</div>
1521
+ <div class="line"><a name="l01483"></a><span class="lineno"> 1483</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* elemTy = ty-&gt;getElementType();</div>
1522
+ <div class="line"><a name="l01484"></a><span class="lineno"> 1484</span>&#160; <span class="keywordflow">while</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a146d286041987860388da3d8bc85cee3">ArrayType</a>* aty = SVFUtil::dyn_cast&lt;ArrayType&gt;(elemTy))</div>
1523
+ <div class="line"><a name="l01485"></a><span class="lineno"> 1485</span>&#160; {</div>
1524
+ <div class="line"><a name="l01486"></a><span class="lineno"> 1486</span>&#160; totalElemNum *= aty-&gt;getNumElements();</div>
1525
+ <div class="line"><a name="l01487"></a><span class="lineno"> 1487</span>&#160; elemTy = aty-&gt;getElementType();</div>
1526
+ <div class="line"><a name="l01488"></a><span class="lineno"> 1488</span>&#160; }</div>
1527
+ <div class="line"><a name="l01489"></a><span class="lineno"> 1489</span>&#160; </div>
1528
+ <div class="line"><a name="l01490"></a><span class="lineno"> 1490</span>&#160; <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* stInfo = <span class="keyword">new</span> <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>(totalElemNum);</div>
1529
+ <div class="line"><a name="l01491"></a><span class="lineno"> 1491</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* elemSvfType = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(elemTy);</div>
1530
+ <div class="line"><a name="l01492"></a><span class="lineno"> 1492</span>&#160; </div>
1531
+ <div class="line"><a name="l01494"></a><span class="lineno"> 1494</span>&#160; <span class="keywordflow">if</span> (totalElemNum == 0)</div>
1532
+ <div class="line"><a name="l01495"></a><span class="lineno"> 1495</span>&#160; {</div>
1533
+ <div class="line"><a name="l01496"></a><span class="lineno"> 1496</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a00339d1d7074e9222776801ce8689f6b">addFldWithType</a>(0, elemSvfType, 0);</div>
1534
+ <div class="line"><a name="l01497"></a><span class="lineno"> 1497</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a1a07c2b1415c29d7d70791c6dfe602a3">setNumOfFieldsAndElems</a>(1, 1);</div>
1535
+ <div class="line"><a name="l01498"></a><span class="lineno"> 1498</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>().push_back(elemSvfType);</div>
1536
+ <div class="line"><a name="l01499"></a><span class="lineno"> 1499</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().push_back(elemSvfType);</div>
1537
+ <div class="line"><a name="l01500"></a><span class="lineno"> 1500</span>&#160; <span class="keywordflow">return</span> stInfo;</div>
1538
+ <div class="line"><a name="l01501"></a><span class="lineno"> 1501</span>&#160; }</div>
1539
+ <div class="line"><a name="l01502"></a><span class="lineno"> 1502</span>&#160; </div>
1540
+ <div class="line"><a name="l01505"></a><span class="lineno"> 1505</span>&#160; <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* elemStInfo = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a1f6cc76c996a0577b20b8cedd83fff92">collectTypeInfo</a>(elemTy);</div>
1541
+ <div class="line"><a name="l01506"></a><span class="lineno"> 1506</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> nfF = elemStInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ae5fad367673315da57a604e64b5889f0">getNumOfFlattenFields</a>();</div>
1542
+ <div class="line"><a name="l01507"></a><span class="lineno"> 1507</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> nfE = elemStInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a518c82138fcadc6634980566c1c0f762">getNumOfFlattenElements</a>();</div>
1543
+ <div class="line"><a name="l01508"></a><span class="lineno"> 1508</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> j = 0; j &lt; nfF; j++)</div>
1544
+ <div class="line"><a name="l01509"></a><span class="lineno"> 1509</span>&#160; {</div>
1545
+ <div class="line"><a name="l01510"></a><span class="lineno"> 1510</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* fieldTy = elemStInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>()[j];</div>
1546
+ <div class="line"><a name="l01511"></a><span class="lineno"> 1511</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>().push_back(fieldTy);</div>
1547
+ <div class="line"><a name="l01512"></a><span class="lineno"> 1512</span>&#160; }</div>
1548
+ <div class="line"><a name="l01513"></a><span class="lineno"> 1513</span>&#160; </div>
1549
+ <div class="line"><a name="l01516"></a><span class="lineno"> 1516</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> outArrayElemNum = ty-&gt;getNumElements();</div>
1550
+ <div class="line"><a name="l01517"></a><span class="lineno"> 1517</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i &lt; outArrayElemNum; ++i)</div>
1551
+ <div class="line"><a name="l01518"></a><span class="lineno"> 1518</span>&#160; {</div>
1552
+ <div class="line"><a name="l01519"></a><span class="lineno"> 1519</span>&#160; <span class="keyword">auto</span> idx = (i * nfE * totalElemNum) / outArrayElemNum;</div>
1553
+ <div class="line"><a name="l01520"></a><span class="lineno"> 1520</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a00339d1d7074e9222776801ce8689f6b">addFldWithType</a>(0, elemSvfType, idx);</div>
1554
+ <div class="line"><a name="l01521"></a><span class="lineno"> 1521</span>&#160; }</div>
1555
+ <div class="line"><a name="l01522"></a><span class="lineno"> 1522</span>&#160; </div>
1556
+ <div class="line"><a name="l01523"></a><span class="lineno"> 1523</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i &lt; totalElemNum; ++i)</div>
1557
+ <div class="line"><a name="l01524"></a><span class="lineno"> 1524</span>&#160; {</div>
1558
+ <div class="line"><a name="l01525"></a><span class="lineno"> 1525</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> j = 0; j &lt; nfE; ++j)</div>
1559
+ <div class="line"><a name="l01526"></a><span class="lineno"> 1526</span>&#160; {</div>
1560
+ <div class="line"><a name="l01527"></a><span class="lineno"> 1527</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* et = elemStInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>()[j];</div>
1561
+ <div class="line"><a name="l01528"></a><span class="lineno"> 1528</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().push_back(et);</div>
1562
+ <div class="line"><a name="l01529"></a><span class="lineno"> 1529</span>&#160; }</div>
1563
+ <div class="line"><a name="l01530"></a><span class="lineno"> 1530</span>&#160; }</div>
1564
+ <div class="line"><a name="l01531"></a><span class="lineno"> 1531</span>&#160; </div>
1565
+ <div class="line"><a name="l01532"></a><span class="lineno"> 1532</span>&#160; assert(stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().size() == nfE * totalElemNum &amp;&amp;</div>
1566
+ <div class="line"><a name="l01533"></a><span class="lineno"> 1533</span>&#160; <span class="stringliteral">&quot;typeForArray size incorrect!!!&quot;</span>);</div>
1567
+ <div class="line"><a name="l01534"></a><span class="lineno"> 1534</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a1a07c2b1415c29d7d70791c6dfe602a3">setNumOfFieldsAndElems</a>(nfF, nfE * totalElemNum);</div>
1568
+ <div class="line"><a name="l01535"></a><span class="lineno"> 1535</span>&#160; </div>
1569
+ <div class="line"><a name="l01536"></a><span class="lineno"> 1536</span>&#160; <span class="keywordflow">return</span> stInfo;</div>
1570
+ <div class="line"><a name="l01537"></a><span class="lineno"> 1537</span>&#160;}</div>
1571
+ <div class="line"><a name="l01538"></a><span class="lineno"> 1538</span>&#160; </div>
1572
+ <div class="line"><a name="l01543"></a><span class="lineno"><a class="line" href="classSVF_1_1LLVMModuleSet.html#a946d1251501c7e0e33a9210838951258"> 1543</a></span>&#160;<a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* <a class="code" href="classSVF_1_1LLVMModuleSet.html#a946d1251501c7e0e33a9210838951258">LLVMModuleSet::collectStructInfo</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a2bf58575ac7d068e0f1a4cf953b9e6cb">StructType</a>* structTy,</div>
1573
+ <div class="line"><a name="l01544"></a><span class="lineno"> 1544</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>&amp; numFields)</div>
1574
+ <div class="line"><a name="l01545"></a><span class="lineno"> 1545</span>&#160;{</div>
1575
+ <div class="line"><a name="l01547"></a><span class="lineno"> 1547</span>&#160; <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* stInfo = <span class="keyword">new</span> <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>(1);</div>
1576
+ <div class="line"><a name="l01548"></a><span class="lineno"> 1548</span>&#160; </div>
1577
+ <div class="line"><a name="l01549"></a><span class="lineno"> 1549</span>&#160; <span class="comment">// Number of fields after flattening the struct</span></div>
1578
+ <div class="line"><a name="l01550"></a><span class="lineno"> 1550</span>&#160; numFields = 0;</div>
1579
+ <div class="line"><a name="l01551"></a><span class="lineno"> 1551</span>&#160; <span class="comment">// The offset when considering array stride info</span></div>
1580
+ <div class="line"><a name="l01552"></a><span class="lineno"> 1552</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> strideOffset = 0;</div>
1581
+ <div class="line"><a name="l01553"></a><span class="lineno"> 1553</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* elemTy : structTy-&gt;elements())</div>
1582
+ <div class="line"><a name="l01554"></a><span class="lineno"> 1554</span>&#160; {</div>
1583
+ <div class="line"><a name="l01555"></a><span class="lineno"> 1555</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* elemSvfTy = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(elemTy);</div>
1584
+ <div class="line"><a name="l01556"></a><span class="lineno"> 1556</span>&#160; <span class="comment">// offset with int_32 (s32_t) is large enough and won&#39;t overflow</span></div>
1585
+ <div class="line"><a name="l01557"></a><span class="lineno"> 1557</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a00339d1d7074e9222776801ce8689f6b">addFldWithType</a>(numFields, elemSvfTy, strideOffset);</div>
1586
+ <div class="line"><a name="l01558"></a><span class="lineno"> 1558</span>&#160; </div>
1587
+ <div class="line"><a name="l01559"></a><span class="lineno"> 1559</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;StructType, ArrayType&gt;(elemTy))</div>
1588
+ <div class="line"><a name="l01560"></a><span class="lineno"> 1560</span>&#160; {</div>
1589
+ <div class="line"><a name="l01561"></a><span class="lineno"> 1561</span>&#160; <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* subStInfo = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a1f6cc76c996a0577b20b8cedd83fff92">collectTypeInfo</a>(elemTy);</div>
1590
+ <div class="line"><a name="l01562"></a><span class="lineno"> 1562</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> nfF = subStInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ae5fad367673315da57a604e64b5889f0">getNumOfFlattenFields</a>();</div>
1591
+ <div class="line"><a name="l01563"></a><span class="lineno"> 1563</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> nfE = subStInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a518c82138fcadc6634980566c1c0f762">getNumOfFlattenElements</a>();</div>
1592
+ <div class="line"><a name="l01564"></a><span class="lineno"> 1564</span>&#160; <span class="comment">// Copy ST&#39;s info, whose element 0 is the size of ST itself.</span></div>
1593
+ <div class="line"><a name="l01565"></a><span class="lineno"> 1565</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> j = 0; j &lt; nfF; ++j)</div>
1594
+ <div class="line"><a name="l01566"></a><span class="lineno"> 1566</span>&#160; {</div>
1595
+ <div class="line"><a name="l01567"></a><span class="lineno"> 1567</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* elemTy = subStInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>()[j];</div>
1596
+ <div class="line"><a name="l01568"></a><span class="lineno"> 1568</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>().push_back(elemTy);</div>
1597
+ <div class="line"><a name="l01569"></a><span class="lineno"> 1569</span>&#160; }</div>
1598
+ <div class="line"><a name="l01570"></a><span class="lineno"> 1570</span>&#160; numFields += nfF;</div>
1599
+ <div class="line"><a name="l01571"></a><span class="lineno"> 1571</span>&#160; strideOffset += nfE;</div>
1600
+ <div class="line"><a name="l01572"></a><span class="lineno"> 1572</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> tpj = 0; tpj &lt; nfE; ++tpj)</div>
1601
+ <div class="line"><a name="l01573"></a><span class="lineno"> 1573</span>&#160; {</div>
1602
+ <div class="line"><a name="l01574"></a><span class="lineno"> 1574</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* ty = subStInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>()[tpj];</div>
1603
+ <div class="line"><a name="l01575"></a><span class="lineno"> 1575</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().push_back(ty);</div>
1604
+ <div class="line"><a name="l01576"></a><span class="lineno"> 1576</span>&#160; }</div>
1605
+ <div class="line"><a name="l01577"></a><span class="lineno"> 1577</span>&#160; </div>
1606
+ <div class="line"><a name="l01578"></a><span class="lineno"> 1578</span>&#160; }</div>
1607
+ <div class="line"><a name="l01579"></a><span class="lineno"> 1579</span>&#160; <span class="keywordflow">else</span></div>
1608
+ <div class="line"><a name="l01580"></a><span class="lineno"> 1580</span>&#160; {</div>
1609
+ <div class="line"><a name="l01581"></a><span class="lineno"> 1581</span>&#160; <span class="comment">// Simple type</span></div>
1610
+ <div class="line"><a name="l01582"></a><span class="lineno"> 1582</span>&#160; numFields += 1;</div>
1611
+ <div class="line"><a name="l01583"></a><span class="lineno"> 1583</span>&#160; strideOffset += 1;</div>
1612
+ <div class="line"><a name="l01584"></a><span class="lineno"> 1584</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>().push_back(elemSvfTy);</div>
1613
+ <div class="line"><a name="l01585"></a><span class="lineno"> 1585</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().push_back(elemSvfTy);</div>
1614
+ <div class="line"><a name="l01586"></a><span class="lineno"> 1586</span>&#160; }</div>
1615
+ <div class="line"><a name="l01587"></a><span class="lineno"> 1587</span>&#160; }</div>
1616
+ <div class="line"><a name="l01588"></a><span class="lineno"> 1588</span>&#160; </div>
1617
+ <div class="line"><a name="l01589"></a><span class="lineno"> 1589</span>&#160; assert(stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().size() == strideOffset &amp;&amp;</div>
1618
+ <div class="line"><a name="l01590"></a><span class="lineno"> 1590</span>&#160; <span class="stringliteral">&quot;typeForStruct size incorrect!&quot;</span>);</div>
1619
+ <div class="line"><a name="l01591"></a><span class="lineno"> 1591</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a1a07c2b1415c29d7d70791c6dfe602a3">setNumOfFieldsAndElems</a>(numFields,strideOffset);</div>
1620
+ <div class="line"><a name="l01592"></a><span class="lineno"> 1592</span>&#160; </div>
1621
+ <div class="line"><a name="l01593"></a><span class="lineno"> 1593</span>&#160; <span class="keywordflow">return</span> stInfo;</div>
1622
+ <div class="line"><a name="l01594"></a><span class="lineno"> 1594</span>&#160;}</div>
1623
1623
  <div class="line"><a name="l01595"></a><span class="lineno"> 1595</span>&#160; </div>
1624
- <div class="line"><a name="l01599"></a><span class="lineno"><a class="line" href="classSVF_1_1LLVMModuleSet.html#a52853bd34a394882c6fd0fc73739c9f2"> 1599</a></span>&#160;<a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* <a class="code" href="classSVF_1_1LLVMModuleSet.html#a52853bd34a394882c6fd0fc73739c9f2">LLVMModuleSet::collectSimpleTypeInfo</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* ty)</div>
1625
- <div class="line"><a name="l01600"></a><span class="lineno"> 1600</span>&#160;{</div>
1626
- <div class="line"><a name="l01602"></a><span class="lineno"> 1602</span>&#160; <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* stInfo = <span class="keyword">new</span> <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>(1);</div>
1627
- <div class="line"><a name="l01603"></a><span class="lineno"> 1603</span>&#160; <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* svfType = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(ty);</div>
1628
- <div class="line"><a name="l01604"></a><span class="lineno"> 1604</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a00339d1d7074e9222776801ce8689f6b">addFldWithType</a>(0, svfType, 0);</div>
1629
- <div class="line"><a name="l01605"></a><span class="lineno"> 1605</span>&#160; </div>
1630
- <div class="line"><a name="l01606"></a><span class="lineno"> 1606</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>().push_back(svfType);</div>
1631
- <div class="line"><a name="l01607"></a><span class="lineno"> 1607</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().push_back(svfType);</div>
1632
- <div class="line"><a name="l01608"></a><span class="lineno"> 1608</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a1a07c2b1415c29d7d70791c6dfe602a3">setNumOfFieldsAndElems</a>(1,1);</div>
1633
- <div class="line"><a name="l01609"></a><span class="lineno"> 1609</span>&#160; </div>
1634
- <div class="line"><a name="l01610"></a><span class="lineno"> 1610</span>&#160; <span class="keywordflow">return</span> stInfo;</div>
1635
- <div class="line"><a name="l01611"></a><span class="lineno"> 1611</span>&#160;}</div>
1624
+ <div class="line"><a name="l01596"></a><span class="lineno"> 1596</span>&#160; </div>
1625
+ <div class="line"><a name="l01600"></a><span class="lineno"><a class="line" href="classSVF_1_1LLVMModuleSet.html#a52853bd34a394882c6fd0fc73739c9f2"> 1600</a></span>&#160;<a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* <a class="code" href="classSVF_1_1LLVMModuleSet.html#a52853bd34a394882c6fd0fc73739c9f2">LLVMModuleSet::collectSimpleTypeInfo</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* ty)</div>
1626
+ <div class="line"><a name="l01601"></a><span class="lineno"> 1601</span>&#160;{</div>
1627
+ <div class="line"><a name="l01603"></a><span class="lineno"> 1603</span>&#160; <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* stInfo = <span class="keyword">new</span> <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>(1);</div>
1628
+ <div class="line"><a name="l01604"></a><span class="lineno"> 1604</span>&#160; <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* svfType = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(ty);</div>
1629
+ <div class="line"><a name="l01605"></a><span class="lineno"> 1605</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a00339d1d7074e9222776801ce8689f6b">addFldWithType</a>(0, svfType, 0);</div>
1630
+ <div class="line"><a name="l01606"></a><span class="lineno"> 1606</span>&#160; </div>
1631
+ <div class="line"><a name="l01607"></a><span class="lineno"> 1607</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>().push_back(svfType);</div>
1632
+ <div class="line"><a name="l01608"></a><span class="lineno"> 1608</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().push_back(svfType);</div>
1633
+ <div class="line"><a name="l01609"></a><span class="lineno"> 1609</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a1a07c2b1415c29d7d70791c6dfe602a3">setNumOfFieldsAndElems</a>(1,1);</div>
1634
+ <div class="line"><a name="l01610"></a><span class="lineno"> 1610</span>&#160; </div>
1635
+ <div class="line"><a name="l01611"></a><span class="lineno"> 1611</span>&#160; <span class="keywordflow">return</span> stInfo;</div>
1636
+ <div class="line"><a name="l01612"></a><span class="lineno"> 1612</span>&#160;}</div>
1636
1637
  </div><!-- fragment --></div><!-- contents -->
1637
1638
  <div class="ttc" id="aclassSVF_1_1SymbolTableInfo_html_a72be32d606db86090067159de44e01ec"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a72be32d606db86090067159de44e01ec">SVF::SymbolTableInfo::addStInfo</a></div><div class="ttdeci">void addStInfo(StInfo *stInfo)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00352">SymbolTableInfo.h:352</a></div></div>
1638
1639
  <div class="ttc" id="anamespaceSVF_html_a827d09974dc7bf0849f96823cc2fee89"><div class="ttname"><a href="namespaceSVF.html#a827d09974dc7bf0849f96823cc2fee89">SVF::DomTreeNode</a></div><div class="ttdeci">llvm::DomTreeNode DomTreeNode</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00134">BasicTypes.h:134</a></div></div>
@@ -1650,7 +1651,7 @@ $(function() {
1650
1651
  <div class="ttc" id="anamespaceSVF_html_aecbb42b8e9d17fa0189c50dda9fd5fdd"><div class="ttname"><a href="namespaceSVF.html#aecbb42b8e9d17fa0189c50dda9fd5fdd">SVF::DominatorTree</a></div><div class="ttdeci">llvm::DominatorTree DominatorTree</div><div class="ttdoc">LLVM Dominators.</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00133">BasicTypes.h:133</a></div></div>
1651
1652
  <div class="ttc" id="aclassSVF_1_1SymbolTableInfo_html_a0c1143eff451edf8ea47d4487a8d3a55"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a0c1143eff451edf8ea47d4487a8d3a55">SVF::SymbolTableInfo::maxStruct</a></div><div class="ttdeci">const SVFType * maxStruct</div><div class="ttdoc">The struct type with the most fields.</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00340">SymbolTableInfo.h:340</a></div></div>
1652
1653
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_ae919327019b5014f64b754dbdeb07f75"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ae919327019b5014f64b754dbdeb07f75">SVF::LLVMModuleSet::buildSVFModule</a></div><div class="ttdeci">static SVFModule * buildSVFModule(Module &amp;mod)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00093">LLVMModule.cpp:93</a></div></div>
1653
- <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_aab7b08db9252ef7e21e54d019f44b073"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#aab7b08db9252ef7e21e54d019f44b073">SVF::LLVMModuleSet::addSVFTypeInfo</a></div><div class="ttdeci">SVFType * addSVFTypeInfo(const Type *t)</div><div class="ttdoc">Create SVFTypes.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01417">LLVMModule.cpp:1417</a></div></div>
1654
+ <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_aab7b08db9252ef7e21e54d019f44b073"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#aab7b08db9252ef7e21e54d019f44b073">SVF::LLVMModuleSet::addSVFTypeInfo</a></div><div class="ttdeci">SVFType * addSVFTypeInfo(const Type *t)</div><div class="ttdoc">Create SVFTypes.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01418">LLVMModule.cpp:1418</a></div></div>
1654
1655
  <div class="ttc" id="aclassSVF_1_1SVFBasicBlock_html_ac1b15d8f9c2499add8dbc889ae5cab65"><div class="ttname"><a href="classSVF_1_1SVFBasicBlock.html#ac1b15d8f9c2499add8dbc889ae5cab65">SVF::SVFBasicBlock::addInstruction</a></div><div class="ttdeci">void addInstruction(const SVFInstruction *inst)</div><div class="ttdoc">Function where this BasicBlock is.</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00546">SVFValue.h:546</a></div></div>
1655
1656
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a4091b12bdfe4423d8114612a199bc480"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a4091b12bdfe4423d8114612a199bc480">SVF::LLVMModuleSet::getLLVMModules</a></div><div class="ttdeci">const std::vector&lt; std::reference_wrapper&lt; Module &gt; &gt; &amp; getLLVMModules() const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00136">LLVMModule.h:136</a></div></div>
1656
1657
  <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_af4c9c5d445107b1816a4be93852ba612"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#af4c9c5d445107b1816a4be93852ba612">SVF::LLVMUtil::restoreFuncName</a></div><div class="ttdeci">std::string restoreFuncName(std::string funcName)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00612">LLVMUtil.cpp:612</a></div></div>
@@ -1684,17 +1685,17 @@ $(function() {
1684
1685
  <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a21636200f17c62034720c4287aa818b5"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a21636200f17c62034720c4287aa818b5">SVF::LLVMUtil::getDefFunForMultipleModule</a></div><div class="ttdeci">const Function * 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="LLVMUtil_8cpp_source.html#l00039">LLVMUtil.cpp:39</a></div></div>
1685
1686
  <div class="ttc" id="aSVFType_8h_html_a1aeda3370621dc00e9a0fe8e7aabc736"><div class="ttname"><a href="SVFType_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a></div><div class="ttdeci">#define TIMEINTERVAL</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00512">SVFType.h:512</a></div></div>
1686
1687
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a3eaadb33cd21d0bd868526b5ddb051d9"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a3eaadb33cd21d0bd868526b5ddb051d9">SVF::LLVMModuleSet::addBasicBlockMap</a></div><div class="ttdeci">void addBasicBlockMap(const BasicBlock *bb, SVFBasicBlock *svfBB)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00160">LLVMModule.h:160</a></div></div>
1687
- <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a0ef17c1d5e6a95c597d2334ea577a965"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a0ef17c1d5e6a95c597d2334ea577a965">SVF::LLVMModuleSet::getSVFOtherValue</a></div><div class="ttdeci">SVFOtherValue * getSVFOtherValue(const Value *ov)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01316">LLVMModule.cpp:1316</a></div></div>
1688
+ <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a0ef17c1d5e6a95c597d2334ea577a965"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a0ef17c1d5e6a95c597d2334ea577a965">SVF::LLVMModuleSet::getSVFOtherValue</a></div><div class="ttdeci">SVFOtherValue * getSVFOtherValue(const Value *ov)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01317">LLVMModule.cpp:1317</a></div></div>
1688
1689
  <div class="ttc" id="aclassSVF_1_1StInfo_html_a518c82138fcadc6634980566c1c0f762"><div class="ttname"><a href="classSVF_1_1StInfo.html#a518c82138fcadc6634980566c1c0f762">SVF::StInfo::getNumOfFlattenElements</a></div><div class="ttdeci">u32_t getNumOfFlattenElements() const</div><div class="ttdoc">Return number of elements after flattening (including array elements)</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00139">SVFType.h:139</a></div></div>
1689
1690
  <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a2c61d741afbcfa853b505cd391f29f9b"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a2c61d741afbcfa853b505cd391f29f9b">SVF::LLVMUtil::isUncalledFunction</a></div><div class="ttdeci">bool isUncalledFunction(const Function *fun)</div><div class="ttdoc">whether this is a function without any possible caller?</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00169">LLVMUtil.cpp:169</a></div></div>
1690
1691
  <div class="ttc" id="aclassSVF_1_1SVFConstantData_html"><div class="ttname"><a href="classSVF_1_1SVFConstantData.html">SVF::SVFConstantData</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00937">SVFValue.h:937</a></div></div>
1691
- <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a5f0bd932f3129a9c565f3a09711f7b99"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">SVF::LLVMModuleSet::getSVFType</a></div><div class="ttdeci">SVFType * getSVFType(const Type *T)</div><div class="ttdoc">Get or create SVFType and typeinfo.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01372">LLVMModule.cpp:1372</a></div></div>
1692
+ <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a5f0bd932f3129a9c565f3a09711f7b99"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">SVF::LLVMModuleSet::getSVFType</a></div><div class="ttdeci">SVFType * getSVFType(const Type *T)</div><div class="ttdoc">Get or create SVFType and typeinfo.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01373">LLVMModule.cpp:1373</a></div></div>
1692
1693
  <div class="ttc" id="aclassSVF_1_1SVFModule_html_a0bc5a63d8c10da51766007cf40b095e5"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a0bc5a63d8c10da51766007cf40b095e5">SVF::SVFModule::addGlobalSet</a></div><div class="ttdeci">void addGlobalSet(SVFGlobalValue *glob)</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00110">SVFModule.h:110</a></div></div>
1693
1694
  <div class="ttc" id="aclassSVF_1_1SVFMetadataAsValue_html"><div class="ttname"><a href="classSVF_1_1SVFMetadataAsValue.html">SVF::SVFMetadataAsValue</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l01091">SVFValue.h:1091</a></div></div>
1694
1695
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a4b94c96898dbbc71bc1cee04786cf3dc"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a4b94c96898dbbc71bc1cee04786cf3dc">SVF::LLVMModuleSet::LLVMConst2SVFConst</a></div><div class="ttdeci">LLVMConst2SVFConstMap LLVMConst2SVFConst</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00090">LLVMModule.h:90</a></div></div>
1695
1696
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a2f8e91c075d90be66412a079fe73e936"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a2f8e91c075d90be66412a079fe73e936">SVF::LLVMModuleSet::releaseLLVMModuleSet</a></div><div class="ttdeci">static void releaseLLVMModuleSet()</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00112">LLVMModule.h:112</a></div></div>
1696
1697
  <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#l00205">LLVMModule.h:205</a></div></div>
1697
- <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a946d1251501c7e0e33a9210838951258"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a946d1251501c7e0e33a9210838951258">SVF::LLVMModuleSet::collectStructInfo</a></div><div class="ttdeci">StInfo * collectStructInfo(const StructType *structTy, u32_t &amp;numFields)</div><div class="ttdoc">Collect the struct info and set the number of fields after flattening.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01542">LLVMModule.cpp:1542</a></div></div>
1698
+ <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a946d1251501c7e0e33a9210838951258"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a946d1251501c7e0e33a9210838951258">SVF::LLVMModuleSet::collectStructInfo</a></div><div class="ttdeci">StInfo * collectStructInfo(const StructType *structTy, u32_t &amp;numFields)</div><div class="ttdoc">Collect the struct info and set the number of fields after flattening.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01543">LLVMModule.cpp:1543</a></div></div>
1698
1699
  <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#l00082">BasicTypes.h:82</a></div></div>
1699
1700
  <div class="ttc" id="aclassSVF_1_1SVFModule_html_ae64d24569942d7c4b18d2198be4839f3"><div class="ttname"><a href="classSVF_1_1SVFModule.html#ae64d24569942d7c4b18d2198be4839f3">SVF::SVFModule::addConstant</a></div><div class="ttdeci">void addConstant(SVFConstant *cd)</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00120">SVFModule.h:120</a></div></div>
1700
1701
  <div class="ttc" id="aclassSVF_1_1SVFBlackHoleValue_html"><div class="ttname"><a href="classSVF_1_1SVFBlackHoleValue.html">SVF::SVFBlackHoleValue</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l01049">SVFValue.h:1049</a></div></div>
@@ -1773,7 +1774,7 @@ $(function() {
1773
1774
  <div class="ttc" id="aclassSVF_1_1SVFFunction_html_abd458bb5a035d3f7db32fac5f01b57f3"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#abd458bb5a035d3f7db32fac5f01b57f3">SVF::SVFFunction::setExitBlock</a></div><div class="ttdeci">void setExitBlock(SVFBasicBlock *bb)</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8cpp_source.html#l00200">SVFValue.cpp:200</a></div></div>
1774
1775
  <div class="ttc" id="aclassSVF_1_1SVFGlobalValue_html"><div class="ttname"><a href="classSVF_1_1SVFGlobalValue.html">SVF::SVFGlobalValue</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00856">SVFValue.h:856</a></div></div>
1775
1776
  <div class="ttc" id="aclassSVF_1_1SVFModule_html_a1357c876eccedd58b3abe68875b3a570"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a1357c876eccedd58b3abe68875b3a570">SVF::SVFModule::pagReadFromTXT</a></div><div class="ttdeci">static bool pagReadFromTXT()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00098">SVFModule.h:98</a></div></div>
1776
- <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a52853bd34a394882c6fd0fc73739c9f2"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a52853bd34a394882c6fd0fc73739c9f2">SVF::LLVMModuleSet::collectSimpleTypeInfo</a></div><div class="ttdeci">StInfo * collectSimpleTypeInfo(const Type *T)</div><div class="ttdoc">Collect simple type (non-aggregate) info.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01599">LLVMModule.cpp:1599</a></div></div>
1777
+ <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a52853bd34a394882c6fd0fc73739c9f2"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a52853bd34a394882c6fd0fc73739c9f2">SVF::LLVMModuleSet::collectSimpleTypeInfo</a></div><div class="ttdeci">StInfo * collectSimpleTypeInfo(const Type *T)</div><div class="ttdoc">Collect simple type (non-aggregate) info.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01600">LLVMModule.cpp:1600</a></div></div>
1777
1778
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_ae365189769640adb919a23c36978e5e2"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ae365189769640adb919a23c36978e5e2">SVF::LLVMModuleSet::owned_modules</a></div><div class="ttdeci">std::vector&lt; std::unique_ptr&lt; Module &gt; &gt; owned_modules</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00072">LLVMModule.h:72</a></div></div>
1778
1779
  <div class="ttc" id="aclassSVF_1_1SVFBasicBlock_html_a66f51cd41e93ad055c4a0c2874e73fae"><div class="ttname"><a href="classSVF_1_1SVFBasicBlock.html#a66f51cd41e93ad055c4a0c2874e73fae">SVF::SVFBasicBlock::getSuccessors</a></div><div class="ttdeci">const std::vector&lt; const SVFBasicBlock * &gt; &amp; getSuccessors() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00612">SVFValue.h:612</a></div></div>
1779
1780
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a43832e93a42ae43d44b0cc160981678f"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a43832e93a42ae43d44b0cc160981678f">SVF::LLVMModuleSet::svfModule</a></div><div class="ttdeci">SVFModule * svfModule</div><div class="ttdoc">Borrowed from singleton SVFModule::svfModule.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00070">LLVMModule.h:70</a></div></div>
@@ -1793,13 +1794,13 @@ $(function() {
1793
1794
  <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a428bd75b33fab60988d8758090712f29"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a428bd75b33fab60988d8758090712f29">SVF::LLVMUtil::isArgOfUncalledFunction</a></div><div class="ttdeci">bool isArgOfUncalledFunction(const Value *val)</div><div class="ttdoc">Return true if the argument in a function does not have a caller.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00154">LLVMUtil.h:154</a></div></div>
1794
1795
  <div class="ttc" id="aclassSVF_1_1SVFCallInst_html_ac979b49b449b97b2a23f195cb107ec77"><div class="ttname"><a href="classSVF_1_1SVFCallInst.html#ac979b49b449b97b2a23f195cb107ec77">SVF::SVFCallInst::addArgument</a></div><div class="ttdeci">void addArgument(const SVFValue *a)</div><div class="ttdoc">attributes to be set only through Module builders e.g., LLVMModule</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00713">SVFValue.h:713</a></div></div>
1795
1796
  <div class="ttc" id="anamespaceSVF_html_ab34383ee87cd45eb485fa29db482ffef"><div class="ttname"><a href="namespaceSVF.html#ab34383ee87cd45eb485fa29db482ffef">SVF::PostDominatorTree</a></div><div class="ttdeci">llvm::PostDominatorTree PostDominatorTree</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00136">BasicTypes.h:136</a></div></div>
1796
- <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_aa8de934358332505d4805db137d8ec29"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#aa8de934358332505d4805db137d8ec29">SVF::LLVMModuleSet::collectArrayInfo</a></div><div class="ttdeci">StInfo * collectArrayInfo(const ArrayType *T)</div><div class="ttdoc">Collect the array info.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01479">LLVMModule.cpp:1479</a></div></div>
1797
+ <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_aa8de934358332505d4805db137d8ec29"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#aa8de934358332505d4805db137d8ec29">SVF::LLVMModuleSet::collectArrayInfo</a></div><div class="ttdeci">StInfo * collectArrayInfo(const ArrayType *T)</div><div class="ttdoc">Collect the array info.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01480">LLVMModule.cpp:1480</a></div></div>
1797
1798
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a4ca8c4678a7fefe26372fc1f4b2880fd"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a4ca8c4678a7fefe26372fc1f4b2880fd">SVF::LLVMModuleSet::createSVFDataStructure</a></div><div class="ttdeci">void createSVFDataStructure()</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00166">LLVMModule.cpp:166</a></div></div>
1798
1799
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a7f8e61cf5d838d7a2e862bc6955f16be"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a7f8e61cf5d838d7a2e862bc6955f16be">SVF::LLVMModuleSet::SVFValue2LLVMValue</a></div><div class="ttdeci">SVFValue2LLVMValueMap SVFValue2LLVMValue</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00092">LLVMModule.h:92</a></div></div>
1799
1800
  <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>
1800
1801
  <div class="ttc" id="anamespaceSVF_html_a8ad3aa124fabddc2fdd07c50403d70a9"><div class="ttname"><a href="namespaceSVF.html#a8ad3aa124fabddc2fdd07c50403d70a9">SVF::ConstantDataSequential</a></div><div class="ttdeci">llvm::ConstantDataSequential ConstantDataSequential</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00119">BasicTypes.h:119</a></div></div>
1801
1802
  <div class="ttc" id="anamespaceSVF_html_a1c7c7ac12791c0ae386283c0a4f127ba"><div class="ttname"><a href="namespaceSVF.html#a1c7c7ac12791c0ae386283c0a4f127ba">SVF::raw_fd_ostream</a></div><div class="ttdeci">llvm::raw_fd_ostream raw_fd_ostream</div><div class="ttdoc">LLVM outputs.</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00264">BasicTypes.h:264</a></div></div>
1802
- <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a610a7777a48132caadec167c8109f044"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a610a7777a48132caadec167c8109f044">SVF::LLVMModuleSet::getLLVMType</a></div><div class="ttdeci">const Type * getLLVMType(const SVFType *T) const</div><div class="ttdoc">Get LLVM Type.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01358">LLVMModule.cpp:1358</a></div></div>
1803
+ <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a610a7777a48132caadec167c8109f044"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a610a7777a48132caadec167c8109f044">SVF::LLVMModuleSet::getLLVMType</a></div><div class="ttdeci">const Type * getLLVMType(const SVFType *T) const</div><div class="ttdoc">Get LLVM Type.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01359">LLVMModule.cpp:1359</a></div></div>
1803
1804
  <div class="ttc" id="aclassSVF_1_1SVFLoopAndDomInfo_html_ae37546be7304c66b4eca2654d995eaa7"><div class="ttname"><a href="classSVF_1_1SVFLoopAndDomInfo.html#ae37546be7304c66b4eca2654d995eaa7">SVF::SVFLoopAndDomInfo::getDomFrontierMap</a></div><div class="ttdeci">const Map&lt; const SVFBasicBlock *, BBSet &gt; &amp; getDomFrontierMap() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00075">SVFValue.h:75</a></div></div>
1804
1805
  <div class="ttc" id="aclassSVF_1_1StInfo_html_a03bfeee0406c7e54557e74f3a8e848b7"><div class="ttname"><a href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">SVF::StInfo::getFlattenElementTypes</a></div><div class="ttdeci">std::vector&lt; const SVFType * &gt; &amp; getFlattenElementTypes()</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00102">SVFType.h:102</a></div></div>
1805
1806
  <div class="ttc" id="anamespaceSVF_html_a7e230c0cba2e3a7c2e5a5f2ee7d88af9"><div class="ttname"><a href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">SVF::Constant</a></div><div class="ttdeci">llvm::Constant Constant</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00124">BasicTypes.h:124</a></div></div>
@@ -1822,7 +1823,7 @@ $(function() {
1822
1823
  <div class="ttc" id="aclassSVF_1_1SymbolTableInfo_html"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html">SVF::SymbolTableInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00047">SymbolTableInfo.h:47</a></div></div>
1823
1824
  <div class="ttc" id="aclassSVF_1_1SVFIntegerType_html"><div class="ttname"><a href="classSVF_1_1SVFIntegerType.html">SVF::SVFIntegerType</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00291">SVFType.h:291</a></div></div>
1824
1825
  <div class="ttc" id="aclassSVF_1_1SVFStat_html_ae89293bc063bdc74a988e9c37c70321e"><div class="ttname"><a href="classSVF_1_1SVFStat.html#ae89293bc063bdc74a988e9c37c70321e">SVF::SVFStat::timeOfBuildingSymbolTable</a></div><div class="ttdeci">static double timeOfBuildingSymbolTable</div><div class="ttdef"><b>Definition:</b> <a href="SVFStat_8h_source.html#l00094">SVFStat.h:94</a></div></div>
1825
- <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a74256f36f0fdc242df9729906c34efbc"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a74256f36f0fdc242df9729906c34efbc">SVF::LLVMModuleSet::getOtherSVFConstant</a></div><div class="ttdeci">SVFConstant * getOtherSVFConstant(const Constant *oc)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01300">LLVMModule.cpp:1300</a></div></div>
1826
+ <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a74256f36f0fdc242df9729906c34efbc"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a74256f36f0fdc242df9729906c34efbc">SVF::LLVMModuleSet::getOtherSVFConstant</a></div><div class="ttdeci">SVFConstant * getOtherSVFConstant(const Constant *oc)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01301">LLVMModule.cpp:1301</a></div></div>
1826
1827
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html">SVF::LLVMModuleSet</a></div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00044">LLVMModule.h:44</a></div></div>
1827
1828
  <div class="ttc" id="aclassSVF_1_1SVFFunction_html_a0d5031bd11b6372803082111ec2cb4f6"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#a0d5031bd11b6372803082111ec2cb4f6">SVF::SVFFunction::addBasicBlock</a></div><div class="ttdeci">void addBasicBlock(const SVFBasicBlock *bb)</div><div class="ttdoc">a 'single' basic block having no successors and containing return instruction in a function</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00327">SVFValue.h:327</a></div></div>
1828
1829
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_ae74f307b6f96950ceedb2c375ef1c3a3"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">SVF::LLVMModuleSet::getSVFInstruction</a></div><div class="ttdeci">SVFInstruction * getSVFInstruction(const Instruction *inst) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00219">LLVMModule.h:219</a></div></div>
@@ -1845,8 +1846,8 @@ $(function() {
1845
1846
  <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a4c94a6c02fb89c1a1604c87414956acd"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a4c94a6c02fb89c1a1604c87414956acd">SVF::LLVMUtil::getPrevInsts</a></div><div class="ttdeci">void getPrevInsts(const Instruction *curInst, std::vector&lt; const SVFInstruction * &gt; &amp;instList)</div><div class="ttdoc">Get the previous instructions following control flow.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00331">LLVMUtil.cpp:331</a></div></div>
1846
1847
  <div class="ttc" id="aSVFFileSystem_8cpp_html_ab25baccb41e3b67ef0bfdaa1336c9649"><div class="ttname"><a href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a></div><div class="ttdeci">#define F(f)</div></div>
1847
1848
  <div class="ttc" id="aclassSVF_1_1SVFFunction_html_a374cbaa780f540cb4b4ccac562a82632"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#a374cbaa780f540cb4b4ccac562a82632">SVF::SVFFunction::exitBlock</a></div><div class="ttdeci">SVFBasicBlock * exitBlock</div><div class="ttdoc">annotations of this function</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00323">SVFValue.h:323</a></div></div>
1848
- <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_afdd77bc1fca91f70b2ec362f1dacd392"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#afdd77bc1fca91f70b2ec362f1dacd392">SVF::LLVMModuleSet::getSVFValue</a></div><div class="ttdeci">SVFValue * getSVFValue(const Value *value)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01335">LLVMModule.cpp:1335</a></div></div>
1849
- <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a1f6cc76c996a0577b20b8cedd83fff92"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a1f6cc76c996a0577b20b8cedd83fff92">SVF::LLVMModuleSet::collectTypeInfo</a></div><div class="ttdeci">StInfo * collectTypeInfo(const Type *ty)</div><div class="ttdoc">Collect a type info.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01385">LLVMModule.cpp:1385</a></div></div>
1849
+ <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_afdd77bc1fca91f70b2ec362f1dacd392"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#afdd77bc1fca91f70b2ec362f1dacd392">SVF::LLVMModuleSet::getSVFValue</a></div><div class="ttdeci">SVFValue * getSVFValue(const Value *value)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01336">LLVMModule.cpp:1336</a></div></div>
1850
+ <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a1f6cc76c996a0577b20b8cedd83fff92"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a1f6cc76c996a0577b20b8cedd83fff92">SVF::LLVMModuleSet::collectTypeInfo</a></div><div class="ttdeci">StInfo * collectTypeInfo(const Type *ty)</div><div class="ttdoc">Collect a type info.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01386">LLVMModule.cpp:1386</a></div></div>
1850
1851
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a067661e0049314779a44c9600420820f"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">SVF::LLVMModuleSet::LLVMType2SVFType</a></div><div class="ttdeci">LLVMType2SVFTypeMap LLVMType2SVFType</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00093">LLVMModule.h:93</a></div></div>
1851
1852
  <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a4638a12f5481dff947b59cf8353e619b"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a4638a12f5481dff947b59cf8353e619b">SVF::LLVMUtil::isIntrinsicFun</a></div><div class="ttdeci">bool isIntrinsicFun(const Function *func)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00217">LLVMUtil.cpp:217</a></div></div>
1852
1853
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a8b5f24c873db1f6a0614d1dac48bb4bb"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a8b5f24c873db1f6a0614d1dac48bb4bb">SVF::LLVMModuleSet::prePassSchedule</a></div><div class="ttdeci">void prePassSchedule()</div><div class="ttdoc">Invoke llvm passes to modify module.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00453">LLVMModule.cpp:453</a></div></div>