svf-tools 1.0.862 → 1.0.863
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/SVF-doxygen/html/ObjTypeInference_8cpp_source.html +230 -230
- package/SVF-doxygen/html/ObjTypeInference_8h_source.html +8 -8
- package/SVF-doxygen/html/classSVF_1_1ObjTypeInference-members.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1ObjTypeInference.html +226 -226
- package/SVF-doxygen/html/classSVF_1_1SymbolTableBuilder.html +2 -2
- package/SVF-doxygen/html/functions_func_s.html +2 -2
- package/SVF-doxygen/html/functions_s.html +2 -2
- package/SVF-doxygen/html/search/all_12.js +1 -1
- package/SVF-doxygen/html/search/functions_12.js +1 -1
- package/package.json +1 -1
- package/svf-llvm/include/SVF-LLVM/ObjTypeInference.h +1 -1
- package/svf-llvm/lib/ObjTypeInference.cpp +11 -13
|
@@ -203,7 +203,7 @@ $(function() {
|
|
|
203
203
|
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  {</div>
|
|
204
204
|
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  types.insert(fwInferObjType(source));</div>
|
|
205
205
|
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  }</div>
|
|
206
|
-
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *largestTy =
|
|
206
|
+
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *largestTy = selectLargestSizedType(types);</div>
|
|
207
207
|
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <a class="code" href="ObjTypeInference_8cpp.html#a7165377d2fbd76a86ed0ec5218712c78">ABORT_IFNOT</a>(largestTy, <span class="stringliteral">"return type cannot be null"</span>);</div>
|
|
208
208
|
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="keywordflow">return</span> largestTy;</div>
|
|
209
209
|
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span> }</div>
|
|
@@ -240,7 +240,7 @@ $(function() {
|
|
|
240
240
|
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="keyword">auto</span> vIt = _valueToInferSites.find(pUser);</div>
|
|
241
241
|
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="keywordflow">if</span> (canUpdate)</div>
|
|
242
242
|
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  {</div>
|
|
243
|
-
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="keywordflow">if</span> (vIt != _valueToInferSites.end()
|
|
243
|
+
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="keywordflow">if</span> (vIt != _valueToInferSites.end())</div>
|
|
244
244
|
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  {</div>
|
|
245
245
|
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  infersites.insert(vIt->second.begin(), vIt->second.end());</div>
|
|
246
246
|
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  }</div>
|
|
@@ -411,227 +411,225 @@ $(function() {
|
|
|
411
411
|
<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  <span class="keywordflow">if</span> (canUpdate)</div>
|
|
412
412
|
<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  {</div>
|
|
413
413
|
<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<const Type *></a> types;</div>
|
|
414
|
-
<div class="line"><a name="l00355"></a><span class="lineno"> 355</span> 
|
|
415
|
-
<div class="line"><a name="l00356"></a><span class="lineno"> 356</span> 
|
|
416
|
-
<div class="line"><a name="l00357"></a><span class="lineno"> 357</span> 
|
|
417
|
-
<div class="line"><a name="l00358"></a><span class="lineno"> 358</span> 
|
|
418
|
-
<div class="line"><a name="l00359"></a><span class="lineno"> 359</span> 
|
|
419
|
-
<div class="line"><a name="l00360"></a><span class="lineno"> 360</span> 
|
|
420
|
-
<div class="line"><a name="l00361"></a><span class="lineno"> 361</span> 
|
|
421
|
-
<div class="line"><a name="l00362"></a><span class="lineno"> 362</span> 
|
|
422
|
-
<div class="line"><a name="l00363"></a><span class="lineno"> 363</span> 
|
|
423
|
-
<div class="line"><a name="l00364"></a><span class="lineno"> 364</span> 
|
|
424
|
-
<div class="line"><a name="l00365"></a><span class="lineno"> 365</span> 
|
|
425
|
-
<div class="line"><a name="l00366"></a><span class="lineno"> 366</span> 
|
|
426
|
-
<div class="line"><a name="l00367"></a><span class="lineno"> 367</span> 
|
|
427
|
-
<div class="line"><a name="l00368"></a><span class="lineno"> 368</span> 
|
|
428
|
-
<div class="line"><a name="l00369"></a><span class="lineno"> 369</span> 
|
|
429
|
-
<div class="line"><a name="l00370"></a><span class="lineno"> 370</span> 
|
|
430
|
-
<div class="line"><a name="
|
|
431
|
-
<div class="line"><a name="
|
|
432
|
-
<div class="line"><a name="l00378"></a><span class="lineno"
|
|
433
|
-
<div class="line"><a name="l00379"></a><span class="lineno"> 379</span> 
|
|
434
|
-
<div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  </div>
|
|
435
|
-
<div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  <span class="
|
|
436
|
-
<div class="line"><a name="l00382"></a><span class="lineno"> 382</span> 
|
|
437
|
-
<div class="line"><a name="l00383"></a><span class="lineno"> 383</span> 
|
|
438
|
-
<div class="line"><a name="l00384"></a><span class="lineno"> 384</span> 
|
|
439
|
-
<div class="line"><a name="l00385"></a><span class="lineno"> 385</span> 
|
|
440
|
-
<div class="line"><a name="l00386"></a><span class="lineno"> 386</span> 
|
|
441
|
-
<div class="line"><a name="l00387"></a><span class="lineno"> 387</span> 
|
|
442
|
-
<div class="line"><a name="l00388"></a><span class="lineno"> 388</span> 
|
|
443
|
-
<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  <
|
|
444
|
-
<div class="line"><a name="l00390"></a><span class="lineno"> 390</span> 
|
|
445
|
-
<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  <a class="code" href="
|
|
446
|
-
<div class="line"><a name="l00392"></a><span class="lineno"> 392</span> 
|
|
447
|
-
<div class="line"><a name="l00393"></a><span class="lineno"> 393</span> 
|
|
448
|
-
<div class="line"><a name="l00394"></a><span class="lineno"> 394</span> 
|
|
449
|
-
<div class="line"><a name="l00395"></a><span class="lineno"> 395</span> 
|
|
450
|
-
<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  <span class="
|
|
451
|
-
<div class="line"><a name="l00397"></a><span class="lineno"> 397</span> 
|
|
452
|
-
<div class="line"><a name="l00398"></a><span class="lineno"> 398</span> 
|
|
453
|
-
<div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  <
|
|
454
|
-
<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  </div>
|
|
455
|
-
<div class="line"><a name="l00401"></a><span class="lineno"> 401</span> 
|
|
456
|
-
<div class="line"><a name="l00402"></a><span class="lineno"> 402</span> 
|
|
457
|
-
<div class="line"><a name="l00403"></a><span class="lineno"> 403</span> 
|
|
458
|
-
<div class="line"><a name="l00404"></a><span class="lineno"> 404</span> 
|
|
459
|
-
<div class="line"><a name="l00405"></a><span class="lineno"> 405</span> 
|
|
460
|
-
<div class="line"><a name="l00406"></a><span class="lineno"> 406</span> 
|
|
461
|
-
<div class="line"><a name="l00407"></a><span class="lineno"> 407</span> 
|
|
462
|
-
<div class="line"><a name="l00408"></a><span class="lineno"> 408</span> 
|
|
463
|
-
<div class="line"><a name="l00409"></a><span class="lineno"> 409</span> 
|
|
464
|
-
<div class="line"><a name="l00410"></a><span class="lineno"> 410</span> 
|
|
465
|
-
<div class="line"><a name="l00411"></a><span class="lineno"> 411</span> 
|
|
466
|
-
<div class="line"><a name="l00412"></a><span class="lineno"> 412</span> 
|
|
467
|
-
<div class="line"><a name="l00413"></a><span class="lineno"> 413</span> 
|
|
468
|
-
<div class="line"><a name="l00414"></a><span class="lineno"> 414</span> 
|
|
469
|
-
<div class="line"><a name="l00415"></a><span class="lineno"> 415</span> 
|
|
470
|
-
<div class="line"><a name="l00416"></a><span class="lineno"> 416</span> 
|
|
471
|
-
<div class="line"><a name="l00417"></a><span class="lineno"> 417</span> 
|
|
472
|
-
<div class="line"><a name="l00418"></a><span class="lineno"> 418</span> 
|
|
473
|
-
<div class="line"><a name="l00419"></a><span class="lineno"> 419</span> 
|
|
474
|
-
<div class="line"><a name="l00420"></a><span class="lineno"> 420</span> 
|
|
475
|
-
<div class="line"><a name="l00421"></a><span class="lineno"> 421</span> 
|
|
476
|
-
<div class="line"><a name="l00422"></a><span class="lineno"> 422</span> 
|
|
477
|
-
<div class="line"><a name="l00423"></a><span class="lineno"> 423</span> 
|
|
478
|
-
<div class="line"><a name="l00424"></a><span class="lineno"> 424</span> 
|
|
479
|
-
<div class="line"><a name="l00425"></a><span class="lineno"> 425</span> 
|
|
480
|
-
<div class="line"><a name="l00426"></a><span class="lineno"> 426</span> 
|
|
481
|
-
<div class="line"><a name="l00427"></a><span class="lineno"> 427</span> 
|
|
482
|
-
<div class="line"><a name="l00428"></a><span class="lineno"> 428</span> 
|
|
483
|
-
<div class="line"><a name="l00429"></a><span class="lineno"> 429</span> 
|
|
484
|
-
<div class="line"><a name="l00430"></a><span class="lineno"> 430</span> 
|
|
485
|
-
<div class="line"><a name="l00431"></a><span class="lineno"> 431</span> 
|
|
486
|
-
<div class="line"><a name="l00432"></a><span class="lineno"> 432</span> 
|
|
487
|
-
<div class="line"><a name="l00433"></a><span class="lineno"> 433</span> 
|
|
488
|
-
<div class="line"><a name="l00434"></a><span class="lineno"> 434</span> 
|
|
489
|
-
<div class="line"><a name="l00435"></a><span class="lineno"> 435</span> 
|
|
490
|
-
<div class="line"><a name="l00436"></a><span class="lineno"> 436</span> 
|
|
491
|
-
<div class="line"><a name="l00437"></a><span class="lineno"> 437</span> 
|
|
492
|
-
<div class="line"><a name="l00438"></a><span class="lineno"> 438</span> 
|
|
493
|
-
<div class="line"><a name="l00439"></a><span class="lineno"> 439</span> 
|
|
494
|
-
<div class="line"><a name="l00440"></a><span class="lineno"> 440</span> 
|
|
495
|
-
<div class="line"><a name="l00441"></a><span class="lineno"> 441</span> 
|
|
496
|
-
<div class="line"><a name="l00442"></a><span class="lineno"> 442</span> 
|
|
497
|
-
<div class="line"><a name="l00443"></a><span class="lineno"> 443</span> 
|
|
498
|
-
<div class="line"><a name="l00444"></a><span class="lineno"> 444</span> 
|
|
499
|
-
<div class="line"><a name="l00445"></a><span class="lineno"> 445</span> 
|
|
500
|
-
<div class="line"><a name="l00446"></a><span class="lineno"> 446</span> 
|
|
501
|
-
<div class="line"><a name="l00447"></a><span class="lineno"> 447</span> 
|
|
502
|
-
<div class="line"><a name="l00448"></a><span class="lineno"> 448</span> 
|
|
503
|
-
<div class="line"><a name="l00449"></a><span class="lineno"> 449</span> 
|
|
504
|
-
<div class="line"><a name="l00450"></a><span class="lineno"> 450</span> 
|
|
505
|
-
<div class="line"><a name="l00451"></a><span class="lineno"> 451</span> 
|
|
506
|
-
<div class="line"><a name="l00452"></a><span class="lineno"> 452</span> 
|
|
507
|
-
<div class="line"><a name="l00453"></a><span class="lineno"> 453</span> 
|
|
508
|
-
<div class="line"><a name="l00454"></a><span class="lineno"> 454</span> 
|
|
509
|
-
<div class="line"><a name="l00455"></a><span class="lineno"> 455</span> 
|
|
510
|
-
<div class="line"><a name="l00456"></a><span class="lineno"> 456</span> 
|
|
511
|
-
<div class="line"><a name="l00457"></a><span class="lineno"> 457</span> 
|
|
512
|
-
<div class="line"><a name="l00458"></a><span class="lineno"> 458</span> 
|
|
513
|
-
<div class="line"><a name="l00459"></a><span class="lineno"> 459</span> 
|
|
514
|
-
<div class="line"><a name="l00460"></a><span class="lineno"> 460</span> 
|
|
515
|
-
<div class="line"><a name="l00461"></a><span class="lineno"> 461</span> 
|
|
516
|
-
<div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  <span class="
|
|
517
|
-
<div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  <
|
|
518
|
-
<div class="line"><a name="l00464"></a><span class="lineno"> 464</span> 
|
|
519
|
-
<div class="line"><a name="l00465"></a><span class="lineno"> 465</span> 
|
|
520
|
-
<div class="line"><a name="l00466"></a><span class="lineno"> 466</span> 
|
|
521
|
-
<div class="line"><a name="l00467"></a><span class="lineno"> 467</span> 
|
|
522
|
-
<div class="line"><a name="l00468"></a><span class="lineno"> 468</span> 
|
|
523
|
-
<div class="line"><a name="l00469"></a><span class="lineno"> 469</span> 
|
|
524
|
-
<div class="line"><a name="l00470"></a><span class="lineno"> 470</span> 
|
|
525
|
-
<div class="line"><a name="l00471"></a><span class="lineno"> 471</span> 
|
|
526
|
-
<div class="line"><a name="l00472"></a><span class="lineno"> 472</span> 
|
|
527
|
-
<div class="line"><a name="l00473"></a><span class="lineno"> 473</span> 
|
|
528
|
-
<div class="line"><a name="l00474"></a><span class="lineno"> 474</span> 
|
|
529
|
-
<div class="line"><a name="l00475"></a><span class="lineno"> 475</span> 
|
|
530
|
-
<div class="line"><a name="l00476"></a><span class="lineno"> 476</span> 
|
|
531
|
-
<div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  <span class="keyword">const</span> <a class="code" href="
|
|
532
|
-
<div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  <
|
|
533
|
-
<div class="line"><a name="l00479"></a><span class="lineno"> 479</span> 
|
|
534
|
-
<div class="line"><a name="l00480"></a><span class="lineno"> 480</span> 
|
|
535
|
-
<div class="line"><a name="l00481"></a><span class="lineno"> 481</span> 
|
|
536
|
-
<div class="line"><a name="l00482"></a><span class="lineno"> 482</span> 
|
|
537
|
-
<div class="line"><a name="l00483"></a><span class="lineno"> 483</span> 
|
|
538
|
-
<div class="line"><a name="l00484"></a><span class="lineno"> 484</span> 
|
|
539
|
-
<div class="line"><a name="l00485"></a><span class="lineno"> 485</span> 
|
|
540
|
-
<div class="line"><a name="l00486"></a><span class="lineno"> 486</span> 
|
|
541
|
-
<div class="line"><a name="l00487"></a><span class="lineno"> 487</span> 
|
|
542
|
-
<div class="line"><a name="l00488"></a><span class="lineno"> 488</span> 
|
|
543
|
-
<div class="line"><a name="l00489"></a><span class="lineno"> 489</span> 
|
|
544
|
-
<div class="line"><a name="l00490"></a><span class="lineno"> 490</span> 
|
|
545
|
-
<div class="line"><a name="l00491"></a><span class="lineno"> 491</span> 
|
|
546
|
-
<div class="line"><a name="l00492"></a><span class="lineno"> 492</span> 
|
|
547
|
-
<div class="line"><a name="l00493"></a><span class="lineno"> 493</span> 
|
|
548
|
-
<div class="line"><a name="l00494"></a><span class="lineno"> 494</span> 
|
|
549
|
-
<div class="line"><a name="l00495"></a><span class="lineno"> 495</span> 
|
|
550
|
-
<div class="line"><a name="l00496"></a><span class="lineno"> 496</span> 
|
|
551
|
-
<div class="line"><a name="l00497"></a><span class="lineno"> 497</span> 
|
|
552
|
-
<div class="line"><a name="l00498"></a><span class="lineno"> 498</span> 
|
|
553
|
-
<div class="line"><a name="l00499"></a><span class="lineno"> 499</span> 
|
|
554
|
-
<div class="line"><a name="l00500"></a><span class="lineno"
|
|
555
|
-
<div class="line"><a name="l00501"></a><span class="lineno"> 501</span> 
|
|
556
|
-
<div class="line"><a name="l00502"></a><span class="lineno"> 502</span> 
|
|
557
|
-
<div class="line"><a name="
|
|
558
|
-
<div class="line"><a name="
|
|
559
|
-
<div class="line"><a name="l00509"></a><span class="lineno"
|
|
560
|
-
<div class="line"><a name="l00510"></a><span class="lineno"> 510</span> {</div>
|
|
561
|
-
<div class="line"><a name="l00511"></a><span class="lineno"> 511</span> 
|
|
562
|
-
<div class="line"><a name="l00512"></a><span class="lineno"> 512</span> 
|
|
563
|
-
<div class="line"><a name="l00513"></a><span class="lineno"> 513</span> 
|
|
564
|
-
<div class="line"><a name="l00514"></a><span class="lineno"> 514</span> 
|
|
565
|
-
<div class="line"><a name="l00515"></a><span class="lineno"> 515</span> 
|
|
566
|
-
<div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  <
|
|
567
|
-
<div class="line"><a name="l00517"></a><span class="lineno"> 517</span> 
|
|
568
|
-
<div class="line"><a name="l00518"></a><span class="lineno"> 518</span> 
|
|
569
|
-
<div class="line"><a name="l00519"></a><span class="lineno"> 519</span> 
|
|
570
|
-
<div class="line"><a name="l00520"></a><span class="lineno"> 520</span> 
|
|
571
|
-
<div class="line"><a name="l00521"></a><span class="lineno"> 521</span> 
|
|
572
|
-
<div class="line"><a name="l00522"></a><span class="lineno"> 522</span> 
|
|
573
|
-
<div class="line"><a name="l00523"></a><span class="lineno"> 523</span> 
|
|
574
|
-
<div class="line"><a name="l00524"></a><span class="lineno"> 524</span> 
|
|
575
|
-
<div class="line"><a name="l00525"></a><span class="lineno"> 525</span> 
|
|
576
|
-
<div class="line"><a name="l00526"></a><span class="lineno"> 526</span> 
|
|
577
|
-
<div class="line"><a name="l00527"></a><span class="lineno"> 527</span> 
|
|
578
|
-
<div class="line"><a name="l00528"></a><span class="lineno"> 528</span> 
|
|
579
|
-
<div class="line"><a name="l00529"></a><span class="lineno"> 529</span> 
|
|
580
|
-
<div class="line"><a name="l00530"></a><span class="lineno"> 530</span> 
|
|
581
|
-
<div class="line"><a name="l00531"></a><span class="lineno"> 531</span> 
|
|
582
|
-
<div class="line"><a name="l00532"></a><span class="lineno"> 532</span> 
|
|
583
|
-
<div class="line"><a name="l00533"></a><span class="lineno"> 533</span> 
|
|
584
|
-
<div class="line"><a name="l00534"></a><span class="lineno"
|
|
585
|
-
<div class="line"><a name="l00535"></a><span class="lineno"> 535</span> 
|
|
586
|
-
<div class="line"><a name="l00536"></a><span class="lineno"> 536</span> 
|
|
587
|
-
<div class="line"><a name="l00537"></a><span class="lineno"> 537</span>  <
|
|
588
|
-
<div class="line"><a name="l00538"></a><span class="lineno"> 538</span> 
|
|
589
|
-
<div class="line"><a name="l00539"></a><span class="lineno"> 539</span> 
|
|
590
|
-
<div class="line"><a name="l00540"></a><span class="lineno"> 540</span> 
|
|
591
|
-
<div class="line"><a name="l00541"></a><span class="lineno"> 541</span>  <a class="code" href="ObjTypeInference_8cpp.html#
|
|
592
|
-
<div class="line"><a name="l00542"></a><span class="lineno"> 542</span> 
|
|
593
|
-
<div class="line"><a name="l00543"></a><span class="lineno"> 543</span> 
|
|
594
|
-
<div class="line"><a name="l00544"></a><span class="lineno"> 544</span> 
|
|
595
|
-
<div class="line"><a name="l00545"></a><span class="lineno"> 545</span> 
|
|
596
|
-
<div class="line"><a name="l00546"></a><span class="lineno"> 546</span> 
|
|
597
|
-
<div class="line"><a name="l00547"></a><span class="lineno"> 547</span> 
|
|
598
|
-
<div class="line"><a name="l00548"></a><span class="lineno"
|
|
599
|
-
<div class="line"><a name="l00549"></a><span class="lineno"> 549</span> 
|
|
600
|
-
<div class="line"><a name="l00550"></a><span class="lineno"> 550</span>  assert(callBase->
|
|
601
|
-
<div class="line"><a name="l00551"></a><span class="lineno"> 551</span>  <span class="
|
|
602
|
-
<div class="line"><a name="l00552"></a><span class="lineno"> 552</span> 
|
|
603
|
-
<div class="line"><a name="l00553"></a><span class="lineno"> 553</span> 
|
|
604
|
-
<div class="line"><a name="l00554"></a><span class="lineno"> 554</span> 
|
|
605
|
-
<div class="line"><a name="l00555"></a><span class="lineno"> 555</span>  </div>
|
|
606
|
-
<div class="line"><a name="l00556"></a><span class="lineno"> 556</span> 
|
|
607
|
-
<div class="line"><a name="l00557"></a><span class="lineno"
|
|
608
|
-
<div class="line"><a name="l00558"></a><span class="lineno"> 558</span> 
|
|
609
|
-
<div class="line"><a name="l00559"></a><span class="lineno"> 559</span>  <
|
|
610
|
-
<div class="line"><a name="l00560"></a><span class="lineno"> 560</span>  <span class="
|
|
611
|
-
<div class="line"><a name="l00561"></a><span class="lineno"> 561</span> 
|
|
612
|
-
<div class="line"><a name="l00562"></a><span class="lineno"> 562</span> 
|
|
613
|
-
<div class="line"><a name="l00563"></a><span class="lineno"> 563</span> 
|
|
614
|
-
<div class="line"><a name="l00564"></a><span class="lineno"> 564</span> 
|
|
615
|
-
<div class="line"><a name="l00565"></a><span class="lineno"> 565</span> 
|
|
616
|
-
<div class="line"><a name="l00566"></a><span class="lineno"> 566</span> 
|
|
617
|
-
<div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  <
|
|
618
|
-
<div class="line"><a name="l00568"></a><span class="lineno"> 568</span> 
|
|
619
|
-
<div class="line"><a name="l00569"></a><span class="lineno"> 569</span> 
|
|
620
|
-
<div class="line"><a name="l00570"></a><span class="lineno"> 570</span> 
|
|
621
|
-
<div class="line"><a name="l00571"></a><span class="lineno"> 571</span> 
|
|
622
|
-
<div class="line"><a name="l00572"></a><span class="lineno"> 572</span> 
|
|
623
|
-
<div class="line"><a name="l00573"></a><span class="lineno"
|
|
624
|
-
<div class="line"><a name="l00574"></a><span class="lineno"> 574</span> 
|
|
625
|
-
<div class="line"><a name="l00575"></a><span class="lineno"> 575</span> 
|
|
626
|
-
<div class="line"><a name="l00576"></a><span class="lineno"> 576</span>  <span class="keywordflow">if</span> (SVFUtil::
|
|
627
|
-
<div class="line"><a name="l00577"></a><span class="lineno"> 577</span> 
|
|
628
|
-
<div class="line"><a name="
|
|
629
|
-
<div class="line"><a name="
|
|
630
|
-
<div class="line"><a name="l00582"></a><span class="lineno"> 582</span> 
|
|
631
|
-
<div class="line"><a name="l00583"></a><span class="lineno"> 583</span> 
|
|
632
|
-
<div class="line"><a name="l00584"></a><span class="lineno"> 584</span> 
|
|
633
|
-
<div class="line"><a name="l00585"></a><span class="lineno"> 585</span>  <span class="keywordflow">return</span> num;</div>
|
|
634
|
-
<div class="line"><a name="l00586"></a><span class="lineno"> 586</span> }</div>
|
|
414
|
+
<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  std::transform(infersites.begin(), infersites.end(), std::inserter(types, types.begin()),</div>
|
|
415
|
+
<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  <a class="code" href="ObjTypeInference_8cpp.html#a19b8626948c43f4ce19dbc69742d309e">infersiteToType</a>);</div>
|
|
416
|
+
<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  _valueToInferSites[curValue] = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a72502f7f536418621485e90ab98c2016">SVFUtil::move</a>(infersites);</div>
|
|
417
|
+
<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  _valueToType[curValue] = selectLargestSizedType(types);</div>
|
|
418
|
+
<div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  }</div>
|
|
419
|
+
<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  }</div>
|
|
420
|
+
<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> = _valueToType[startValue];</div>
|
|
421
|
+
<div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  <span class="keywordflow">if</span> (<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> == <span class="keyword">nullptr</span>)</div>
|
|
422
|
+
<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  {</div>
|
|
423
|
+
<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> = defaultType(startValue);</div>
|
|
424
|
+
<div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  <a class="code" href="ObjTypeInference_8cpp.html#ac48ef12f2a6f605d6fa5d31e7623a826">WARN_MSG</a>(<span class="stringliteral">"Using default type, trace ID is "</span> + std::to_string(traceId) + <span class="stringliteral">":"</span> + <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a86c0a0cb4ada72bd4f42c77558e6a350">dumpValueAndDbgInfo</a>(startValue));</div>
|
|
425
|
+
<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  }</div>
|
|
426
|
+
<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  <a class="code" href="ObjTypeInference_8cpp.html#a7165377d2fbd76a86ed0ec5218712c78">ABORT_IFNOT</a>(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>, <span class="stringliteral">"type cannot be a null ptr"</span>);</div>
|
|
427
|
+
<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  <span class="keywordflow">return</span> <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>;</div>
|
|
428
|
+
<div class="line"><a name="l00369"></a><span class="lineno"> 369</span> }</div>
|
|
429
|
+
<div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  </div>
|
|
430
|
+
<div class="line"><a name="l00376"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjTypeInference.html#a707f0575f3d70e62a78f08c961ec7dae"> 376</a></span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<const Value *></a> <a class="code" href="classSVF_1_1ObjTypeInference.html#a707f0575f3d70e62a78f08c961ec7dae">ObjTypeInference::bwfindAllocations</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *startValue)</div>
|
|
431
|
+
<div class="line"><a name="l00377"></a><span class="lineno"> 377</span> {</div>
|
|
432
|
+
<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  </div>
|
|
433
|
+
<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  <span class="comment">// consult cache</span></div>
|
|
434
|
+
<div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  <span class="keyword">auto</span> tIt = _valueToAllocs.find(startValue);</div>
|
|
435
|
+
<div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  <span class="keywordflow">if</span> (tIt != _valueToAllocs.end())</div>
|
|
436
|
+
<div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  {</div>
|
|
437
|
+
<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  <a class="code" href="ObjTypeInference_8cpp.html#a482b3cc567fd28e9a30e7594c100149f">WARN_IFNOT</a>(!tIt->second.empty(), <span class="stringliteral">"empty type:"</span> + <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a86c0a0cb4ada72bd4f42c77558e6a350">dumpValueAndDbgInfo</a>(startValue));</div>
|
|
438
|
+
<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  <span class="keywordflow">return</span> !tIt->second.empty() ? tIt->second : <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<const Value *></a>({startValue});</div>
|
|
439
|
+
<div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  }</div>
|
|
440
|
+
<div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  </div>
|
|
441
|
+
<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  <span class="comment">// simulate the call stack, the second element indicates whether we should update sources for current value</span></div>
|
|
442
|
+
<div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  <a class="code" href="classSVF_1_1FILOWorkList.html">FILOWorkList<ValueBoolPair></a> workList;</div>
|
|
443
|
+
<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<ValueBoolPair></a> visited;</div>
|
|
444
|
+
<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  workList.<a class="code" href="classSVF_1_1FILOWorkList.html#afcf3fcda18e8d3e2bad70a51376c0ce1">push</a>({startValue, <span class="keyword">false</span>});</div>
|
|
445
|
+
<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  <span class="keywordflow">while</span> (!workList.<a class="code" href="classSVF_1_1FILOWorkList.html#a071a624c91def82a4bbbf3806c7b7eea">empty</a>())</div>
|
|
446
|
+
<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  {</div>
|
|
447
|
+
<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  <span class="keyword">auto</span> curPair = workList.<a class="code" href="classSVF_1_1FILOWorkList.html#a3fd9acb6d09fd142bfd402fdf8cac93b">pop</a>();</div>
|
|
448
|
+
<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  <span class="keywordflow">if</span> (visited.count(curPair)) <span class="keywordflow">continue</span>;</div>
|
|
449
|
+
<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  visited.insert(curPair);</div>
|
|
450
|
+
<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *curValue = curPair.first;</div>
|
|
451
|
+
<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  <span class="keywordtype">bool</span> canUpdate = curPair.second;</div>
|
|
452
|
+
<div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  </div>
|
|
453
|
+
<div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<const Value *></a> sources;</div>
|
|
454
|
+
<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  <span class="keyword">auto</span> insertAllocs = [&sources, &canUpdate](<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *source)</div>
|
|
455
|
+
<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  {</div>
|
|
456
|
+
<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  <span class="keywordflow">if</span> (canUpdate) sources.insert(source);</div>
|
|
457
|
+
<div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  };</div>
|
|
458
|
+
<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  <span class="keyword">auto</span> insertAllocsOrPushWorklist = [<span class="keyword">this</span>, &sources, &workList, &canUpdate](<span class="keyword">const</span> <span class="keyword">auto</span> &pUser)</div>
|
|
459
|
+
<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  {</div>
|
|
460
|
+
<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  <span class="keyword">auto</span> vIt = _valueToAllocs.find(pUser);</div>
|
|
461
|
+
<div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  <span class="keywordflow">if</span> (canUpdate)</div>
|
|
462
|
+
<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  {</div>
|
|
463
|
+
<div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  <span class="keywordflow">if</span> (vIt != _valueToAllocs.end())</div>
|
|
464
|
+
<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  {</div>
|
|
465
|
+
<div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  sources.insert(vIt->second.begin(), vIt->second.end());</div>
|
|
466
|
+
<div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  }</div>
|
|
467
|
+
<div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  }</div>
|
|
468
|
+
<div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  <span class="keywordflow">else</span></div>
|
|
469
|
+
<div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  {</div>
|
|
470
|
+
<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  <span class="keywordflow">if</span> (vIt == _valueToAllocs.end()) workList.push({pUser, <span class="keyword">false</span>});</div>
|
|
471
|
+
<div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  }</div>
|
|
472
|
+
<div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  };</div>
|
|
473
|
+
<div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  </div>
|
|
474
|
+
<div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  <span class="keywordflow">if</span> (!canUpdate && !_valueToAllocs.count(curValue))</div>
|
|
475
|
+
<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  {</div>
|
|
476
|
+
<div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  workList.<a class="code" href="classSVF_1_1FILOWorkList.html#afcf3fcda18e8d3e2bad70a51376c0ce1">push</a>({curValue, <span class="keyword">true</span>});</div>
|
|
477
|
+
<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  }</div>
|
|
478
|
+
<div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  </div>
|
|
479
|
+
<div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  <span class="keywordflow">if</span> (isAllocation(curValue))</div>
|
|
480
|
+
<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  {</div>
|
|
481
|
+
<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  insertAllocs(curValue);</div>
|
|
482
|
+
<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  }</div>
|
|
483
|
+
<div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#afc50da46a6ea7c2cf61683bbec4d7c8d">BitCastInst</a> *bitCastInst = SVFUtil::dyn_cast<BitCastInst>(curValue))</div>
|
|
484
|
+
<div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  {</div>
|
|
485
|
+
<div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *prevVal = bitCastInst->getOperand(0);</div>
|
|
486
|
+
<div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  insertAllocsOrPushWorklist(prevVal);</div>
|
|
487
|
+
<div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  }</div>
|
|
488
|
+
<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ac8d4990439af7a2ecca7e15383119674">PHINode</a> *phiNode = SVFUtil::dyn_cast<PHINode>(curValue))</div>
|
|
489
|
+
<div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  {</div>
|
|
490
|
+
<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i < phiNode->getNumOperands(); ++i)</div>
|
|
491
|
+
<div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  {</div>
|
|
492
|
+
<div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  insertAllocsOrPushWorklist(phiNode->getOperand(i));</div>
|
|
493
|
+
<div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  }</div>
|
|
494
|
+
<div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  }</div>
|
|
495
|
+
<div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5a6e8ab900d5cd17ef72661006a7fbe0">LoadInst</a> *loadInst = SVFUtil::dyn_cast<LoadInst>(curValue))</div>
|
|
496
|
+
<div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  {</div>
|
|
497
|
+
<div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &use: loadInst->getPointerOperand()->uses())</div>
|
|
498
|
+
<div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  {</div>
|
|
499
|
+
<div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ab696aab940eb187dc81217efe8649af5">StoreInst</a> *storeInst = SVFUtil::dyn_cast<StoreInst>(use.getUser()))</div>
|
|
500
|
+
<div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  {</div>
|
|
501
|
+
<div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  <span class="keywordflow">if</span> (storeInst->getPointerOperand() == loadInst->getPointerOperand())</div>
|
|
502
|
+
<div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  {</div>
|
|
503
|
+
<div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  insertAllocsOrPushWorklist(storeInst->getValueOperand());</div>
|
|
504
|
+
<div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  }</div>
|
|
505
|
+
<div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  }</div>
|
|
506
|
+
<div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  }</div>
|
|
507
|
+
<div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  }</div>
|
|
508
|
+
<div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a58cdfbc4160cae08745b67844ac29801">Argument</a> *argument = SVFUtil::dyn_cast<Argument>(curValue))</div>
|
|
509
|
+
<div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  {</div>
|
|
510
|
+
<div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &use: argument->getParent()->uses())</div>
|
|
511
|
+
<div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  {</div>
|
|
512
|
+
<div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a> *callBase = SVFUtil::dyn_cast<CallBase>(use.getUser()))</div>
|
|
513
|
+
<div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  {</div>
|
|
514
|
+
<div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  <span class="comment">// skip function as parameter</span></div>
|
|
515
|
+
<div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  <span class="comment">// e.g., call void @foo(%struct.ssl_ctx_st* %9, i32 (i8*, i32, i32, i8*)* @passwd_callback)</span></div>
|
|
516
|
+
<div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  <span class="keywordflow">if</span> (callBase->getCalledFunction() != argument->getParent()) <span class="keywordflow">continue</span>;</div>
|
|
517
|
+
<div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> pos = argument->getParent()->isVarArg() ? 0 : argument->getArgNo();</div>
|
|
518
|
+
<div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  insertAllocsOrPushWorklist(callBase->getArgOperand(pos));</div>
|
|
519
|
+
<div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  }</div>
|
|
520
|
+
<div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  }</div>
|
|
521
|
+
<div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  }</div>
|
|
522
|
+
<div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a> *callBase = SVFUtil::dyn_cast<CallBase>(curValue))</div>
|
|
523
|
+
<div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  {</div>
|
|
524
|
+
<div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  <a class="code" href="ObjTypeInference_8cpp.html#a7165377d2fbd76a86ed0ec5218712c78">ABORT_IFNOT</a>(!callBase->doesNotReturn(), <span class="stringliteral">"callbase does not return:"</span> + <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a86c0a0cb4ada72bd4f42c77558e6a350">dumpValueAndDbgInfo</a>(callBase));</div>
|
|
525
|
+
<div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *callee = callBase->getCalledFunction())</div>
|
|
526
|
+
<div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  {</div>
|
|
527
|
+
<div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  <span class="keywordflow">if</span> (!callee->isDeclaration())</div>
|
|
528
|
+
<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  {</div>
|
|
529
|
+
<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *svfFunc = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">getSVFFunction</a>(callee);</div>
|
|
530
|
+
<div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *pValue = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#aaf9b679407f12b93afc53c157d37b444">getLLVMValue</a>(svfFunc-><a class="code" href="classSVF_1_1SVFFunction.html#ac4c28c8d205d354f3a982119f29f2aac">getExitBB</a>()-><a class="code" href="classSVF_1_1SVFBasicBlock.html#ad05f85ce931d4479f71d1947a25599dc">back</a>());</div>
|
|
531
|
+
<div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ac7dcc6103dee3a0bbc2fd2e02716a154">ReturnInst</a> *retInst = SVFUtil::dyn_cast<ReturnInst>(pValue);</div>
|
|
532
|
+
<div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  <a class="code" href="ObjTypeInference_8cpp.html#a7165377d2fbd76a86ed0ec5218712c78">ABORT_IFNOT</a>(retInst && retInst->getReturnValue(), <span class="stringliteral">"not return inst?"</span>);</div>
|
|
533
|
+
<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  insertAllocsOrPushWorklist(retInst->getReturnValue());</div>
|
|
534
|
+
<div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  }</div>
|
|
535
|
+
<div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  }</div>
|
|
536
|
+
<div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  }</div>
|
|
537
|
+
<div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  <span class="keywordflow">if</span> (canUpdate)</div>
|
|
538
|
+
<div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  {</div>
|
|
539
|
+
<div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  _valueToAllocs[curValue] = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a72502f7f536418621485e90ab98c2016">SVFUtil::move</a>(sources);</div>
|
|
540
|
+
<div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  }</div>
|
|
541
|
+
<div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  }</div>
|
|
542
|
+
<div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<const Value *></a> srcs = _valueToAllocs[startValue];</div>
|
|
543
|
+
<div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  <span class="keywordflow">if</span> (srcs.empty())</div>
|
|
544
|
+
<div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  {</div>
|
|
545
|
+
<div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  srcs = {startValue};</div>
|
|
546
|
+
<div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  <a class="code" href="ObjTypeInference_8cpp.html#ac48ef12f2a6f605d6fa5d31e7623a826">WARN_MSG</a>(<span class="stringliteral">"Using default type, trace ID is "</span> + std::to_string(traceId) + <span class="stringliteral">":"</span> + <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a86c0a0cb4ada72bd4f42c77558e6a350">dumpValueAndDbgInfo</a>(startValue));</div>
|
|
547
|
+
<div class="line"><a name="l00493"></a><span class="lineno"> 493</span>  }</div>
|
|
548
|
+
<div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  <a class="code" href="ObjTypeInference_8cpp.html#a7165377d2fbd76a86ed0ec5218712c78">ABORT_IFNOT</a>(!srcs.empty(), <span class="stringliteral">"sources cannot be empty"</span>);</div>
|
|
549
|
+
<div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  <span class="keywordflow">return</span> srcs;</div>
|
|
550
|
+
<div class="line"><a name="l00496"></a><span class="lineno"> 496</span> }</div>
|
|
551
|
+
<div class="line"><a name="l00497"></a><span class="lineno"> 497</span>  </div>
|
|
552
|
+
<div class="line"><a name="l00498"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjTypeInference.html#af8113e432377917c1a0de9ab100aaafe"> 498</a></span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ObjTypeInference.html#af8113e432377917c1a0de9ab100aaafe">ObjTypeInference::isAllocation</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a> *val)</div>
|
|
553
|
+
<div class="line"><a name="l00499"></a><span class="lineno"> 499</span> {</div>
|
|
554
|
+
<div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#aca11801ed6ef6ff8d2a1e85bc0fc5794">LLVMUtil::isObject</a>(val);</div>
|
|
555
|
+
<div class="line"><a name="l00501"></a><span class="lineno"> 501</span> }</div>
|
|
556
|
+
<div class="line"><a name="l00502"></a><span class="lineno"> 502</span>  </div>
|
|
557
|
+
<div class="line"><a name="l00507"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjTypeInference.html#afe926ee3427bb329d189e0c40bb1cd60"> 507</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ObjTypeInference.html#afe926ee3427bb329d189e0c40bb1cd60">ObjTypeInference::validateTypeCheck</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a> *cs)</div>
|
|
558
|
+
<div class="line"><a name="l00508"></a><span class="lineno"> 508</span> {</div>
|
|
559
|
+
<div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *func = cs->getCalledFunction())</div>
|
|
560
|
+
<div class="line"><a name="l00510"></a><span class="lineno"> 510</span>  {</div>
|
|
561
|
+
<div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  <span class="keywordflow">if</span> (func->getName().find(<a class="code" href="ObjTypeInference_8cpp.html#a5f334de99eb942058f27a1025c346f70">TYPEMALLOC</a>) != std::string::npos)</div>
|
|
562
|
+
<div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  {</div>
|
|
563
|
+
<div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *objType = fwInferObjType(cs);</div>
|
|
564
|
+
<div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  <a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a> *pInt =</div>
|
|
565
|
+
<div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  SVFUtil::dyn_cast<llvm::ConstantInt>(cs->getOperand(1));</div>
|
|
566
|
+
<div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  assert(pInt && <span class="stringliteral">"the second argument is a integer"</span>);</div>
|
|
567
|
+
<div class="line"><a name="l00517"></a><span class="lineno"> 517</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> iTyNum = objTyToNumFields(objType);</div>
|
|
568
|
+
<div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  <span class="keywordflow">if</span> (iTyNum >= pInt->getZExtValue())</div>
|
|
569
|
+
<div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() << <a class="code" href="namespaceSVF_1_1SVFUtil.html#a05dc00b2bd9a8176aae31b6cfffe725d">SVFUtil::sucMsg</a>(<span class="stringliteral">"\t SUCCESS :"</span>) << <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a86c0a0cb4ada72bd4f42c77558e6a350">dumpValueAndDbgInfo</a>(cs)</div>
|
|
570
|
+
<div class="line"><a name="l00520"></a><span class="lineno"> 520</span>  << <a class="code" href="namespaceSVF_1_1SVFUtil.html#a4550f2fb815882edfb666ac818792064">SVFUtil::pasMsg</a>(<span class="stringliteral">" TYPE: "</span>)</div>
|
|
571
|
+
<div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  << <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a6e8682537cf5bed808df439bd7e1add9">dumpType</a>(objType) << <span class="stringliteral">"\n"</span>;</div>
|
|
572
|
+
<div class="line"><a name="l00522"></a><span class="lineno"> 522</span>  <span class="keywordflow">else</span></div>
|
|
573
|
+
<div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  {</div>
|
|
574
|
+
<div class="line"><a name="l00524"></a><span class="lineno"> 524</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVFUtil::errs</a>() << <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7655b13bbfe720ca2b8a25e0a72528e6">SVFUtil::errMsg</a>(<span class="stringliteral">"\t FAILURE :"</span>) << <span class="stringliteral">":"</span> << <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a86c0a0cb4ada72bd4f42c77558e6a350">dumpValueAndDbgInfo</a>(cs) << <span class="stringliteral">" TYPE: "</span></div>
|
|
575
|
+
<div class="line"><a name="l00525"></a><span class="lineno"> 525</span>  << <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a6e8682537cf5bed808df439bd7e1add9">dumpType</a>(objType) << <span class="stringliteral">"\n"</span>;</div>
|
|
576
|
+
<div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  abort();</div>
|
|
577
|
+
<div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  }</div>
|
|
578
|
+
<div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  }</div>
|
|
579
|
+
<div class="line"><a name="l00529"></a><span class="lineno"> 529</span>  }</div>
|
|
580
|
+
<div class="line"><a name="l00530"></a><span class="lineno"> 530</span> }</div>
|
|
581
|
+
<div class="line"><a name="l00531"></a><span class="lineno"> 531</span>  </div>
|
|
582
|
+
<div class="line"><a name="l00532"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjTypeInference.html#a99eaaef89f214fc8587349361600b44d"> 532</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ObjTypeInference.html#a99eaaef89f214fc8587349361600b44d">ObjTypeInference::typeSizeDiffTest</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a> *oPTy, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *iTy, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *val)</div>
|
|
583
|
+
<div class="line"><a name="l00533"></a><span class="lineno"> 533</span> {</div>
|
|
584
|
+
<div class="line"><a name="l00534"></a><span class="lineno"> 534</span> <span class="preprocessor">#if TYPE_DEBUG</span></div>
|
|
585
|
+
<div class="line"><a name="l00535"></a><span class="lineno"> 535</span>  <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *oTy = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#abba4111230f6009bbf50518ee36a9870">getPtrElementType</a>(oPTy);</div>
|
|
586
|
+
<div class="line"><a name="l00536"></a><span class="lineno"> 536</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> iTyNum = objTyToNumFields(iTy);</div>
|
|
587
|
+
<div class="line"><a name="l00537"></a><span class="lineno"> 537</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#ab5b55fce942ab6d7995541f3fe0503f8">getNumOfElements</a>(oTy) > iTyNum)</div>
|
|
588
|
+
<div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  {</div>
|
|
589
|
+
<div class="line"><a name="l00539"></a><span class="lineno"> 539</span>  <a class="code" href="ObjTypeInference_8cpp.html#aa73dde570491da218d3ef11359f16955">ERR_MSG</a>(<span class="stringliteral">"original type is:"</span> + <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a6e8682537cf5bed808df439bd7e1add9">dumpType</a>(oTy));</div>
|
|
590
|
+
<div class="line"><a name="l00540"></a><span class="lineno"> 540</span>  <a class="code" href="ObjTypeInference_8cpp.html#aa73dde570491da218d3ef11359f16955">ERR_MSG</a>(<span class="stringliteral">"infered type is:"</span> + <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a6e8682537cf5bed808df439bd7e1add9">dumpType</a>(iTy));</div>
|
|
591
|
+
<div class="line"><a name="l00541"></a><span class="lineno"> 541</span>  <a class="code" href="ObjTypeInference_8cpp.html#a54176d0866e198769367b0dc65e049b5">ABORT_MSG</a>(<span class="stringliteral">"wrong type, trace ID is "</span> + std::to_string(traceId) + <span class="stringliteral">":"</span> + <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a86c0a0cb4ada72bd4f42c77558e6a350">dumpValueAndDbgInfo</a>(val));</div>
|
|
592
|
+
<div class="line"><a name="l00542"></a><span class="lineno"> 542</span>  }</div>
|
|
593
|
+
<div class="line"><a name="l00543"></a><span class="lineno"> 543</span> <span class="preprocessor">#endif</span></div>
|
|
594
|
+
<div class="line"><a name="l00544"></a><span class="lineno"> 544</span> }</div>
|
|
595
|
+
<div class="line"><a name="l00545"></a><span class="lineno"> 545</span>  </div>
|
|
596
|
+
<div class="line"><a name="l00546"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjTypeInference.html#a72da2d7f06e8fee67dc5b3c451fa5dee"> 546</a></span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1ObjTypeInference.html#a72da2d7f06e8fee67dc5b3c451fa5dee">ObjTypeInference::getArgPosInCall</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a> *callBase, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *arg)</div>
|
|
597
|
+
<div class="line"><a name="l00547"></a><span class="lineno"> 547</span> {</div>
|
|
598
|
+
<div class="line"><a name="l00548"></a><span class="lineno"> 548</span>  assert(callBase->hasArgument(arg) && <span class="stringliteral">"callInst does not have argument arg?"</span>);</div>
|
|
599
|
+
<div class="line"><a name="l00549"></a><span class="lineno"> 549</span>  <span class="keyword">auto</span> it = std::find(callBase->arg_begin(), callBase->arg_end(), arg);</div>
|
|
600
|
+
<div class="line"><a name="l00550"></a><span class="lineno"> 550</span>  assert(it != callBase->arg_end() && <span class="stringliteral">"Didn't find argument?"</span>);</div>
|
|
601
|
+
<div class="line"><a name="l00551"></a><span class="lineno"> 551</span>  <span class="keywordflow">return</span> std::distance(callBase->arg_begin(), it);</div>
|
|
602
|
+
<div class="line"><a name="l00552"></a><span class="lineno"> 552</span> }</div>
|
|
603
|
+
<div class="line"><a name="l00553"></a><span class="lineno"> 553</span>  </div>
|
|
604
|
+
<div class="line"><a name="l00554"></a><span class="lineno"> 554</span>  </div>
|
|
605
|
+
<div class="line"><a name="l00555"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjTypeInference.html#a205fa59a7250270b216f47df78ef2319"> 555</a></span> <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *<a class="code" href="classSVF_1_1ObjTypeInference.html#a205fa59a7250270b216f47df78ef2319">ObjTypeInference::selectLargestSizedType</a>(<a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<const Type *></a> &objTys)</div>
|
|
606
|
+
<div class="line"><a name="l00556"></a><span class="lineno"> 556</span> {</div>
|
|
607
|
+
<div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  <span class="keywordflow">if</span> (objTys.empty()) <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
|
|
608
|
+
<div class="line"><a name="l00558"></a><span class="lineno"> 558</span>  <span class="comment">// map type size to types from with key in descending order</span></div>
|
|
609
|
+
<div class="line"><a name="l00559"></a><span class="lineno"> 559</span>  <a class="code" href="namespaceSVF.html#aedf0d6718ca176e0b9e17ab4b30729c6">OrderedMap<u32_t, OrderedSet<const Type *></a>, std::greater<int>> typeSzToTypes;</div>
|
|
610
|
+
<div class="line"><a name="l00560"></a><span class="lineno"> 560</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *ty: objTys)</div>
|
|
611
|
+
<div class="line"><a name="l00561"></a><span class="lineno"> 561</span>  {</div>
|
|
612
|
+
<div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  typeSzToTypes[objTyToNumFields(ty)].insert(ty);</div>
|
|
613
|
+
<div class="line"><a name="l00563"></a><span class="lineno"> 563</span>  }</div>
|
|
614
|
+
<div class="line"><a name="l00564"></a><span class="lineno"> 564</span>  assert(!typeSzToTypes.empty() && <span class="stringliteral">"typeSzToTypes cannot be empty"</span>);</div>
|
|
615
|
+
<div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  <a class="code" href="namespaceSVF.html#a4f21e91ff8eaea5207afe5c60dbd78d7">OrderedSet<const Type *></a> largestTypes;</div>
|
|
616
|
+
<div class="line"><a name="l00566"></a><span class="lineno"> 566</span>  std::tie(std::ignore, largestTypes) = *typeSzToTypes.begin();</div>
|
|
617
|
+
<div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  assert(!largestTypes.empty() && <span class="stringliteral">"largest element cannot be empty"</span>);</div>
|
|
618
|
+
<div class="line"><a name="l00568"></a><span class="lineno"> 568</span>  <span class="keywordflow">return</span> *largestTypes.begin();</div>
|
|
619
|
+
<div class="line"><a name="l00569"></a><span class="lineno"> 569</span> }</div>
|
|
620
|
+
<div class="line"><a name="l00570"></a><span class="lineno"> 570</span>  </div>
|
|
621
|
+
<div class="line"><a name="l00571"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjTypeInference.html#a5eae038a7bffb0549ca75cd9c850ff1e"> 571</a></span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1ObjTypeInference.html#a5eae038a7bffb0549ca75cd9c850ff1e">ObjTypeInference::objTyToNumFields</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *objTy)</div>
|
|
622
|
+
<div class="line"><a name="l00572"></a><span class="lineno"> 572</span> {</div>
|
|
623
|
+
<div class="line"><a name="l00573"></a><span class="lineno"> 573</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> num = <a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>();</div>
|
|
624
|
+
<div class="line"><a name="l00574"></a><span class="lineno"> 574</span>  <span class="keywordflow">if</span> (SVFUtil::isa<ArrayType>(objTy))</div>
|
|
625
|
+
<div class="line"><a name="l00575"></a><span class="lineno"> 575</span>  num = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ab5b55fce942ab6d7995541f3fe0503f8">getNumOfElements</a>(objTy);</div>
|
|
626
|
+
<div class="line"><a name="l00576"></a><span class="lineno"> 576</span>  <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<StructType>(objTy))</div>
|
|
627
|
+
<div class="line"><a name="l00577"></a><span class="lineno"> 577</span>  {</div>
|
|
628
|
+
<div class="line"><a name="l00580"></a><span class="lineno"> 580</span>  <span class="keywordflow">if</span> (!<a class="code" href="namespaceSVF_1_1cppUtil.html#a4e1785295e2695fae72758d8bbe4f7ac">classTyHasVTable</a>(st))</div>
|
|
629
|
+
<div class="line"><a name="l00581"></a><span class="lineno"> 581</span>  num = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ab5b55fce942ab6d7995541f3fe0503f8">getNumOfElements</a>(st);</div>
|
|
630
|
+
<div class="line"><a name="l00582"></a><span class="lineno"> 582</span>  }</div>
|
|
631
|
+
<div class="line"><a name="l00583"></a><span class="lineno"> 583</span>  <span class="keywordflow">return</span> num;</div>
|
|
632
|
+
<div class="line"><a name="l00584"></a><span class="lineno"> 584</span> }</div>
|
|
635
633
|
</div><!-- fragment --></div><!-- contents -->
|
|
636
634
|
<div class="ttc" id="aObjTypeInference_8cpp_html_a482b3cc567fd28e9a30e7594c100149f"><div class="ttname"><a href="ObjTypeInference_8cpp.html#a482b3cc567fd28e9a30e7594c100149f">WARN_IFNOT</a></div><div class="ttdeci">#define WARN_IFNOT(condition, msg)</div><div class="ttdef"><b>Definition:</b> <a href="ObjTypeInference_8cpp_source.html#l00070">ObjTypeInference.cpp:70</a></div></div>
|
|
637
635
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_acf40310917909e4234282c0695a43160"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">SVF::LLVMModuleSet::getLLVMModuleSet</a></div><div class="ttdeci">static LLVMModuleSet * getLLVMModuleSet()</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00102">LLVMModule.h:102</a></div></div>
|
|
@@ -650,6 +648,7 @@ $(function() {
|
|
|
650
648
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a50fc24901350df9db890ba16a9b87e33"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">SVF::LLVMModuleSet::getSVFFunction</a></div><div class="ttdeci">SVFFunction * getSVFFunction(const Function *fun) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00202">LLVMModule.h:202</a></div></div>
|
|
651
649
|
<div class="ttc" id="anamespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdoc">LLVM Basic classes.</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00080">BasicTypes.h:80</a></div></div>
|
|
652
650
|
<div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_ab2064cb70c76f399ce115f2621adea35"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#ab2064cb70c76f399ce115f2621adea35">SVF::SVFUtil::isHeapAllocExtCallViaRet</a></div><div class="ttdeci">bool isHeapAllocExtCallViaRet(const CallSite cs)</div><div class="ttdoc">interfaces to be used externally</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00442">SVFUtil.h:442</a></div></div>
|
|
651
|
+
<div class="ttc" id="aclassSVF_1_1ObjTypeInference_html_a205fa59a7250270b216f47df78ef2319"><div class="ttname"><a href="classSVF_1_1ObjTypeInference.html#a205fa59a7250270b216f47df78ef2319">SVF::ObjTypeInference::selectLargestSizedType</a></div><div class="ttdeci">const Type * selectLargestSizedType(Set< const Type * > &objTys)</div><div class="ttdoc">Select the largest (conservative) type from all types.</div><div class="ttdef"><b>Definition:</b> <a href="ObjTypeInference_8cpp_source.html#l00555">ObjTypeInference.cpp:555</a></div></div>
|
|
653
652
|
<div class="ttc" id="anamespaceSVF_html_a5faee14fa1dd41447bc73ac365fe33c1"><div class="ttname"><a href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a></div><div class="ttdeci">llvm::Function Function</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00083">BasicTypes.h:83</a></div></div>
|
|
654
653
|
<div class="ttc" id="anamespaceSVF_html_affba423b674a0aba723e33101826e297"><div class="ttname"><a href="namespaceSVF.html#affba423b674a0aba723e33101826e297">SVF::LLVMContext</a></div><div class="ttdeci">llvm::LLVMContext LLVMContext</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00068">BasicTypes.h:68</a></div></div>
|
|
655
654
|
<div class="ttc" id="anamespaceSVF_html_a1f4624771922dc8c2447ad7433588c73"><div class="ttname"><a href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">SVF::CallBase</a></div><div class="ttdeci">llvm::CallBase CallBase</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00144">BasicTypes.h:144</a></div></div>
|
|
@@ -660,28 +659,29 @@ $(function() {
|
|
|
660
659
|
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a6e8682537cf5bed808df439bd7e1add9"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a6e8682537cf5bed808df439bd7e1add9">SVF::LLVMUtil::dumpType</a></div><div class="ttdeci">std::string dumpType(const Type *type)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00923">LLVMUtil.cpp:923</a></div></div>
|
|
661
660
|
<div class="ttc" id="aclassSVF_1_1ObjTypeInference_html_abf0978f7128506f7d19996f184fe8154"><div class="ttname"><a href="classSVF_1_1ObjTypeInference.html#abf0978f7128506f7d19996f184fe8154">SVF::ObjTypeInference::fwInferObjType</a></div><div class="ttdeci">const Type * fwInferObjType(const Value *startValue)</div><div class="ttdoc">Forward collect all possible infer sites starting from a value.</div><div class="ttdef"><b>Definition:</b> <a href="ObjTypeInference_8cpp_source.html#l00152">ObjTypeInference.cpp:152</a></div></div>
|
|
662
661
|
<div class="ttc" id="aclassSVF_1_1SVFBasicBlock_html_ad05f85ce931d4479f71d1947a25599dc"><div class="ttname"><a href="classSVF_1_1SVFBasicBlock.html#ad05f85ce931d4479f71d1947a25599dc">SVF::SVFBasicBlock::back</a></div><div class="ttdeci">const SVFInstruction * back() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00598">SVFValue.h:598</a></div></div>
|
|
663
|
-
<div class="ttc" id="aclassSVF_1_1ObjTypeInference_html_a99eaaef89f214fc8587349361600b44d"><div class="ttname"><a href="classSVF_1_1ObjTypeInference.html#a99eaaef89f214fc8587349361600b44d">SVF::ObjTypeInference::typeSizeDiffTest</a></div><div class="ttdeci">void typeSizeDiffTest(const PointerType *oPTy, const Type *iTy, const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="ObjTypeInference_8cpp_source.html#
|
|
662
|
+
<div class="ttc" id="aclassSVF_1_1ObjTypeInference_html_a99eaaef89f214fc8587349361600b44d"><div class="ttname"><a href="classSVF_1_1ObjTypeInference.html#a99eaaef89f214fc8587349361600b44d">SVF::ObjTypeInference::typeSizeDiffTest</a></div><div class="ttdeci">void typeSizeDiffTest(const PointerType *oPTy, const Type *iTy, const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="ObjTypeInference_8cpp_source.html#l00532">ObjTypeInference.cpp:532</a></div></div>
|
|
664
663
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_ac1a9d20d62066ec4e181fad223669e32"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ac1a9d20d62066ec4e181fad223669e32">SVF::LLVMModuleSet::getContext</a></div><div class="ttdeci">LLVMContext & getContext() const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00332">LLVMModule.h:332</a></div></div>
|
|
665
664
|
<div class="ttc" id="aCppUtil_8h_html"><div class="ttname"><a href="CppUtil_8h.html">CppUtil.h</a></div></div>
|
|
666
665
|
<div class="ttc" id="acJSON_8h_html_ad4c68ea99a26b0a98ad9a79982960458"><div class="ttname"><a href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">string</a></div><div class="ttdeci">const char *const string</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00172">cJSON.h:172</a></div></div>
|
|
667
666
|
<div class="ttc" id="acJSON_8cpp_html_a3f9a0d3265a6254722587175dac3e4dc"><div class="ttname"><a href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a></div><div class="ttdeci">newitem type</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l02739">cJSON.cpp:2739</a></div></div>
|
|
668
667
|
<div class="ttc" id="anamespaceSVF_html_ac8d4990439af7a2ecca7e15383119674"><div class="ttname"><a href="namespaceSVF.html#ac8d4990439af7a2ecca7e15383119674">SVF::PHINode</a></div><div class="ttdeci">llvm::PHINode PHINode</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00163">BasicTypes.h:163</a></div></div>
|
|
669
|
-
<div class="ttc" id="aclassSVF_1_1ObjTypeInference_html_a5eae038a7bffb0549ca75cd9c850ff1e"><div class="ttname"><a href="classSVF_1_1ObjTypeInference.html#a5eae038a7bffb0549ca75cd9c850ff1e">SVF::ObjTypeInference::objTyToNumFields</a></div><div class="ttdeci">u32_t objTyToNumFields(const Type *objTy)</div><div class="ttdef"><b>Definition:</b> <a href="ObjTypeInference_8cpp_source.html#
|
|
668
|
+
<div class="ttc" id="aclassSVF_1_1ObjTypeInference_html_a5eae038a7bffb0549ca75cd9c850ff1e"><div class="ttname"><a href="classSVF_1_1ObjTypeInference.html#a5eae038a7bffb0549ca75cd9c850ff1e">SVF::ObjTypeInference::objTyToNumFields</a></div><div class="ttdeci">u32_t objTyToNumFields(const Type *objTy)</div><div class="ttdef"><b>Definition:</b> <a href="ObjTypeInference_8cpp_source.html#l00571">ObjTypeInference.cpp:571</a></div></div>
|
|
670
669
|
<div class="ttc" id="anamespaceSVF_html_a2bf58575ac7d068e0f1a4cf953b9e6cb"><div class="ttname"><a href="namespaceSVF.html#a2bf58575ac7d068e0f1a4cf953b9e6cb">SVF::StructType</a></div><div class="ttdeci">llvm::StructType StructType</div><div class="ttdoc">LLVM types.</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00092">BasicTypes.h:92</a></div></div>
|
|
671
670
|
<div class="ttc" id="aclassSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00297">SVFValue.h:297</a></div></div>
|
|
672
671
|
<div class="ttc" id="aclassSVF_1_1FILOWorkList_html_afcf3fcda18e8d3e2bad70a51376c0ce1"><div class="ttname"><a href="classSVF_1_1FILOWorkList.html#afcf3fcda18e8d3e2bad70a51376c0ce1">SVF::FILOWorkList::push</a></div><div class="ttdeci">bool push(const Data &data)</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00257">WorkList.h:257</a></div></div>
|
|
673
672
|
<div class="ttc" id="anamespaceSVF_html_a3bacb4f95c73e6d794901d01c6b65a83"><div class="ttname"><a href="namespaceSVF.html#a3bacb4f95c73e6d794901d01c6b65a83">SVF::AllocaInst</a></div><div class="ttdeci">llvm::AllocaInst AllocaInst</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00148">BasicTypes.h:148</a></div></div>
|
|
674
|
-
<div class="ttc" id="aclassSVF_1_1ObjTypeInference_html_af8113e432377917c1a0de9ab100aaafe"><div class="ttname"><a href="classSVF_1_1ObjTypeInference.html#af8113e432377917c1a0de9ab100aaafe">SVF::ObjTypeInference::isAllocation</a></div><div class="ttdeci">bool isAllocation(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="ObjTypeInference_8cpp_source.html#
|
|
675
|
-
<div class="ttc" id="aclassSVF_1_1ObjTypeInference_html_aff3be73b7348c0e4dece6a9b5b1bd1f1"><div class="ttname"><a href="classSVF_1_1ObjTypeInference.html#aff3be73b7348c0e4dece6a9b5b1bd1f1">SVF::ObjTypeInference::selectLargestType</a></div><div class="ttdeci">const Type * selectLargestType(Set< const Type * > &objTys)</div><div class="ttdoc">Select the largest (conservative) type from all types.</div><div class="ttdef"><b>Definition:</b> <a href="ObjTypeInference_8cpp_source.html#l00557">ObjTypeInference.cpp:557</a></div></div>
|
|
673
|
+
<div class="ttc" id="aclassSVF_1_1ObjTypeInference_html_af8113e432377917c1a0de9ab100aaafe"><div class="ttname"><a href="classSVF_1_1ObjTypeInference.html#af8113e432377917c1a0de9ab100aaafe">SVF::ObjTypeInference::isAllocation</a></div><div class="ttdeci">bool isAllocation(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="ObjTypeInference_8cpp_source.html#l00498">ObjTypeInference.cpp:498</a></div></div>
|
|
676
674
|
<div class="ttc" id="anamespaceSVF_html_ac4e93e1fec646ff222940a663843921b"><div class="ttname"><a href="namespaceSVF.html#ac4e93e1fec646ff222940a663843921b">SVF::GetElementPtrInst</a></div><div class="ttdeci">llvm::GetElementPtrInst GetElementPtrInst</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00160">BasicTypes.h:160</a></div></div>
|
|
675
|
+
<div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_a72502f7f536418621485e90ab98c2016"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a72502f7f536418621485e90ab98c2016">SVF::SVFUtil::move</a></div><div class="ttdeci">constexpr std::remove_reference< T >::type && move(T &&t) noexcept</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00621">SVFUtil.h:621</a></div></div>
|
|
677
676
|
<div class="ttc" id="aclassSVF_1_1SVFFunction_html_ac4c28c8d205d354f3a982119f29f2aac"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ac4c28c8d205d354f3a982119f29f2aac">SVF::SVFFunction::getExitBB</a></div><div class="ttdeci">const SVFBasicBlock * getExitBB() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8cpp_source.html#l00193">SVFValue.cpp:193</a></div></div>
|
|
678
677
|
<div class="ttc" id="anamespaceSVF_html_adefcb50414ea999d70cea5ccdbcb98d7"><div class="ttname"><a href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">SVF::ConstantInt</a></div><div class="ttdeci">llvm::ConstantInt ConstantInt</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00123">BasicTypes.h:123</a></div></div>
|
|
679
678
|
<div class="ttc" id="aLLVMModule_8h_html"><div class="ttname"><a href="LLVMModule_8h.html">LLVMModule.h</a></div></div>
|
|
680
679
|
<div class="ttc" id="aclassSVF_1_1ObjTypeInference_html_aee4383a13cda421acb034ea147e33a6d"><div class="ttname"><a href="classSVF_1_1ObjTypeInference.html#aee4383a13cda421acb034ea147e33a6d">SVF::ObjTypeInference::defaultType</a></div><div class="ttdeci">const Type * defaultType(const Value *val)</div><div class="ttdoc">Default type.</div><div class="ttdef"><b>Definition:</b> <a href="ObjTypeInference_8cpp_source.html#l00112">ObjTypeInference.cpp:112</a></div></div>
|
|
681
680
|
<div class="ttc" id="anamespaceSVF_html_afc50da46a6ea7c2cf61683bbec4d7c8d"><div class="ttname"><a href="namespaceSVF.html#afc50da46a6ea7c2cf61683bbec4d7c8d">SVF::BitCastInst</a></div><div class="ttdeci">llvm::BitCastInst BitCastInst</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00151">BasicTypes.h:151</a></div></div>
|
|
682
|
-
<div class="ttc" id="
|
|
681
|
+
<div class="ttc" id="anamespaceSVF_html_a4f21e91ff8eaea5207afe5c60dbd78d7"><div class="ttname"><a href="namespaceSVF.html#a4f21e91ff8eaea5207afe5c60dbd78d7">SVF::OrderedSet</a></div><div class="ttdeci">std::set< Key, Compare, Allocator > OrderedSet</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00106">SVFType.h:106</a></div></div>
|
|
682
|
+
<div class="ttc" id="aclassSVF_1_1ObjTypeInference_html_a707f0575f3d70e62a78f08c961ec7dae"><div class="ttname"><a href="classSVF_1_1ObjTypeInference.html#a707f0575f3d70e62a78f08c961ec7dae">SVF::ObjTypeInference::bwfindAllocations</a></div><div class="ttdeci">Set< const Value * > bwfindAllocations(const Value *startValue)</div><div class="ttdoc">Backward collect all possible allocation sites (stack, static, heap) starting from a value.</div><div class="ttdef"><b>Definition:</b> <a href="ObjTypeInference_8cpp_source.html#l00376">ObjTypeInference.cpp:376</a></div></div>
|
|
683
683
|
<div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_aed0b0b9f035057552a6a82154fd88e61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVF::SVFUtil::outs</a></div><div class="ttdeci">std::ostream & outs()</div><div class="ttdoc">Overwrite llvm::outs()</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00050">SVFUtil.h:50</a></div></div>
|
|
684
|
-
<div class="ttc" id="aclassSVF_1_1ObjTypeInference_html_afe926ee3427bb329d189e0c40bb1cd60"><div class="ttname"><a href="classSVF_1_1ObjTypeInference.html#afe926ee3427bb329d189e0c40bb1cd60">SVF::ObjTypeInference::validateTypeCheck</a></div><div class="ttdeci">void validateTypeCheck(const CallBase *cs)</div><div class="ttdoc">Validate type inference.</div><div class="ttdef"><b>Definition:</b> <a href="ObjTypeInference_8cpp_source.html#
|
|
684
|
+
<div class="ttc" id="aclassSVF_1_1ObjTypeInference_html_afe926ee3427bb329d189e0c40bb1cd60"><div class="ttname"><a href="classSVF_1_1ObjTypeInference.html#afe926ee3427bb329d189e0c40bb1cd60">SVF::ObjTypeInference::validateTypeCheck</a></div><div class="ttdeci">void validateTypeCheck(const CallBase *cs)</div><div class="ttdoc">Validate type inference.</div><div class="ttdef"><b>Definition:</b> <a href="ObjTypeInference_8cpp_source.html#l00507">ObjTypeInference.cpp:507</a></div></div>
|
|
685
685
|
<div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_a05dc00b2bd9a8176aae31b6cfffe725d"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a05dc00b2bd9a8176aae31b6cfffe725d">SVF::SVFUtil::sucMsg</a></div><div class="ttdeci">std::string sucMsg(const std::string &msg)</div><div class="ttdoc">Returns successful message by converting a string into green string output.</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00053">SVFUtil.cpp:53</a></div></div>
|
|
686
686
|
<div class="ttc" id="aObjTypeInference_8cpp_html_a5f334de99eb942058f27a1025c346f70"><div class="ttname"><a href="ObjTypeInference_8cpp.html#a5f334de99eb942058f27a1025c346f70">TYPEMALLOC</a></div><div class="ttdeci">const std::string TYPEMALLOC</div><div class="ttdef"><b>Definition:</b> <a href="ObjTypeInference_8cpp_source.html#l00079">ObjTypeInference.cpp:79</a></div></div>
|
|
687
687
|
<div class="ttc" id="aclassSVF_1_1FILOWorkList_html_a071a624c91def82a4bbbf3806c7b7eea"><div class="ttname"><a href="classSVF_1_1FILOWorkList.html#a071a624c91def82a4bbbf3806c7b7eea">SVF::FILOWorkList::empty</a></div><div class="ttdeci">bool empty() const</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00238">WorkList.h:238</a></div></div>
|
|
@@ -693,7 +693,7 @@ $(function() {
|
|
|
693
693
|
<div class="ttc" id="aclassSVF_1_1FILOWorkList_html_a3fd9acb6d09fd142bfd402fdf8cac93b"><div class="ttname"><a href="classSVF_1_1FILOWorkList.html#a3fd9acb6d09fd142bfd402fdf8cac93b">SVF::FILOWorkList::pop</a></div><div class="ttdeci">Data pop()</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00272">WorkList.h:272</a></div></div>
|
|
694
694
|
<div class="ttc" id="aclassSVF_1_1FILOWorkList_html"><div class="ttname"><a href="classSVF_1_1FILOWorkList.html">SVF::FILOWorkList</a></div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00229">WorkList.h:229</a></div></div>
|
|
695
695
|
<div class="ttc" id="aclassSVF_1_1Options_html_aaab923c093730b1670a54f09340b1bd5"><div class="ttname"><a href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">SVF::Options::MaxFieldLimit</a></div><div class="ttdeci">static const Option< u32_t > MaxFieldLimit</div><div class="ttdoc">Maximum number of field derivations for an object.</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00038">Options.h:38</a></div></div>
|
|
696
|
-
<div class="ttc" id="aclassSVF_1_1ObjTypeInference_html_a72da2d7f06e8fee67dc5b3c451fa5dee"><div class="ttname"><a href="classSVF_1_1ObjTypeInference.html#a72da2d7f06e8fee67dc5b3c451fa5dee">SVF::ObjTypeInference::getArgPosInCall</a></div><div class="ttdeci">u32_t getArgPosInCall(const CallBase *callBase, const Value *arg)</div><div class="ttdef"><b>Definition:</b> <a href="ObjTypeInference_8cpp_source.html#
|
|
696
|
+
<div class="ttc" id="aclassSVF_1_1ObjTypeInference_html_a72da2d7f06e8fee67dc5b3c451fa5dee"><div class="ttname"><a href="classSVF_1_1ObjTypeInference.html#a72da2d7f06e8fee67dc5b3c451fa5dee">SVF::ObjTypeInference::getArgPosInCall</a></div><div class="ttdeci">u32_t getArgPosInCall(const CallBase *callBase, const Value *arg)</div><div class="ttdef"><b>Definition:</b> <a href="ObjTypeInference_8cpp_source.html#l00546">ObjTypeInference.cpp:546</a></div></div>
|
|
697
697
|
<div class="ttc" id="aclassSVF_1_1ObjTypeInference_html_a172f97ff9c9a7c90dbec6329c89775ad"><div class="ttname"><a href="classSVF_1_1ObjTypeInference.html#a172f97ff9c9a7c90dbec6329c89775ad">SVF::ObjTypeInference::getLLVMCtx</a></div><div class="ttdeci">LLVMContext & getLLVMCtx()</div><div class="ttdef"><b>Definition:</b> <a href="ObjTypeInference_8cpp_source.html#l00123">ObjTypeInference.cpp:123</a></div></div>
|
|
698
698
|
<div class="ttc" id="aclassSVF_1_1ObjTypeInference_html_a506a18c240f14d1e81fbeb31f8db1760"><div class="ttname"><a href="classSVF_1_1ObjTypeInference.html#a506a18c240f14d1e81fbeb31f8db1760">SVF::ObjTypeInference::inferObjType</a></div><div class="ttdeci">const Type * inferObjType(const Value *startValue)</div><div class="ttdoc">get or infer the type of a value</div><div class="ttdef"><b>Definition:</b> <a href="ObjTypeInference_8cpp_source.html#l00134">ObjTypeInference.cpp:134</a></div></div>
|
|
699
699
|
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_abba4111230f6009bbf50518ee36a9870"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#abba4111230f6009bbf50518ee36a9870">SVF::LLVMUtil::getPtrElementType</a></div><div class="ttdeci">static Type * getPtrElementType(const PointerType *pty)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00099">LLVMUtil.h:99</a></div></div>
|