svf-tools 1.0.891 → 1.0.892
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/AbstractExecution_8cpp_source.html +451 -450
- package/SVF-doxygen/html/AbstractExecution_8h_source.html +11 -11
- package/SVF-doxygen/html/AccessPath_8cpp_source.html +150 -147
- package/SVF-doxygen/html/AccessPath_8h_source.html +6 -6
- package/SVF-doxygen/html/Andersen_8cpp_source.html +1 -1
- package/SVF-doxygen/html/BufOverflowChecker_8cpp_source.html +426 -425
- package/SVF-doxygen/html/BufOverflowChecker_8h_source.html +2 -2
- package/SVF-doxygen/html/CFLAlias_8cpp_source.html +1 -1
- package/SVF-doxygen/html/ConsG_8cpp_source.html +1 -1
- package/SVF-doxygen/html/CppUtil_8cpp_source.html +3 -3
- package/SVF-doxygen/html/CxtStmt_8h_source.html +1 -1
- package/SVF-doxygen/html/DCHG_8cpp_source.html +1 -1
- package/SVF-doxygen/html/DDAClient_8cpp_source.html +1 -1
- package/SVF-doxygen/html/ICFGSimplification_8cpp_source.html +43 -44
- package/SVF-doxygen/html/ICFGWTO_8h_source.html +4 -4
- package/SVF-doxygen/html/ICFG_8cpp_source.html +1 -1
- package/SVF-doxygen/html/LLVMModule_8cpp_source.html +6 -6
- package/SVF-doxygen/html/LLVMUtil_8cpp_source.html +575 -577
- package/SVF-doxygen/html/LLVMUtil_8h_source.html +21 -21
- package/SVF-doxygen/html/LockResultValidator_8cpp_source.html +1 -1
- package/SVF-doxygen/html/MHP_8cpp_source.html +1 -1
- package/SVF-doxygen/html/MemSSA_8cpp_source.html +1 -1
- package/SVF-doxygen/html/ObjTypeInference_8cpp.html +1 -1
- package/SVF-doxygen/html/ObjTypeInference_8cpp_source.html +3 -3
- package/SVF-doxygen/html/PointerAnalysis_8cpp_source.html +1 -1
- package/SVF-doxygen/html/SVFIR2ItvExeState_8cpp_source.html +828 -827
- package/SVF-doxygen/html/SVFIR2ItvExeState_8h_source.html +20 -20
- package/SVF-doxygen/html/SVFIRBuilder_8cpp_source.html +5 -5
- package/SVF-doxygen/html/SVFStatements_8cpp_source.html +1 -1
- package/SVF-doxygen/html/SVFStatements_8h_source.html +1 -1
- package/SVF-doxygen/html/SVFValue_8cpp_source.html +1 -1
- package/SVF-doxygen/html/SVFValue_8h_source.html +1 -1
- package/SVF-doxygen/html/SVFVariables_8cpp_source.html +1 -1
- package/SVF-doxygen/html/Steensgaard_8cpp_source.html +1 -1
- package/SVF-doxygen/html/SymbolTableBuilder_8cpp_source.html +5 -5
- package/SVF-doxygen/html/SymbolTableInfo_8cpp_source.html +1 -1
- package/SVF-doxygen/html/WTO_8h.html +1 -0
- package/SVF-doxygen/html/WTO_8h_source.html +812 -811
- package/SVF-doxygen/html/ae_8cpp.html +46 -47
- package/SVF-doxygen/html/ae_8cpp_source.html +46 -47
- package/SVF-doxygen/html/classSVF_1_1AEAPI.html +432 -431
- package/SVF-doxygen/html/classSVF_1_1AbstractExecution.html +22 -22
- package/SVF-doxygen/html/classSVF_1_1AccessPath.html +136 -133
- package/SVF-doxygen/html/classSVF_1_1ActualINSVFGNode.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1ActualOUTSVFGNode.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1AddrStmt.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1AliasDDAClient.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1Andersen.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1BinaryOPStmt.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1BinaryOPVFGNode.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1BranchStmt.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1BufOverflowCheckerAPI.html +82 -81
- package/SVF-doxygen/html/classSVF_1_1CFLAlias.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1CallCFGEdge.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1CallPE.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1CmpStmt.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1CmpVFGNode.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1CopyStmt.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1CxtStmt.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1CxtThread.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1CxtThreadStmt.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1DCHGraph.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1DoubleFreeChecker.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1FIObjVar.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1ForkJoinAnalysis.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1GepObjVar.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1GepStmt.html +2 -2
- package/SVF-doxygen/html/classSVF_1_1GepValVar.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1ICFG.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1ICFGSimplification.html +43 -44
- package/SVF-doxygen/html/classSVF_1_1InterMSSAPHISVFGNode.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1InterPHIVFGNode.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1IntraCFGEdge.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1IntraICFGNode.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1IntraPHIVFGNode.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1LLVMModuleSet.html +6 -6
- package/SVF-doxygen/html/classSVF_1_1LeakChecker.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1LoadStmt.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1LockResultValidator.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1MHP.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1MTAResultValidator.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1MemObj.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1MemSSA.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1ObjTypeInference.html +3 -3
- package/SVF-doxygen/html/classSVF_1_1ObjVar.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1PHIVFGNode.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1PhiStmt.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1PointerAnalysis.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1RetCFGEdge.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1RetPE.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1SVFIR2ItvExeState.html +792 -791
- package/SVF-doxygen/html/classSVF_1_1SVFIRBuilder.html +5 -5
- package/SVF-doxygen/html/classSVF_1_1SVFValue.html +23 -23
- package/SVF-doxygen/html/classSVF_1_1SelectStmt.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1Steensgaard.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1StoreStmt.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1SymbolTableBuilder.html +4 -4
- package/SVF-doxygen/html/classSVF_1_1TCT.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1TDForkPE.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1TDJoinPE.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1UnaryOPStmt.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1UnaryOPVFGNode.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1ValVar.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1WTO.html +253 -253
- package/SVF-doxygen/html/classSVF_1_1WTOComponent.html +21 -21
- package/SVF-doxygen/html/classSVF_1_1WTOComponentVisitor.html +3 -3
- package/SVF-doxygen/html/classSVF_1_1WTOCycle.html +61 -61
- package/SVF-doxygen/html/classSVF_1_1WTOCycleDepth.html +115 -115
- package/SVF-doxygen/html/classSVF_1_1WTONode.html +31 -31
- package/SVF-doxygen/html/classSVF_1_1WTO_1_1WTOCycleDepthBuilder.html +31 -31
- package/SVF-doxygen/html/namespaceSVF_1_1LLVMUtil.html +503 -505
- package/SVF-doxygen/html/namespaceSVF_1_1cppUtil.html +2 -2
- package/SVF-doxygen/html/structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +1 -1
- package/SVF-doxygen/html/structSVF_1_1has__edgetype.html +1 -1
- package/SVF-doxygen/html/structSVF_1_1has__edgetype_3_01T_00_01std_1_1void__t_3_01typename_01T_1_1EdgeType_01_4_01_4.html +1 -1
- package/SVF-doxygen/html/structSVF_1_1has__nodetype.html +1 -1
- package/SVF-doxygen/html/structSVF_1_1has__nodetype_3_01T_00_01std_1_1void__t_3_01typename_01T_1_1NodeType_01_4_01_4.html +1 -1
- package/SVF-doxygen/html/svf-ex_8cpp.html +12 -12
- package/SVF-doxygen/html/svf-ex_8cpp_source.html +12 -12
- package/package.json +1 -1
- package/svf/include/Graphs/WTO.h +1 -0
- package/svf/lib/AE/Svfexe/AbstractExecution.cpp +1 -0
- package/svf/lib/AE/Svfexe/BufOverflowChecker.cpp +1 -0
- package/svf/lib/AE/Svfexe/ICFGSimplification.cpp +1 -2
- package/svf/lib/AE/Svfexe/SVFIR2ItvExeState.cpp +1 -0
- package/svf/lib/MemoryModel/AccessPath.cpp +4 -1
- package/svf-llvm/lib/LLVMUtil.cpp +1 -2
- package/svf-llvm/lib/SVFIRBuilder.cpp +1 -1
- package/svf-llvm/tools/AE/ae.cpp +1 -2
|
@@ -403,587 +403,585 @@ $(function() {
|
|
|
403
403
|
<div class="line"><a name="l00363"></a><span class="lineno"> 363</span> <span class="comment"> */</span></div>
|
|
404
404
|
<div class="line"><a name="l00364"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a200539f965bff5627abac41920498ee8"> 364</a></span> <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a200539f965bff5627abac41920498ee8">LLVMUtil::getFirstUseViaCastInst</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val)</div>
|
|
405
405
|
<div class="line"><a name="l00365"></a><span class="lineno"> 365</span> {</div>
|
|
406
|
-
<div class="line"><a name="l00366"></a><span class="lineno"> 366</span> 
|
|
407
|
-
<div class="line"><a name="
|
|
408
|
-
<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  <span class="
|
|
409
|
-
<div class="line"><a name="l00370"></a><span class="lineno"> 370</span> 
|
|
410
|
-
<div class="line"><a name="l00371"></a><span class="lineno"> 371</span> 
|
|
411
|
-
<div class="line"><a name="l00372"></a><span class="lineno"> 372</span> 
|
|
412
|
-
<div class="line"><a name="l00373"></a><span class="lineno"> 373</span> 
|
|
413
|
-
<div class="line"><a name="l00374"></a><span class="lineno"> 374</span> 
|
|
414
|
-
<div class="line"><a name="l00375"></a><span class="lineno"> 375</span> 
|
|
415
|
-
<div class="line"><a name="l00376"></a><span class="lineno"> 376</span> 
|
|
416
|
-
<div class="line"><a name="l00377"></a><span class="lineno"> 377</span> 
|
|
417
|
-
<div class="line"><a name="l00378"></a><span class="lineno"> 378</span> 
|
|
418
|
-
<div class="line"><a name="
|
|
419
|
-
<div class="line"><a name="l00383"></a><span class="lineno"
|
|
420
|
-
<div class="line"><a name="l00384"></a><span class="lineno"> 384</span> 
|
|
421
|
-
<div class="line"><a name="l00385"></a><span class="lineno"> 385</span> 
|
|
422
|
-
<div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  <
|
|
423
|
-
<div class="line"><a name="l00387"></a><span class="lineno"> 387</span> 
|
|
424
|
-
<div class="line"><a name="l00388"></a><span class="lineno"> 388</span> 
|
|
425
|
-
<div class="line"><a name="l00389"></a><span class="lineno"> 389</span> 
|
|
426
|
-
<div class="line"><a name="l00390"></a><span class="lineno"> 390</span> 
|
|
427
|
-
<div class="line"><a name="l00391"></a><span class="lineno"> 391</span> 
|
|
428
|
-
<div class="line"><a name="l00392"></a><span class="lineno"> 392</span> 
|
|
429
|
-
<div class="line"><a name="l00393"></a><span class="lineno"> 393</span> 
|
|
430
|
-
<div class="line"><a name="l00394"></a><span class="lineno"> 394</span> 
|
|
431
|
-
<div class="line"><a name="l00395"></a><span class="lineno"> 395</span> 
|
|
432
|
-
<div class="line"><a name="
|
|
433
|
-
<div class="line"><a name="l00400"></a><span class="lineno"
|
|
434
|
-
<div class="line"><a name="l00401"></a><span class="lineno"> 401</span> 
|
|
435
|
-
<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  <a class="code" href="namespaceSVF.html#
|
|
436
|
-
<div class="line"><a name="l00403"></a><span class="lineno"> 403</span> 
|
|
437
|
-
<div class="line"><a name="l00404"></a><span class="lineno"> 404</span> 
|
|
438
|
-
<div class="line"><a name="l00405"></a><span class="lineno"> 405</span> 
|
|
439
|
-
<div class="line"><a name="l00406"></a><span class="lineno"> 406</span> 
|
|
440
|
-
<div class="line"><a name="l00407"></a><span class="lineno"> 407</span> 
|
|
441
|
-
<div class="line"><a name="l00408"></a><span class="lineno"> 408</span> <span class="comment"
|
|
442
|
-
<div class="line"><a name="l00409"></a><span class="lineno"> 409</span> <span class="comment"> *
|
|
443
|
-
<div class="line"><a name="l00410"></a><span class="lineno"> 410</span> <span class="comment"> * llvm::
|
|
444
|
-
<div class="line"><a name="l00411"></a><span class="lineno"> 411</span> <span class="comment">
|
|
445
|
-
<div class="line"><a name="l00412"></a><span class="lineno"> 412</span> <span class="
|
|
446
|
-
<div class="line"><a name="l00413"></a><span class="lineno"
|
|
447
|
-
<div class="line"><a name="l00414"></a><span class="lineno"> 414</span> 
|
|
448
|
-
<div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  <a class="code" href="namespaceSVF.html#
|
|
449
|
-
<div class="line"><a name="l00416"></a><span class="lineno"> 416</span> 
|
|
450
|
-
<div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  </div>
|
|
451
|
-
<div class="line"><a name="l00418"></a><span class="lineno"> 418</span> 
|
|
452
|
-
<div class="line"><a name="l00419"></a><span class="lineno"> 419</span> 
|
|
453
|
-
<div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  </div>
|
|
454
|
-
<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  <span class="
|
|
455
|
-
<div class="line"><a name="l00422"></a><span class="lineno"> 422</span> 
|
|
456
|
-
<div class="line"><a name="l00423"></a><span class="lineno"> 423</span> 
|
|
457
|
-
<div class="line"><a name="l00424"></a><span class="lineno"> 424</span> 
|
|
458
|
-
<div class="line"><a name="l00425"></a><span class="lineno"> 425</span> 
|
|
459
|
-
<div class="line"><a name="l00426"></a><span class="lineno"> 426</span> 
|
|
460
|
-
<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  </div>
|
|
461
|
-
<div class="line"><a name="l00428"></a><span class="lineno"> 428</span> 
|
|
462
|
-
<div class="line"><a name="l00429"></a><span class="lineno"> 429</span> 
|
|
406
|
+
<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  assert(SVFUtil::isa<PointerType>(val->getType()) && <span class="stringliteral">"this value should be a pointer type!"</span>);</div>
|
|
407
|
+
<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *latestUse = <span class="keyword">nullptr</span>;</div>
|
|
408
|
+
<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &it : val->uses())</div>
|
|
409
|
+
<div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  {</div>
|
|
410
|
+
<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  <span class="keywordflow">if</span> (SVFUtil::isa<BitCastInst>(it.getUser()))</div>
|
|
411
|
+
<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  latestUse = it.getUser();</div>
|
|
412
|
+
<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  <span class="keywordflow">else</span></div>
|
|
413
|
+
<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  latestUse = <span class="keyword">nullptr</span>;</div>
|
|
414
|
+
<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  }</div>
|
|
415
|
+
<div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  <span class="keywordflow">return</span> latestUse;</div>
|
|
416
|
+
<div class="line"><a name="l00377"></a><span class="lineno"> 377</span> }</div>
|
|
417
|
+
<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  </div>
|
|
418
|
+
<div class="line"><a name="l00382"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#ab5b55fce942ab6d7995541f3fe0503f8"> 382</a></span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ab5b55fce942ab6d7995541f3fe0503f8">LLVMUtil::getNumOfElements</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* ety)</div>
|
|
419
|
+
<div class="line"><a name="l00383"></a><span class="lineno"> 383</span> {</div>
|
|
420
|
+
<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  assert(ety && <span class="stringliteral">"type is null?"</span>);</div>
|
|
421
|
+
<div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> numOfFields = 1;</div>
|
|
422
|
+
<div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  <span class="keywordflow">if</span> (SVFUtil::isa<StructType, ArrayType>(ety))</div>
|
|
423
|
+
<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  {</div>
|
|
424
|
+
<div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1Options.html#a429c3000ee2ac45119b8c241aa06762c">Options::ModelArrays</a>())</div>
|
|
425
|
+
<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(ety)-><a class="code" href="classSVF_1_1SVFType.html#a05850c17c2dbe42e5602dc8c9a70f3bd">getTypeInfo</a>()-><a class="code" href="classSVF_1_1StInfo.html#a518c82138fcadc6634980566c1c0f762">getNumOfFlattenElements</a>();</div>
|
|
426
|
+
<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  <span class="keywordflow">else</span></div>
|
|
427
|
+
<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(ety)-><a class="code" href="classSVF_1_1SVFType.html#a05850c17c2dbe42e5602dc8c9a70f3bd">getTypeInfo</a>()-><a class="code" href="classSVF_1_1StInfo.html#ae5fad367673315da57a604e64b5889f0">getNumOfFlattenFields</a>();</div>
|
|
428
|
+
<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  }</div>
|
|
429
|
+
<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  <span class="keywordflow">return</span> numOfFields;</div>
|
|
430
|
+
<div class="line"><a name="l00394"></a><span class="lineno"> 394</span> }</div>
|
|
431
|
+
<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  </div>
|
|
432
|
+
<div class="line"><a name="l00399"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#ae617611b584e3d899984c376a6e91987"> 399</a></span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ae617611b584e3d899984c376a6e91987">LLVMUtil::getBBPredecessorNum</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* BB)</div>
|
|
433
|
+
<div class="line"><a name="l00400"></a><span class="lineno"> 400</span> {</div>
|
|
434
|
+
<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> num = 0;</div>
|
|
435
|
+
<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a5c943191dc4e242704943e5f594ae99e">const_pred_iterator</a> it = pred_begin(BB), et = pred_end(BB); it != et; ++it)</div>
|
|
436
|
+
<div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  num++;</div>
|
|
437
|
+
<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  <span class="keywordflow">return</span> num;</div>
|
|
438
|
+
<div class="line"><a name="l00405"></a><span class="lineno"> 405</span> }</div>
|
|
439
|
+
<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  </div>
|
|
440
|
+
<div class="line"><a name="l00407"></a><span class="lineno"> 407</span> <span class="comment">/*</span></div>
|
|
441
|
+
<div class="line"><a name="l00408"></a><span class="lineno"> 408</span> <span class="comment"> * Reference functions:</span></div>
|
|
442
|
+
<div class="line"><a name="l00409"></a><span class="lineno"> 409</span> <span class="comment"> * llvm::parseIRFile (lib/IRReader/IRReader.cpp)</span></div>
|
|
443
|
+
<div class="line"><a name="l00410"></a><span class="lineno"> 410</span> <span class="comment"> * llvm::parseIR (lib/IRReader/IRReader.cpp)</span></div>
|
|
444
|
+
<div class="line"><a name="l00411"></a><span class="lineno"> 411</span> <span class="comment"> */</span></div>
|
|
445
|
+
<div class="line"><a name="l00412"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#ad8a8c32a09340f491fffffcb07dd7a41"> 412</a></span> <span class="keywordtype">bool</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ad8a8c32a09340f491fffffcb07dd7a41">LLVMUtil::isIRFile</a>(<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> &filename)</div>
|
|
446
|
+
<div class="line"><a name="l00413"></a><span class="lineno"> 413</span> {</div>
|
|
447
|
+
<div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  <a class="code" href="namespaceSVF.html#affba423b674a0aba723e33101826e297">llvm::LLVMContext</a> context;</div>
|
|
448
|
+
<div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  <a class="code" href="namespaceSVF.html#a86863d104a3930b3a806935d92ddbf30">llvm::SMDiagnostic</a> err;</div>
|
|
449
|
+
<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  </div>
|
|
450
|
+
<div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  <span class="comment">// Parse the input LLVM IR file into a module</span></div>
|
|
451
|
+
<div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  std::unique_ptr<llvm::Module> module = llvm::parseIRFile(filename, err, context);</div>
|
|
452
|
+
<div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  </div>
|
|
453
|
+
<div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  <span class="comment">// Check if the parsing succeeded</span></div>
|
|
454
|
+
<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  <span class="keywordflow">if</span> (!module)</div>
|
|
455
|
+
<div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  {</div>
|
|
456
|
+
<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  err.print(<span class="stringliteral">"isIRFile"</span>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">llvm::errs</a>());</div>
|
|
457
|
+
<div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>; <span class="comment">// Not an LLVM IR file</span></div>
|
|
458
|
+
<div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  }</div>
|
|
459
|
+
<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  </div>
|
|
460
|
+
<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>; <span class="comment">// It is an LLVM IR file</span></div>
|
|
461
|
+
<div class="line"><a name="l00428"></a><span class="lineno"> 428</span> }</div>
|
|
462
|
+
<div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  </div>
|
|
463
463
|
<div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  </div>
|
|
464
|
-
<div class="line"><a name="
|
|
465
|
-
<div class="line"><a name="l00434"></a><span class="lineno"
|
|
466
|
-
<div class="line"><a name="l00435"></a><span class="lineno"> 435</span> 
|
|
467
|
-
<div class="line"><a name="l00436"></a><span class="lineno"> 436</span> 
|
|
468
|
-
<div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  <span class="
|
|
469
|
-
<div class="line"><a name="l00438"></a><span class="lineno"> 438</span> 
|
|
470
|
-
<div class="line"><a name="l00439"></a><span class="lineno"> 439</span> 
|
|
471
|
-
<div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  <a class="code" href="
|
|
472
|
-
<div class="line"><a name="l00441"></a><span class="lineno"> 441</span> 
|
|
473
|
-
<div class="line"><a name="l00442"></a><span class="lineno"> 442</span> 
|
|
474
|
-
<div class="line"><a name="l00443"></a><span class="lineno"> 443</span> 
|
|
475
|
-
<div class="line"><a name="l00444"></a><span class="lineno"> 444</span> 
|
|
476
|
-
<div class="line"><a name="l00445"></a><span class="lineno"> 445</span> 
|
|
477
|
-
<div class="line"><a name="l00446"></a><span class="lineno"> 446</span> 
|
|
478
|
-
<div class="line"><a name="l00447"></a><span class="lineno"> 447</span> 
|
|
479
|
-
<div class="line"><a name="l00448"></a><span class="lineno"> 448</span> 
|
|
480
|
-
<div class="line"><a name="l00449"></a><span class="lineno"> 449</span> 
|
|
481
|
-
<div class="line"><a name="l00450"></a><span class="lineno"> 450</span> 
|
|
482
|
-
<div class="line"><a name="l00451"></a><span class="lineno"> 451</span> 
|
|
483
|
-
<div class="line"><a name="l00452"></a><span class="lineno"> 452</span> 
|
|
484
|
-
<div class="line"><a name="l00453"></a><span class="lineno"> 453</span> 
|
|
485
|
-
<div class="line"><a name="l00454"></a><span class="lineno"> 454</span> 
|
|
486
|
-
<div class="line"><a name="l00455"></a><span class="lineno"> 455</span> 
|
|
487
|
-
<div class="line"><a name="l00456"></a><span class="lineno"> 456</span> 
|
|
488
|
-
<div class="line"><a name="l00457"></a><span class="lineno"> 457</span> 
|
|
489
|
-
<div class="line"><a name="l00458"></a><span class="lineno"> 458</span> 
|
|
490
|
-
<div class="line"><a name="l00459"></a><span class="lineno"> 459</span> 
|
|
491
|
-
<div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  </div>
|
|
492
|
-
<div class="line"><a name="l00461"></a><span class="lineno"
|
|
493
|
-
<div class="line"><a name="l00462"></a><span class="lineno"> 462</span> 
|
|
494
|
-
<div class="line"><a name="l00463"></a><span class="lineno"> 463</span> 
|
|
495
|
-
<div class="line"><a name="l00464"></a><span class="lineno"> 464</span> 
|
|
496
|
-
<div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  </div>
|
|
497
|
-
<div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  <a class="code" href="namespaceSVF.html#
|
|
498
|
-
<div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  <
|
|
499
|
-
<div class="line"><a name="l00468"></a><span class="lineno"> 468</span> 
|
|
500
|
-
<div class="line"><a name="l00469"></a><span class="lineno"> 469</span> 
|
|
501
|
-
<div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  </div>
|
|
502
|
-
<div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  <
|
|
503
|
-
<div class="line"><a name="l00472"></a><span class="lineno"> 472</span> 
|
|
504
|
-
<div class="line"><a name="l00473"></a><span class="lineno"> 473</span> 
|
|
505
|
-
<div class="line"><a name="l00474"></a><span class="lineno"> 474</span> 
|
|
506
|
-
<div class="line"><a name="l00475"></a><span class="lineno"> 475</span> 
|
|
507
|
-
<div class="line"><a name="l00476"></a><span class="lineno"> 476</span> 
|
|
508
|
-
<div class="line"><a name="l00477"></a><span class="lineno"> 477</span> 
|
|
509
|
-
<div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  <
|
|
510
|
-
<div class="line"><a name="l00479"></a><span class="lineno"> 479</span> 
|
|
511
|
-
<div class="line"><a name="l00480"></a><span class="lineno"> 480</span> 
|
|
512
|
-
<div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  </div>
|
|
513
|
-
<div class="line"><a name="l00482"></a><span class="lineno"> 482</span> 
|
|
514
|
-
<div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  </div>
|
|
515
|
-
<div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  <span class="
|
|
516
|
-
<div class="line"><a name="l00485"></a><span class="lineno"> 485</span> 
|
|
517
|
-
<div class="line"><a name="l00486"></a><span class="lineno"> 486</span> 
|
|
518
|
-
<div class="line"><a name="l00487"></a><span class="lineno"> 487</span> 
|
|
519
|
-
<div class="line"><a name="l00488"></a><span class="lineno"> 488</span> 
|
|
520
|
-
<div class="line"><a name="l00489"></a><span class="lineno"> 489</span> 
|
|
521
|
-
<div class="line"><a name="l00490"></a><span class="lineno"> 490</span> 
|
|
522
|
-
<div class="line"><a name="l00491"></a><span class="lineno"> 491</span> 
|
|
523
|
-
<div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  </div>
|
|
524
|
-
<div class="line"><a name="l00493"></a><span class="lineno"> 493</span>  <span class="
|
|
525
|
-
<div class="line"><a name="l00494"></a><span class="lineno"> 494</span> 
|
|
526
|
-
<div class="line"><a name="l00495"></a><span class="lineno"> 495</span> 
|
|
527
|
-
<div class="line"><a name="l00496"></a><span class="lineno"> 496</span> 
|
|
528
|
-
<div class="line"><a name="l00497"></a><span class="lineno"> 497</span> 
|
|
529
|
-
<div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  </div>
|
|
530
|
-
<div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  <span class="
|
|
531
|
-
<div class="line"><a name="l00500"></a><span class="lineno"> 500</span> 
|
|
532
|
-
<div class="line"><a name="l00501"></a><span class="lineno"> 501</span> 
|
|
533
|
-
<div class="line"><a name="l00502"></a><span class="lineno"> 502</span> 
|
|
534
|
-
<div class="line"><a name="l00503"></a><span class="lineno"> 503</span> 
|
|
535
|
-
<div class="line"><a name="l00504"></a><span class="lineno"> 504</span> 
|
|
536
|
-
<div class="line"><a name="l00505"></a><span class="lineno"> 505</span>  </div>
|
|
537
|
-
<div class="line"><a name="l00506"></a><span class="lineno"> 506</span> 
|
|
538
|
-
<div class="line"><a name="l00507"></a><span class="lineno"> 507</span> 
|
|
539
|
-
<div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  </div>
|
|
540
|
-
<div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  <a class="code" href="namespaceSVF.html#
|
|
541
|
-
<div class="line"><a name="l00510"></a><span class="lineno"> 510</span> 
|
|
542
|
-
<div class="line"><a name="l00511"></a><span class="lineno"> 511</span> 
|
|
543
|
-
<div class="line"><a name="l00512"></a><span class="lineno"> 512</span> 
|
|
544
|
-
<div class="line"><a name="l00513"></a><span class="lineno"> 513</span> 
|
|
545
|
-
<div class="line"><a name="
|
|
546
|
-
<div class="line"><a name="l00516"></a><span class="lineno"
|
|
547
|
-
<div class="line"><a name="l00517"></a><span class="lineno"> 517</span> 
|
|
548
|
-
<div class="line"><a name="l00518"></a><span class="lineno"> 518</span> 
|
|
549
|
-
<div class="line"><a name="l00519"></a><span class="lineno"> 519</span> 
|
|
550
|
-
<div class="line"><a name="l00520"></a><span class="lineno"> 520</span> 
|
|
551
|
-
<div class="line"><a name="l00521"></a><span class="lineno"> 521</span> 
|
|
552
|
-
<div class="line"><a name="l00522"></a><span class="lineno"> 522</span> 
|
|
553
|
-
<div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  <
|
|
554
|
-
<div class="line"><a name="l00524"></a><span class="lineno"> 524</span> 
|
|
555
|
-
<div class="line"><a name="l00525"></a><span class="lineno"> 525</span> 
|
|
556
|
-
<div class="line"><a name="l00526"></a><span class="lineno"> 526</span> 
|
|
557
|
-
<div class="line"><a name="l00527"></a><span class="lineno"> 527</span> 
|
|
558
|
-
<div class="line"><a name="l00528"></a><span class="lineno"> 528</span> 
|
|
559
|
-
<div class="line"><a name="l00529"></a><span class="lineno"> 529</span> 
|
|
560
|
-
<div class="line"><a name="l00530"></a><span class="lineno"> 530</span> 
|
|
561
|
-
<div class="line"><a name="l00531"></a><span class="lineno"> 531</span> 
|
|
562
|
-
<div class="line"><a name="l00532"></a><span class="lineno"> 532</span> 
|
|
563
|
-
<div class="line"><a name="l00533"></a><span class="lineno"> 533</span> 
|
|
564
|
-
<div class="line"><a name="l00534"></a><span class="lineno"> 534</span>  </div>
|
|
565
|
-
<div class="line"><a name="l00535"></a><span class="lineno"
|
|
566
|
-
<div class="line"><a name="l00536"></a><span class="lineno"> 536</span> 
|
|
567
|
-
<div class="line"><a name="l00537"></a><span class="lineno"> 537</span>  <span class="
|
|
568
|
-
<div class="line"><a name="l00538"></a><span class="lineno"> 538</span> 
|
|
569
|
-
<div class="line"><a name="l00539"></a><span class="lineno"> 539</span> 
|
|
570
|
-
<div class="line"><a name="l00540"></a><span class="lineno"> 540</span> 
|
|
571
|
-
<div class="line"><a name="l00541"></a><span class="lineno"> 541</span> 
|
|
572
|
-
<div class="line"><a name="l00542"></a><span class="lineno"> 542</span>  <span class="
|
|
573
|
-
<div class="line"><a name="l00543"></a><span class="lineno"> 543</span> 
|
|
574
|
-
<div class="line"><a name="l00544"></a><span class="lineno"> 544</span> 
|
|
575
|
-
<div class="line"><a name="l00545"></a><span class="lineno"> 545</span> 
|
|
576
|
-
<div class="line"><a name="l00546"></a><span class="lineno"> 546</span> 
|
|
577
|
-
<div class="line"><a name="l00547"></a><span class="lineno"> 547</span> 
|
|
578
|
-
<div class="line"><a name="l00548"></a><span class="lineno"> 548</span> 
|
|
579
|
-
<div class="line"><a name="l00549"></a><span class="lineno"> 549</span> 
|
|
580
|
-
<div class="line"><a name="l00550"></a><span class="lineno"
|
|
581
|
-
<div class="line"><a name="l00551"></a><span class="lineno"> 551</span> 
|
|
582
|
-
<div class="line"><a name="l00552"></a><span class="lineno"> 552</span> 
|
|
583
|
-
<div class="line"><a name="l00553"></a><span class="lineno"> 553</span> 
|
|
584
|
-
<div class="line"><a name="l00554"></a><span class="lineno"> 554</span> 
|
|
585
|
-
<div class="line"><a name="l00555"></a><span class="lineno"> 555</span> 
|
|
586
|
-
<div class="line"><a name="l00556"></a><span class="lineno"> 556</span> 
|
|
587
|
-
<div class="line"><a name="l00557"></a><span class="lineno"> 557</span> 
|
|
588
|
-
<div class="line"><a name="l00558"></a><span class="lineno"> 558</span>  </div>
|
|
589
|
-
<div class="line"><a name="l00559"></a><span class="lineno"> 559</span>  <span class="
|
|
590
|
-
<div class="line"><a name="l00560"></a><span class="lineno"> 560</span> 
|
|
591
|
-
<div class="line"><a name="l00561"></a><span class="lineno"> 561</span> 
|
|
592
|
-
<div class="line"><a name="l00562"></a><span class="lineno"> 562</span> 
|
|
593
|
-
<div class="line"><a name="
|
|
594
|
-
<div class="line"><a name="l00565"></a><span class="lineno"
|
|
595
|
-
<div class="line"><a name="l00566"></a><span class="lineno"> 566</span> 
|
|
596
|
-
<div class="line"><a name="l00567"></a><span class="lineno"> 567</span> 
|
|
597
|
-
<div class="line"><a name="l00568"></a><span class="lineno"> 568</span> 
|
|
598
|
-
<div class="line"><a name="l00569"></a><span class="lineno"> 569</span>  </div>
|
|
599
|
-
<div class="line"><a name="l00570"></a><span class="lineno"> 570</span>  <a class="code" href="
|
|
600
|
-
<div class="line"><a name="l00571"></a><span class="lineno"> 571</span> 
|
|
601
|
-
<div class="line"><a name="l00572"></a><span class="lineno"> 572</span> 
|
|
602
|
-
<div class="line"><a name="
|
|
603
|
-
<div class="line"><a name="l00575"></a><span class="lineno"> 575</span> 
|
|
604
|
-
<div class="line"><a name="
|
|
605
|
-
<div class="line"><a name="
|
|
606
|
-
<div class="line"><a name="l00585"></a><span class="lineno"> 585</span> 
|
|
607
|
-
<div class="line"><a name="l00586"></a><span class="lineno"> 586</span> 
|
|
608
|
-
<div class="line"><a name="l00587"></a><span class="lineno"> 587</span> 
|
|
609
|
-
<div class="line"><a name="l00588"></a><span class="lineno"> 588</span> 
|
|
610
|
-
<div class="line"><a name="l00589"></a><span class="lineno"> 589</span> 
|
|
611
|
-
<div class="line"><a name="l00590"></a><span class="lineno"> 590</span>  <
|
|
612
|
-
<div class="line"><a name="l00591"></a><span class="lineno"> 591</span> 
|
|
613
|
-
<div class="line"><a name="l00592"></a><span class="lineno"> 592</span> 
|
|
614
|
-
<div class="line"><a name="l00593"></a><span class="lineno"> 593</span> 
|
|
615
|
-
<div class="line"><a name="l00594"></a><span class="lineno"> 594</span> 
|
|
616
|
-
<div class="line"><a name="l00595"></a><span class="lineno"> 595</span> 
|
|
617
|
-
<div class="line"><a name="l00596"></a><span class="lineno"> 596</span>  </div>
|
|
618
|
-
<div class="line"><a name="l00597"></a><span class="lineno"> 597</span> 
|
|
619
|
-
<div class="line"><a name="l00598"></a><span class="lineno"> 598</span> 
|
|
620
|
-
<div class="line"><a name="l00599"></a><span class="lineno"> 599</span> 
|
|
621
|
-
<div class="line"><a name="l00600"></a><span class="lineno"> 600</span> 
|
|
622
|
-
<div class="line"><a name="l00601"></a><span class="lineno"> 601</span> 
|
|
623
|
-
<div class="line"><a name="l00602"></a><span class="lineno"> 602</span> 
|
|
624
|
-
<div class="line"><a name="l00603"></a><span class="lineno"> 603</span> 
|
|
625
|
-
<div class="line"><a name="l00604"></a><span class="lineno"> 604</span> 
|
|
626
|
-
<div class="line"><a name="l00605"></a><span class="lineno"> 605</span> 
|
|
627
|
-
<div class="line"><a name="l00606"></a><span class="lineno"> 606</span>  <span class="
|
|
628
|
-
<div class="line"><a name="l00607"></a><span class="lineno"> 607</span> 
|
|
629
|
-
<div class="line"><a name="l00608"></a><span class="lineno"> 608</span> 
|
|
630
|
-
<div class="line"><a name="l00609"></a><span class="lineno"> 609</span>  <
|
|
631
|
-
<div class="line"><a name="l00610"></a><span class="lineno"> 610</span> 
|
|
632
|
-
<div class="line"><a name="l00611"></a><span class="lineno"> 611</span> 
|
|
633
|
-
<div class="line"><a name="l00612"></a><span class="lineno"> 612</span> 
|
|
634
|
-
<div class="line"><a name="l00613"></a><span class="lineno"
|
|
635
|
-
<div class="line"><a name="l00614"></a><span class="lineno"> 614</span> 
|
|
636
|
-
<div class="line"><a name="l00615"></a><span class="lineno"> 615</span> 
|
|
637
|
-
<div class="line"><a name="l00616"></a><span class="lineno"> 616</span>  <span class="comment">//
|
|
638
|
-
<div class="line"><a name="l00617"></a><span class="lineno"> 617</span>  <span class="
|
|
639
|
-
<div class="line"><a name="l00618"></a><span class="lineno"> 618</span>  <span class="keywordtype">bool</span>
|
|
640
|
-
<div class="line"><a name="l00619"></a><span class="lineno"> 619</span> 
|
|
641
|
-
<div class="line"><a name="l00620"></a><span class="lineno"> 620</span>  </div>
|
|
642
|
-
<div class="line"><a name="l00621"></a><span class="lineno"> 621</span> 
|
|
643
|
-
<div class="line"><a name="l00622"></a><span class="lineno"> 622</span> 
|
|
644
|
-
<div class="line"><a name="l00623"></a><span class="lineno"> 623</span> 
|
|
645
|
-
<div class="line"><a name="l00624"></a><span class="lineno"> 624</span>  <span class="
|
|
646
|
-
<div class="line"><a name="l00625"></a><span class="lineno"> 625</span> 
|
|
647
|
-
<div class="line"><a name="l00626"></a><span class="lineno"> 626</span> 
|
|
648
|
-
<div class="line"><a name="l00627"></a><span class="lineno"> 627</span>  <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a>
|
|
649
|
-
<div class="line"><a name="l00628"></a><span class="lineno"> 628</span>  <span class="
|
|
650
|
-
<div class="line"><a name="l00629"></a><span class="lineno"> 629</span> 
|
|
651
|
-
<div class="line"><a name="l00630"></a><span class="lineno"> 630</span> 
|
|
652
|
-
<div class="line"><a name="l00631"></a><span class="lineno"> 631</span> 
|
|
653
|
-
<div class="line"><a name="l00632"></a><span class="lineno"> 632</span> 
|
|
654
|
-
<div class="line"><a name="l00633"></a><span class="lineno"> 633</span> 
|
|
655
|
-
<div class="line"><a name="l00634"></a><span class="lineno"> 634</span>  <span class="
|
|
656
|
-
<div class="line"><a name="l00635"></a><span class="lineno"> 635</span> 
|
|
657
|
-
<div class="line"><a name="l00636"></a><span class="lineno"> 636</span> 
|
|
658
|
-
<div class="line"><a name="l00637"></a><span class="lineno"> 637</span>  </div>
|
|
659
|
-
<div class="line"><a name="l00638"></a><span class="lineno"> 638</span> 
|
|
660
|
-
<div class="line"><a name="l00639"></a><span class="lineno"> 639</span> 
|
|
661
|
-
<div class="line"><a name="l00640"></a><span class="lineno"> 640</span>  </div>
|
|
662
|
-
<div class="line"><a name="l00641"></a><span class="lineno"
|
|
663
|
-
<div class="line"><a name="l00642"></a><span class="lineno"> 642</span> 
|
|
664
|
-
<div class="line"><a name="l00643"></a><span class="lineno"> 643</span> 
|
|
665
|
-
<div class="line"><a name="l00644"></a><span class="lineno"> 644</span> 
|
|
666
|
-
<div class="line"><a name="l00645"></a><span class="lineno"> 645</span> 
|
|
667
|
-
<div class="line"><a name="l00646"></a><span class="lineno"
|
|
668
|
-
<div class="line"><a name="l00647"></a><span class="lineno"> 647</span> 
|
|
669
|
-
<div class="line"><a name="l00648"></a><span class="lineno"> 648</span> 
|
|
670
|
-
<div class="line"><a name="l00649"></a><span class="lineno"> 649</span> 
|
|
671
|
-
<div class="line"><a name="l00650"></a><span class="lineno"> 650</span> 
|
|
672
|
-
<div class="line"><a name="l00651"></a><span class="lineno"> 651</span> 
|
|
673
|
-
<div class="line"><a name="l00652"></a><span class="lineno"> 652</span> 
|
|
674
|
-
<div class="line"><a name="l00653"></a><span class="lineno"> 653</span> 
|
|
675
|
-
<div class="line"><a name="l00654"></a><span class="lineno"> 654</span> 
|
|
676
|
-
<div class="line"><a name="l00655"></a><span class="lineno"> 655</span> 
|
|
677
|
-
<div class="line"><a name="l00656"></a><span class="lineno"
|
|
678
|
-
<div class="line"><a name="l00657"></a><span class="lineno"> 657</span> 
|
|
679
|
-
<div class="line"><a name="l00658"></a><span class="lineno"> 658</span>  <span class="
|
|
680
|
-
<div class="line"><a name="l00659"></a><span class="lineno"> 659</span> 
|
|
681
|
-
<div class="line"><a name="l00660"></a><span class="lineno"> 660</span> 
|
|
682
|
-
<div class="line"><a name="l00661"></a><span class="lineno"> 661</span> 
|
|
683
|
-
<div class="line"><a name="l00662"></a><span class="lineno"> 662</span> 
|
|
684
|
-
<div class="line"><a name="l00663"></a><span class="lineno"> 663</span> 
|
|
685
|
-
<div class="line"><a name="l00664"></a><span class="lineno"> 664</span> 
|
|
686
|
-
<div class="line"><a name="l00665"></a><span class="lineno"
|
|
687
|
-
<div class="line"><a name="l00666"></a><span class="lineno"> 666</span> 
|
|
688
|
-
<div class="line"><a name="l00667"></a><span class="lineno"> 667</span>  </div>
|
|
689
|
-
<div class="line"><a name="
|
|
690
|
-
<div class="line"><a name="l00670"></a><span class="lineno"> 670</span> 
|
|
691
|
-
<div class="line"><a name="l00671"></a><span class="lineno"> 671</span> 
|
|
692
|
-
<div class="line"><a name="l00672"></a><span class="lineno"> 672</span> 
|
|
693
|
-
<div class="line"><a name="l00673"></a><span class="lineno"> 673</span> 
|
|
694
|
-
<div class="line"><a name="l00674"></a><span class="lineno"> 674</span> 
|
|
695
|
-
<div class="line"><a name="
|
|
696
|
-
<div class="line"><a name="l00679"></a><span class="lineno"
|
|
697
|
-
<div class="line"><a name="l00680"></a><span class="lineno"> 680</span> {
|
|
698
|
-
<div class="line"><a name="l00681"></a><span class="lineno"> 681</span> 
|
|
699
|
-
<div class="line"><a name="l00682"></a><span class="lineno"> 682</span>  </div>
|
|
700
|
-
<div class="line"><a name="l00683"></a><span class="lineno"> 683</span> 
|
|
701
|
-
<div class="line"><a name="l00684"></a><span class="lineno"> 684</span> 
|
|
702
|
-
<div class="line"><a name="l00685"></a><span class="lineno"> 685</span> 
|
|
703
|
-
<div class="line"><a name="l00686"></a><span class="lineno"> 686</span>  </div>
|
|
704
|
-
<div class="line"><a name="l00687"></a><span class="lineno"> 687</span> 
|
|
705
|
-
<div class="line"><a name="l00688"></a><span class="lineno"> 688</span> 
|
|
706
|
-
<div class="line"><a name="l00689"></a><span class="lineno"> 689</span> 
|
|
707
|
-
<div class="line"><a name="l00690"></a><span class="lineno"> 690</span> 
|
|
708
|
-
<div class="line"><a name="l00691"></a><span class="lineno"> 691</span> 
|
|
709
|
-
<div class="line"><a name="l00692"></a><span class="lineno"> 692</span> 
|
|
710
|
-
<div class="line"><a name="l00693"></a><span class="lineno"> 693</span> 
|
|
711
|
-
<div class="line"><a name="l00694"></a><span class="lineno"> 694</span> 
|
|
712
|
-
<div class="line"><a name="l00695"></a><span class="lineno"> 695</span> 
|
|
713
|
-
<div class="line"><a name="l00696"></a><span class="lineno"> 696</span> 
|
|
714
|
-
<div class="line"><a name="l00697"></a><span class="lineno"> 697</span> 
|
|
715
|
-
<div class="line"><a name="l00698"></a><span class="lineno"> 698</span> 
|
|
716
|
-
<div class="line"><a name="l00699"></a><span class="lineno"> 699</span> 
|
|
717
|
-
<div class="line"><a name="l00700"></a><span class="lineno"> 700</span> 
|
|
718
|
-
<div class="line"><a name="l00701"></a><span class="lineno"> 701</span> 
|
|
719
|
-
<div class="line"><a name="l00702"></a><span class="lineno"> 702</span> 
|
|
720
|
-
<div class="line"><a name="l00703"></a><span class="lineno"> 703</span> 
|
|
721
|
-
<div class="line"><a name="l00704"></a><span class="lineno"> 704</span>  <span class="keywordtype">unsigned</span>
|
|
722
|
-
<div class="line"><a name="l00705"></a><span class="lineno"> 705</span>  <
|
|
723
|
-
<div class="line"><a name="l00706"></a><span class="lineno"> 706</span>  <
|
|
724
|
-
<div class="line"><a name="l00707"></a><span class="lineno"> 707</span>  <span class="
|
|
725
|
-
<div class="line"><a name="l00708"></a><span class="lineno"> 708</span> 
|
|
726
|
-
<div class="line"><a name="l00709"></a><span class="lineno"> 709</span> 
|
|
727
|
-
<div class="line"><a name="l00710"></a><span class="lineno"> 710</span>  <span class="
|
|
728
|
-
<div class="line"><a name="l00711"></a><span class="lineno"> 711</span> 
|
|
729
|
-
<div class="line"><a name="l00712"></a><span class="lineno"> 712</span> 
|
|
730
|
-
<div class="line"><a name="l00713"></a><span class="lineno"> 713</span> 
|
|
731
|
-
<div class="line"><a name="l00714"></a><span class="lineno"> 714</span> 
|
|
732
|
-
<div class="line"><a name="l00715"></a><span class="lineno"> 715</span> 
|
|
733
|
-
<div class="line"><a name="l00716"></a><span class="lineno"> 716</span> 
|
|
734
|
-
<div class="line"><a name="l00717"></a><span class="lineno"> 717</span> 
|
|
735
|
-
<div class="line"><a name="l00718"></a><span class="lineno"> 718</span> 
|
|
736
|
-
<div class="line"><a name="l00719"></a><span class="lineno"> 719</span> 
|
|
737
|
-
<div class="line"><a name="l00720"></a><span class="lineno"> 720</span> 
|
|
738
|
-
<div class="line"><a name="l00721"></a><span class="lineno"> 721</span> 
|
|
739
|
-
<div class="line"><a name="l00722"></a><span class="lineno"> 722</span> 
|
|
740
|
-
<div class="line"><a name="l00723"></a><span class="lineno"> 723</span> 
|
|
741
|
-
<div class="line"><a name="l00724"></a><span class="lineno"> 724</span> 
|
|
742
|
-
<div class="line"><a name="l00725"></a><span class="lineno"> 725</span> 
|
|
743
|
-
<div class="line"><a name="l00726"></a><span class="lineno"> 726</span> 
|
|
744
|
-
<div class="line"><a name="l00727"></a><span class="lineno"> 727</span> 
|
|
745
|
-
<div class="line"><a name="l00728"></a><span class="lineno"> 728</span> 
|
|
746
|
-
<div class="line"><a name="l00729"></a><span class="lineno"> 729</span> 
|
|
747
|
-
<div class="line"><a name="l00730"></a><span class="lineno"> 730</span> 
|
|
748
|
-
<div class="line"><a name="l00731"></a><span class="lineno"> 731</span> 
|
|
749
|
-
<div class="line"><a name="l00732"></a><span class="lineno"> 732</span> 
|
|
750
|
-
<div class="line"><a name="l00733"></a><span class="lineno"> 733</span> 
|
|
751
|
-
<div class="line"><a name="l00734"></a><span class="lineno"> 734</span> 
|
|
752
|
-
<div class="line"><a name="l00735"></a><span class="lineno"> 735</span> 
|
|
753
|
-
<div class="line"><a name="l00736"></a><span class="lineno"> 736</span> 
|
|
754
|
-
<div class="line"><a name="l00737"></a><span class="lineno"> 737</span>  <
|
|
755
|
-
<div class="line"><a name="l00738"></a><span class="lineno"> 738</span> 
|
|
756
|
-
<div class="line"><a name="l00739"></a><span class="lineno"> 739</span> 
|
|
757
|
-
<div class="line"><a name="l00740"></a><span class="lineno"> 740</span> 
|
|
758
|
-
<div class="line"><a name="l00741"></a><span class="lineno"> 741</span> 
|
|
759
|
-
<div class="line"><a name="l00742"></a><span class="lineno"> 742</span>  llvm::
|
|
760
|
-
<div class="line"><a name="l00743"></a><span class="lineno"> 743</span> 
|
|
761
|
-
<div class="line"><a name="l00744"></a><span class="lineno"> 744</span> 
|
|
762
|
-
<div class="line"><a name="l00745"></a><span class="lineno"> 745</span> 
|
|
763
|
-
<div class="line"><a name="l00746"></a><span class="lineno"> 746</span>  </div>
|
|
764
|
-
<div class="line"><a name="l00747"></a><span class="lineno"> 747</span> 
|
|
765
|
-
<div class="line"><a name="l00748"></a><span class="lineno"> 748</span> 
|
|
766
|
-
<div class="line"><a name="l00749"></a><span class="lineno"> 749</span> 
|
|
767
|
-
<div class="line"><a name="l00750"></a><span class="lineno"> 750</span> 
|
|
768
|
-
<div class="line"><a name="l00751"></a><span class="lineno"> 751</span> 
|
|
769
|
-
<div class="line"><a name="l00752"></a><span class="lineno"> 752</span> 
|
|
770
|
-
<div class="line"><a name="l00753"></a><span class="lineno"> 753</span> 
|
|
771
|
-
<div class="line"><a name="l00754"></a><span class="lineno"> 754</span> 
|
|
772
|
-
<div class="line"><a name="l00755"></a><span class="lineno"> 755</span> 
|
|
773
|
-
<div class="line"><a name="l00756"></a><span class="lineno"> 756</span> 
|
|
774
|
-
<div class="line"><a name="l00757"></a><span class="lineno"> 757</span> 
|
|
775
|
-
<div class="line"><a name="l00758"></a><span class="lineno"> 758</span> 
|
|
776
|
-
<div class="line"><a name="l00759"></a><span class="lineno"> 759</span> 
|
|
777
|
-
<div class="line"><a name="l00760"></a><span class="lineno"> 760</span> 
|
|
778
|
-
<div class="line"><a name="l00761"></a><span class="lineno"> 761</span> 
|
|
779
|
-
<div class="line"><a name="l00762"></a><span class="lineno"> 762</span> 
|
|
780
|
-
<div class="line"><a name="l00763"></a><span class="lineno"> 763</span> 
|
|
781
|
-
<div class="line"><a name="l00764"></a><span class="lineno"> 764</span> 
|
|
782
|
-
<div class="line"><a name="l00765"></a><span class="lineno"> 765</span> 
|
|
783
|
-
<div class="line"><a name="l00766"></a><span class="lineno"> 766</span> 
|
|
784
|
-
<div class="line"><a name="l00767"></a><span class="lineno"> 767</span> 
|
|
785
|
-
<div class="line"><a name="l00768"></a><span class="lineno"> 768</span> 
|
|
786
|
-
<div class="line"><a name="l00769"></a><span class="lineno"> 769</span> 
|
|
787
|
-
<div class="line"><a name="l00770"></a><span class="lineno"> 770</span> 
|
|
788
|
-
<div class="line"><a name="l00771"></a><span class="lineno"> 771</span>  }
|
|
789
|
-
<div class="line"><a name="l00772"></a><span class="lineno"> 772</span> 
|
|
790
|
-
<div class="line"><a name="l00773"></a><span class="lineno"> 773</span>  </div>
|
|
791
|
-
<div class="line"><a name="l00774"></a><span class="lineno"> 774</span> 
|
|
792
|
-
<div class="line"><a name="l00775"></a><span class="lineno"> 775</span> 
|
|
793
|
-
<div class="line"><a name="l00776"></a><span class="lineno"> 776</span> 
|
|
794
|
-
<div class="line"><a name="l00777"></a><span class="lineno"> 777</span> 
|
|
464
|
+
<div class="line"><a name="l00433"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#accdd44093d6d145dc92edeaaff3f5732"> 433</a></span> <span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#accdd44093d6d145dc92edeaaff3f5732">LLVMUtil::processArguments</a>(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> **argv, <span class="keywordtype">int</span> &arg_num, <span class="keywordtype">char</span> **arg_value,</div>
|
|
465
|
+
<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  std::vector<std::string> &moduleNameVec)</div>
|
|
466
|
+
<div class="line"><a name="l00435"></a><span class="lineno"> 435</span> {</div>
|
|
467
|
+
<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  <span class="keywordtype">bool</span> first_ir_file = <span class="keyword">true</span>;</div>
|
|
468
|
+
<div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < argc; ++i)</div>
|
|
469
|
+
<div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  {</div>
|
|
470
|
+
<div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> argument(argv[i]);</div>
|
|
471
|
+
<div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#ad8a8c32a09340f491fffffcb07dd7a41">LLVMUtil::isIRFile</a>(argument))</div>
|
|
472
|
+
<div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  {</div>
|
|
473
|
+
<div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  <span class="keywordflow">if</span> (find(moduleNameVec.begin(), moduleNameVec.end(), argument)</div>
|
|
474
|
+
<div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  == moduleNameVec.end())</div>
|
|
475
|
+
<div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  moduleNameVec.push_back(argument);</div>
|
|
476
|
+
<div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  <span class="keywordflow">if</span> (first_ir_file)</div>
|
|
477
|
+
<div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  {</div>
|
|
478
|
+
<div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  arg_value[arg_num] = argv[i];</div>
|
|
479
|
+
<div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  arg_num++;</div>
|
|
480
|
+
<div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  first_ir_file = <span class="keyword">false</span>;</div>
|
|
481
|
+
<div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  }</div>
|
|
482
|
+
<div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  }</div>
|
|
483
|
+
<div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  <span class="keywordflow">else</span></div>
|
|
484
|
+
<div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  {</div>
|
|
485
|
+
<div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  arg_value[arg_num] = argv[i];</div>
|
|
486
|
+
<div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  arg_num++;</div>
|
|
487
|
+
<div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  }</div>
|
|
488
|
+
<div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  }</div>
|
|
489
|
+
<div class="line"><a name="l00458"></a><span class="lineno"> 458</span> }</div>
|
|
490
|
+
<div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  </div>
|
|
491
|
+
<div class="line"><a name="l00460"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a2acb79d8c24884ee2dcbba37d98021d9"> 460</a></span> <span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2acb79d8c24884ee2dcbba37d98021d9">LLVMUtil::removeFunAnnotations</a>(<a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<Function*></a>& removedFuncList)</div>
|
|
492
|
+
<div class="line"><a name="l00461"></a><span class="lineno"> 461</span> {</div>
|
|
493
|
+
<div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  <span class="keywordflow">if</span> (removedFuncList.empty())</div>
|
|
494
|
+
<div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  <span class="keywordflow">return</span>; <span class="comment">// No functions to remove annotations in extapi.bc module</span></div>
|
|
495
|
+
<div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  </div>
|
|
496
|
+
<div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  <a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>* module = (*removedFuncList.begin())->getParent();</div>
|
|
497
|
+
<div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* glob = module->getGlobalVariable(<span class="stringliteral">"llvm.global.annotations"</span>);</div>
|
|
498
|
+
<div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  <span class="keywordflow">if</span> (glob == <span class="keyword">nullptr</span> || !glob->hasInitializer())</div>
|
|
499
|
+
<div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  <span class="keywordflow">return</span>;</div>
|
|
500
|
+
<div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  </div>
|
|
501
|
+
<div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  <a class="code" href="namespaceSVF.html#a5ae718cba37d8e34d2946530dc098c8e">ConstantArray</a>* ca = SVFUtil::dyn_cast<ConstantArray>(glob->getInitializer());</div>
|
|
502
|
+
<div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  <span class="keywordflow">if</span> (ca == <span class="keyword">nullptr</span>)</div>
|
|
503
|
+
<div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  <span class="keywordflow">return</span>;</div>
|
|
504
|
+
<div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  </div>
|
|
505
|
+
<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  std::vector<Constant*> newAnnotations;</div>
|
|
506
|
+
<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i < ca->getNumOperands(); ++i)</div>
|
|
507
|
+
<div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  {</div>
|
|
508
|
+
<div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  <a class="code" href="namespaceSVF.html#a2b28f48dde0a9a91d251e654ce1f9477">ConstantStruct</a>* structAn = SVFUtil::dyn_cast<ConstantStruct>(ca->getOperand(i));</div>
|
|
509
|
+
<div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  <span class="keywordflow">if</span> (structAn == <span class="keyword">nullptr</span>)</div>
|
|
510
|
+
<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  <span class="keywordflow">continue</span>;</div>
|
|
511
|
+
<div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  </div>
|
|
512
|
+
<div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* annotatedFunc = <span class="keyword">nullptr</span>;</div>
|
|
513
|
+
<div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  </div>
|
|
514
|
+
<div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  <span class="comment">// Non-opague pointer, try to cast to ConstantExpr and check for BitCast</span></div>
|
|
515
|
+
<div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* expr = SVFUtil::dyn_cast<ConstantExpr>(structAn->getOperand(0)))</div>
|
|
516
|
+
<div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  {</div>
|
|
517
|
+
<div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  <span class="keywordflow">if</span> (expr->getOpcode() == Instruction::BitCast)</div>
|
|
518
|
+
<div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  {</div>
|
|
519
|
+
<div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  annotatedFunc = SVFUtil::dyn_cast<Function>(expr->getOperand(0));</div>
|
|
520
|
+
<div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  }</div>
|
|
521
|
+
<div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  }</div>
|
|
522
|
+
<div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  </div>
|
|
523
|
+
<div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  <span class="comment">// Opague pointer, If the above method didn't work, try casting directly to Function</span></div>
|
|
524
|
+
<div class="line"><a name="l00493"></a><span class="lineno"> 493</span>  <span class="keywordflow">if</span> (!annotatedFunc)</div>
|
|
525
|
+
<div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  {</div>
|
|
526
|
+
<div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  annotatedFunc = SVFUtil::dyn_cast<Function>(structAn->getOperand(0));</div>
|
|
527
|
+
<div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  }</div>
|
|
528
|
+
<div class="line"><a name="l00497"></a><span class="lineno"> 497</span>  </div>
|
|
529
|
+
<div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  <span class="comment">// Process the annotated function if it's not in the removed list</span></div>
|
|
530
|
+
<div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  <span class="keywordflow">if</span> (annotatedFunc && std::find(removedFuncList.begin(), removedFuncList.end(), annotatedFunc) == removedFuncList.end())</div>
|
|
531
|
+
<div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  {</div>
|
|
532
|
+
<div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  newAnnotations.push_back(structAn);</div>
|
|
533
|
+
<div class="line"><a name="l00502"></a><span class="lineno"> 502</span>  }</div>
|
|
534
|
+
<div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  }</div>
|
|
535
|
+
<div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  </div>
|
|
536
|
+
<div class="line"><a name="l00505"></a><span class="lineno"> 505</span>  <span class="keywordflow">if</span> (newAnnotations.size() == ca->getNumOperands())</div>
|
|
537
|
+
<div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  <span class="keywordflow">return</span>; <span class="comment">// No annotations to remove</span></div>
|
|
538
|
+
<div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  </div>
|
|
539
|
+
<div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  <a class="code" href="namespaceSVF.html#a146d286041987860388da3d8bc85cee3">ArrayType</a>* annotationsType = ArrayType::get(ca->getType()->getElementType(), newAnnotations.size());</div>
|
|
540
|
+
<div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  <a class="code" href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">Constant</a>* newCA = ConstantArray::get(annotationsType, newAnnotations);</div>
|
|
541
|
+
<div class="line"><a name="l00510"></a><span class="lineno"> 510</span>  </div>
|
|
542
|
+
<div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  glob->setInitializer(newCA);</div>
|
|
543
|
+
<div class="line"><a name="l00512"></a><span class="lineno"> 512</span> }</div>
|
|
544
|
+
<div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  </div>
|
|
545
|
+
<div class="line"><a name="l00515"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a47d2af43ff12d9e1014fa19256619466"> 515</a></span> std::vector<const Function *> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a47d2af43ff12d9e1014fa19256619466">LLVMUtil::getCalledFunctions</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>)</div>
|
|
546
|
+
<div class="line"><a name="l00516"></a><span class="lineno"> 516</span> {</div>
|
|
547
|
+
<div class="line"><a name="l00517"></a><span class="lineno"> 517</span>  std::vector<const Function *> calledFunctions;</div>
|
|
548
|
+
<div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> &I : instructions(<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>))</div>
|
|
549
|
+
<div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  {</div>
|
|
550
|
+
<div class="line"><a name="l00520"></a><span class="lineno"> 520</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a> *callInst = SVFUtil::dyn_cast<CallBase>(&I))</div>
|
|
551
|
+
<div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  {</div>
|
|
552
|
+
<div class="line"><a name="l00522"></a><span class="lineno"> 522</span>  <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *calledFunction = callInst->getCalledFunction();</div>
|
|
553
|
+
<div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  <span class="keywordflow">if</span> (calledFunction)</div>
|
|
554
|
+
<div class="line"><a name="l00524"></a><span class="lineno"> 524</span>  {</div>
|
|
555
|
+
<div class="line"><a name="l00525"></a><span class="lineno"> 525</span>  calledFunctions.push_back(calledFunction);</div>
|
|
556
|
+
<div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  std::vector<const Function *> nestedCalledFunctions = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a47d2af43ff12d9e1014fa19256619466">getCalledFunctions</a>(calledFunction);</div>
|
|
557
|
+
<div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  calledFunctions.insert(calledFunctions.end(), nestedCalledFunctions.begin(), nestedCalledFunctions.end());</div>
|
|
558
|
+
<div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  }</div>
|
|
559
|
+
<div class="line"><a name="l00529"></a><span class="lineno"> 529</span>  }</div>
|
|
560
|
+
<div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  }</div>
|
|
561
|
+
<div class="line"><a name="l00531"></a><span class="lineno"> 531</span>  <span class="keywordflow">return</span> calledFunctions;</div>
|
|
562
|
+
<div class="line"><a name="l00532"></a><span class="lineno"> 532</span> }</div>
|
|
563
|
+
<div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  </div>
|
|
564
|
+
<div class="line"><a name="l00534"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#acee7c2fb08e111eda4d91ce5479de05e"> 534</a></span> <span class="keywordtype">bool</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#acee7c2fb08e111eda4d91ce5479de05e">LLVMUtil::isUnusedGlobalVariable</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>& global)</div>
|
|
565
|
+
<div class="line"><a name="l00535"></a><span class="lineno"> 535</span> {</div>
|
|
566
|
+
<div class="line"><a name="l00536"></a><span class="lineno"> 536</span>  <span class="comment">// Check if it is an empty global annotations</span></div>
|
|
567
|
+
<div class="line"><a name="l00537"></a><span class="lineno"> 537</span>  <span class="keywordflow">if</span> (global.getName() == <span class="stringliteral">"llvm.global.annotations"</span> && SVFUtil::isa<ConstantArray>(global.getInitializer()))</div>
|
|
568
|
+
<div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
569
|
+
<div class="line"><a name="l00539"></a><span class="lineno"> 539</span>  <span class="keywordflow">else</span></div>
|
|
570
|
+
<div class="line"><a name="l00540"></a><span class="lineno"> 540</span>  {</div>
|
|
571
|
+
<div class="line"><a name="l00541"></a><span class="lineno"> 541</span>  <span class="comment">// Check if any global strings has at least one effective user</span></div>
|
|
572
|
+
<div class="line"><a name="l00542"></a><span class="lineno"> 542</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span>& use : global.uses())</div>
|
|
573
|
+
<div class="line"><a name="l00543"></a><span class="lineno"> 543</span>  <span class="keywordflow">if</span> (use.getUser()->getNumUses() != 0)</div>
|
|
574
|
+
<div class="line"><a name="l00544"></a><span class="lineno"> 544</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
575
|
+
<div class="line"><a name="l00545"></a><span class="lineno"> 545</span>  }</div>
|
|
576
|
+
<div class="line"><a name="l00546"></a><span class="lineno"> 546</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
|
577
|
+
<div class="line"><a name="l00547"></a><span class="lineno"> 547</span> }</div>
|
|
578
|
+
<div class="line"><a name="l00548"></a><span class="lineno"> 548</span>  </div>
|
|
579
|
+
<div class="line"><a name="l00549"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#ae2b444bb3e7a27d77386f588a78af8e2"> 549</a></span> <span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ae2b444bb3e7a27d77386f588a78af8e2">LLVMUtil::removeUnusedGlobalVariables</a>(<a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>* module)</div>
|
|
580
|
+
<div class="line"><a name="l00550"></a><span class="lineno"> 550</span> {</div>
|
|
581
|
+
<div class="line"><a name="l00551"></a><span class="lineno"> 551</span>  assert(module && <span class="stringliteral">"Null module pointer!"</span>);</div>
|
|
582
|
+
<div class="line"><a name="l00552"></a><span class="lineno"> 552</span>  std::vector<GlobalVariable*> unusedGlobals;</div>
|
|
583
|
+
<div class="line"><a name="l00553"></a><span class="lineno"> 553</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>& global : module->globals())</div>
|
|
584
|
+
<div class="line"><a name="l00554"></a><span class="lineno"> 554</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#acee7c2fb08e111eda4d91ce5479de05e">isUnusedGlobalVariable</a>(global))</div>
|
|
585
|
+
<div class="line"><a name="l00555"></a><span class="lineno"> 555</span>  <span class="comment">// Record unused global variables</span></div>
|
|
586
|
+
<div class="line"><a name="l00556"></a><span class="lineno"> 556</span>  unusedGlobals.push_back(&global);</div>
|
|
587
|
+
<div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  </div>
|
|
588
|
+
<div class="line"><a name="l00558"></a><span class="lineno"> 558</span>  <span class="comment">// Delete unused global variables</span></div>
|
|
589
|
+
<div class="line"><a name="l00559"></a><span class="lineno"> 559</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* global : unusedGlobals)</div>
|
|
590
|
+
<div class="line"><a name="l00560"></a><span class="lineno"> 560</span>  global->eraseFromParent();</div>
|
|
591
|
+
<div class="line"><a name="l00561"></a><span class="lineno"> 561</span> }</div>
|
|
592
|
+
<div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  </div>
|
|
593
|
+
<div class="line"><a name="l00564"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a484bbbc9713fc4be173943e6bc177fb5"> 564</a></span> <span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a484bbbc9713fc4be173943e6bc177fb5">LLVMUtil::removeUnusedFuncsAndAnnotationsAndGlobalVariables</a>(<a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<Function*></a> removedFuncList)</div>
|
|
594
|
+
<div class="line"><a name="l00565"></a><span class="lineno"> 565</span> {</div>
|
|
595
|
+
<div class="line"><a name="l00566"></a><span class="lineno"> 566</span>  <span class="keywordflow">if</span> (removedFuncList.empty())</div>
|
|
596
|
+
<div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  <span class="keywordflow">return</span>;</div>
|
|
597
|
+
<div class="line"><a name="l00568"></a><span class="lineno"> 568</span>  </div>
|
|
598
|
+
<div class="line"><a name="l00569"></a><span class="lineno"> 569</span>  <a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>* mod = (*removedFuncList.begin())->getParent();</div>
|
|
599
|
+
<div class="line"><a name="l00570"></a><span class="lineno"> 570</span>  <span class="keywordflow">if</span> (mod->getName().str() != <a class="code" href="classSVF_1_1ExtAPI.html#a58a764c27354d5f9b70995d30de65f1d">ExtAPI::getExtAPI</a>()-><a class="code" href="classSVF_1_1ExtAPI.html#a26bc352dbfd1b2fe34106a73f1f6d50c">getExtBcPath</a>())</div>
|
|
600
|
+
<div class="line"><a name="l00571"></a><span class="lineno"> 571</span>  <span class="keywordflow">return</span>;</div>
|
|
601
|
+
<div class="line"><a name="l00572"></a><span class="lineno"> 572</span>  </div>
|
|
602
|
+
<div class="line"><a name="l00574"></a><span class="lineno"> 574</span>  <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2acb79d8c24884ee2dcbba37d98021d9">LLVMUtil::removeFunAnnotations</a>(removedFuncList);</div>
|
|
603
|
+
<div class="line"><a name="l00575"></a><span class="lineno"> 575</span>  </div>
|
|
604
|
+
<div class="line"><a name="l00582"></a><span class="lineno"> 582</span>  std::vector<Function*> funcsToKeep;</div>
|
|
605
|
+
<div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  <span class="keyword">auto</span> isCalledFunction = [](<a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">llvm::Function</a>* <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>)</div>
|
|
606
|
+
<div class="line"><a name="l00585"></a><span class="lineno"> 585</span>  {</div>
|
|
607
|
+
<div class="line"><a name="l00586"></a><span class="lineno"> 586</span>  assert(<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a> && <span class="stringliteral">"Null function pointer!"</span>);</div>
|
|
608
|
+
<div class="line"><a name="l00587"></a><span class="lineno"> 587</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span>& use : <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>->uses())</div>
|
|
609
|
+
<div class="line"><a name="l00588"></a><span class="lineno"> 588</span>  {</div>
|
|
610
|
+
<div class="line"><a name="l00589"></a><span class="lineno"> 589</span>  <a class="code" href="namespaceSVF.html#afc1b50355821e7299df03b026e36f1df">llvm::User</a>* user = use.getUser();</div>
|
|
611
|
+
<div class="line"><a name="l00590"></a><span class="lineno"> 590</span>  <span class="keywordflow">if</span> (llvm::isa<llvm::CallBase>(user))</div>
|
|
612
|
+
<div class="line"><a name="l00591"></a><span class="lineno"> 591</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
|
613
|
+
<div class="line"><a name="l00592"></a><span class="lineno"> 592</span>  }</div>
|
|
614
|
+
<div class="line"><a name="l00593"></a><span class="lineno"> 593</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
615
|
+
<div class="line"><a name="l00594"></a><span class="lineno"> 594</span>  };</div>
|
|
616
|
+
<div class="line"><a name="l00595"></a><span class="lineno"> 595</span>  </div>
|
|
617
|
+
<div class="line"><a name="l00596"></a><span class="lineno"> 596</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func : removedFuncList)</div>
|
|
618
|
+
<div class="line"><a name="l00597"></a><span class="lineno"> 597</span>  {</div>
|
|
619
|
+
<div class="line"><a name="l00598"></a><span class="lineno"> 598</span>  <span class="keywordflow">if</span> (isCalledFunction(func))</div>
|
|
620
|
+
<div class="line"><a name="l00599"></a><span class="lineno"> 599</span>  <span class="comment">// Record first kind function(which does not contain any invocation statements)</span></div>
|
|
621
|
+
<div class="line"><a name="l00600"></a><span class="lineno"> 600</span>  funcsToKeep.push_back(func);</div>
|
|
622
|
+
<div class="line"><a name="l00601"></a><span class="lineno"> 601</span>  <span class="keywordflow">else</span></div>
|
|
623
|
+
<div class="line"><a name="l00602"></a><span class="lineno"> 602</span>  <span class="comment">// Delete second kind function(which contains invocation statements)</span></div>
|
|
624
|
+
<div class="line"><a name="l00603"></a><span class="lineno"> 603</span>  func->eraseFromParent();</div>
|
|
625
|
+
<div class="line"><a name="l00604"></a><span class="lineno"> 604</span>  }</div>
|
|
626
|
+
<div class="line"><a name="l00605"></a><span class="lineno"> 605</span>  <span class="comment">// Delete first kind functions</span></div>
|
|
627
|
+
<div class="line"><a name="l00606"></a><span class="lineno"> 606</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func : funcsToKeep)</div>
|
|
628
|
+
<div class="line"><a name="l00607"></a><span class="lineno"> 607</span>  func->eraseFromParent();</div>
|
|
629
|
+
<div class="line"><a name="l00608"></a><span class="lineno"> 608</span>  <span class="comment">// Delete unused global variables</span></div>
|
|
630
|
+
<div class="line"><a name="l00609"></a><span class="lineno"> 609</span>  <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ae2b444bb3e7a27d77386f588a78af8e2">removeUnusedGlobalVariables</a>(mod);</div>
|
|
631
|
+
<div class="line"><a name="l00610"></a><span class="lineno"> 610</span> }</div>
|
|
632
|
+
<div class="line"><a name="l00611"></a><span class="lineno"> 611</span>  </div>
|
|
633
|
+
<div class="line"><a name="l00612"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#af4c9c5d445107b1816a4be93852ba612"> 612</a></span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#af4c9c5d445107b1816a4be93852ba612">LLVMUtil::restoreFuncName</a>(<a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> funcName)</div>
|
|
634
|
+
<div class="line"><a name="l00613"></a><span class="lineno"> 613</span> {</div>
|
|
635
|
+
<div class="line"><a name="l00614"></a><span class="lineno"> 614</span>  assert(!funcName.empty() && <span class="stringliteral">"Empty function name"</span>);</div>
|
|
636
|
+
<div class="line"><a name="l00615"></a><span class="lineno"> 615</span>  <span class="comment">// Some function names change due to mangling, such as "fopen" to "\01_fopen" on macOS.</span></div>
|
|
637
|
+
<div class="line"><a name="l00616"></a><span class="lineno"> 616</span>  <span class="comment">// Since C function names cannot include '.', change the function name from llvm.memcpy.p0i8.p0i8.i64 to llvm_memcpy_p0i8_p0i8_i64."</span></div>
|
|
638
|
+
<div class="line"><a name="l00617"></a><span class="lineno"> 617</span>  <span class="keywordtype">bool</span> hasSpecialPrefix = funcName[0] == <span class="charliteral">'\01'</span>;</div>
|
|
639
|
+
<div class="line"><a name="l00618"></a><span class="lineno"> 618</span>  <span class="keywordtype">bool</span> hasDot = funcName.find(<span class="charliteral">'.'</span>) != std::string::npos;</div>
|
|
640
|
+
<div class="line"><a name="l00619"></a><span class="lineno"> 619</span>  </div>
|
|
641
|
+
<div class="line"><a name="l00620"></a><span class="lineno"> 620</span>  <span class="keywordflow">if</span> (!hasDot && !hasSpecialPrefix)</div>
|
|
642
|
+
<div class="line"><a name="l00621"></a><span class="lineno"> 621</span>  <span class="keywordflow">return</span> funcName;</div>
|
|
643
|
+
<div class="line"><a name="l00622"></a><span class="lineno"> 622</span>  </div>
|
|
644
|
+
<div class="line"><a name="l00623"></a><span class="lineno"> 623</span>  <span class="comment">// Remove prefix "\01_" or "\01"</span></div>
|
|
645
|
+
<div class="line"><a name="l00624"></a><span class="lineno"> 624</span>  <span class="keywordflow">if</span> (hasSpecialPrefix)</div>
|
|
646
|
+
<div class="line"><a name="l00625"></a><span class="lineno"> 625</span>  {</div>
|
|
647
|
+
<div class="line"><a name="l00626"></a><span class="lineno"> 626</span>  <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> prefix1 = <span class="stringliteral">"\01_"</span>;</div>
|
|
648
|
+
<div class="line"><a name="l00627"></a><span class="lineno"> 627</span>  <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> prefix2 = <span class="stringliteral">"\01"</span>;</div>
|
|
649
|
+
<div class="line"><a name="l00628"></a><span class="lineno"> 628</span>  <span class="keywordflow">if</span> (funcName.substr(0, prefix1.length()) == prefix1)</div>
|
|
650
|
+
<div class="line"><a name="l00629"></a><span class="lineno"> 629</span>  funcName = funcName.substr(prefix1.length());</div>
|
|
651
|
+
<div class="line"><a name="l00630"></a><span class="lineno"> 630</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (funcName.substr(0, prefix2.length()) == prefix2)</div>
|
|
652
|
+
<div class="line"><a name="l00631"></a><span class="lineno"> 631</span>  funcName = funcName.substr(prefix2.length());</div>
|
|
653
|
+
<div class="line"><a name="l00632"></a><span class="lineno"> 632</span>  }</div>
|
|
654
|
+
<div class="line"><a name="l00633"></a><span class="lineno"> 633</span>  <span class="comment">// Replace '.' with '_'</span></div>
|
|
655
|
+
<div class="line"><a name="l00634"></a><span class="lineno"> 634</span>  <span class="keywordflow">if</span> (hasDot)</div>
|
|
656
|
+
<div class="line"><a name="l00635"></a><span class="lineno"> 635</span>  std::replace(funcName.begin(), funcName.end(), <span class="charliteral">'.'</span>, <span class="charliteral">'_'</span>);</div>
|
|
657
|
+
<div class="line"><a name="l00636"></a><span class="lineno"> 636</span>  </div>
|
|
658
|
+
<div class="line"><a name="l00637"></a><span class="lineno"> 637</span>  <span class="keywordflow">return</span> funcName;</div>
|
|
659
|
+
<div class="line"><a name="l00638"></a><span class="lineno"> 638</span> }</div>
|
|
660
|
+
<div class="line"><a name="l00639"></a><span class="lineno"> 639</span>  </div>
|
|
661
|
+
<div class="line"><a name="l00640"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#ab8511d0e24da255dd518457568326c70"> 640</a></span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ab8511d0e24da255dd518457568326c70">LLVMUtil::getFunction</a>(<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a>& <a class="code" href="cJSON_8h.html#a25d22ecc7e656d2c59332072684e8766">name</a>)</div>
|
|
662
|
+
<div class="line"><a name="l00641"></a><span class="lineno"> 641</span> {</div>
|
|
663
|
+
<div class="line"><a name="l00642"></a><span class="lineno"> 642</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">getSVFFunction</a>(<a class="code" href="cJSON_8h.html#a25d22ecc7e656d2c59332072684e8766">name</a>);</div>
|
|
664
|
+
<div class="line"><a name="l00643"></a><span class="lineno"> 643</span> }</div>
|
|
665
|
+
<div class="line"><a name="l00644"></a><span class="lineno"> 644</span>  </div>
|
|
666
|
+
<div class="line"><a name="l00645"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a973ee05189ca5bbe832be00f2be9baa4"> 645</a></span> <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a973ee05189ca5bbe832be00f2be9baa4">LLVMUtil::getGlobalRep</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val)</div>
|
|
667
|
+
<div class="line"><a name="l00646"></a><span class="lineno"> 646</span> {</div>
|
|
668
|
+
<div class="line"><a name="l00647"></a><span class="lineno"> 647</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* gvar = SVFUtil::dyn_cast<GlobalVariable>(val))</div>
|
|
669
|
+
<div class="line"><a name="l00648"></a><span class="lineno"> 648</span>  {</div>
|
|
670
|
+
<div class="line"><a name="l00649"></a><span class="lineno"> 649</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()->hasGlobalRep(gvar))</div>
|
|
671
|
+
<div class="line"><a name="l00650"></a><span class="lineno"> 650</span>  val = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#a757bf149437cce22163c764ea9993e12">getGlobalRep</a>(gvar);</div>
|
|
672
|
+
<div class="line"><a name="l00651"></a><span class="lineno"> 651</span>  }</div>
|
|
673
|
+
<div class="line"><a name="l00652"></a><span class="lineno"> 652</span>  <span class="keywordflow">return</span> val;</div>
|
|
674
|
+
<div class="line"><a name="l00653"></a><span class="lineno"> 653</span> }</div>
|
|
675
|
+
<div class="line"><a name="l00654"></a><span class="lineno"> 654</span>  </div>
|
|
676
|
+
<div class="line"><a name="l00655"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a09683d4d88a50fa621809c734465f94d"> 655</a></span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a09683d4d88a50fa621809c734465f94d">LLVMUtil::getTypeSizeInBytes</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>)</div>
|
|
677
|
+
<div class="line"><a name="l00656"></a><span class="lineno"> 656</span> {</div>
|
|
678
|
+
<div class="line"><a name="l00657"></a><span class="lineno"> 657</span>  <span class="comment">// if the type has size then simply return it, otherwise just return 0</span></div>
|
|
679
|
+
<div class="line"><a name="l00658"></a><span class="lineno"> 658</span>  <span class="keywordflow">if</span>(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>->isSized())</div>
|
|
680
|
+
<div class="line"><a name="l00659"></a><span class="lineno"> 659</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a151fd7fb2b2ebe72af7c417defbb4f4d">getDataLayout</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()->getMainLLVMModule())->getTypeStoreSize(<span class="keyword">const_cast<</span><a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>*<span class="keyword">></span>(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>));</div>
|
|
681
|
+
<div class="line"><a name="l00660"></a><span class="lineno"> 660</span>  <span class="keywordflow">else</span></div>
|
|
682
|
+
<div class="line"><a name="l00661"></a><span class="lineno"> 661</span>  <span class="keywordflow">return</span> 0;</div>
|
|
683
|
+
<div class="line"><a name="l00662"></a><span class="lineno"> 662</span> }</div>
|
|
684
|
+
<div class="line"><a name="l00663"></a><span class="lineno"> 663</span>  </div>
|
|
685
|
+
<div class="line"><a name="l00664"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a2b5fdf455c5dd40c0baa60185e5e41c6"> 664</a></span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a09683d4d88a50fa621809c734465f94d">LLVMUtil::getTypeSizeInBytes</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a2bf58575ac7d068e0f1a4cf953b9e6cb">StructType</a> *sty, <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> field_idx)</div>
|
|
686
|
+
<div class="line"><a name="l00665"></a><span class="lineno"> 665</span> {</div>
|
|
687
|
+
<div class="line"><a name="l00666"></a><span class="lineno"> 666</span>  </div>
|
|
688
|
+
<div class="line"><a name="l00667"></a><span class="lineno"> 667</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a52c8654c221bb53a59f70ea3cb1e5c45">StructLayout</a> *stTySL = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a151fd7fb2b2ebe72af7c417defbb4f4d">getDataLayout</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()->getMainLLVMModule())->getStructLayout( <span class="keyword">const_cast<</span><a class="code" href="namespaceSVF.html#a2bf58575ac7d068e0f1a4cf953b9e6cb">StructType</a> *<span class="keyword">></span>(sty) );</div>
|
|
689
|
+
<div class="line"><a name="l00669"></a><span class="lineno"> 669</span>  <span class="keywordflow">if</span>(sty->isOpaque())</div>
|
|
690
|
+
<div class="line"><a name="l00670"></a><span class="lineno"> 670</span>  <span class="keywordflow">return</span> 0;</div>
|
|
691
|
+
<div class="line"><a name="l00671"></a><span class="lineno"> 671</span>  <span class="keywordflow">else</span></div>
|
|
692
|
+
<div class="line"><a name="l00672"></a><span class="lineno"> 672</span>  <span class="keywordflow">return</span> stTySL->getElementOffset(field_idx);</div>
|
|
693
|
+
<div class="line"><a name="l00673"></a><span class="lineno"> 673</span> }</div>
|
|
694
|
+
<div class="line"><a name="l00674"></a><span class="lineno"> 674</span>  </div>
|
|
695
|
+
<div class="line"><a name="l00678"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a8e4add30bd0ce00d3f2aa2e31c64fef8"> 678</a></span> <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a8e4add30bd0ce00d3f2aa2e31c64fef8">LLVMUtil::getSourceLoc</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val )</div>
|
|
696
|
+
<div class="line"><a name="l00679"></a><span class="lineno"> 679</span> {</div>
|
|
697
|
+
<div class="line"><a name="l00680"></a><span class="lineno"> 680</span>  <span class="keywordflow">if</span>(val==<span class="keyword">nullptr</span>) <span class="keywordflow">return</span> <span class="stringliteral">"{ empty val }"</span>;</div>
|
|
698
|
+
<div class="line"><a name="l00681"></a><span class="lineno"> 681</span>  </div>
|
|
699
|
+
<div class="line"><a name="l00682"></a><span class="lineno"> 682</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div>
|
|
700
|
+
<div class="line"><a name="l00683"></a><span class="lineno"> 683</span>  std::stringstream rawstr(str);</div>
|
|
701
|
+
<div class="line"><a name="l00684"></a><span class="lineno"> 684</span>  rawstr << <span class="stringliteral">"{ "</span>;</div>
|
|
702
|
+
<div class="line"><a name="l00685"></a><span class="lineno"> 685</span>  </div>
|
|
703
|
+
<div class="line"><a name="l00686"></a><span class="lineno"> 686</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst = SVFUtil::dyn_cast<Instruction>(val))</div>
|
|
704
|
+
<div class="line"><a name="l00687"></a><span class="lineno"> 687</span>  {</div>
|
|
705
|
+
<div class="line"><a name="l00688"></a><span class="lineno"> 688</span>  <span class="keywordflow">if</span> (SVFUtil::isa<AllocaInst>(inst))</div>
|
|
706
|
+
<div class="line"><a name="l00689"></a><span class="lineno"> 689</span>  {</div>
|
|
707
|
+
<div class="line"><a name="l00690"></a><span class="lineno"> 690</span>  <span class="keywordflow">for</span> (llvm::DbgInfoIntrinsic *DII : FindDbgAddrUses(<span class="keyword">const_cast<</span><a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>*<span class="keyword">></span>(inst)))</div>
|
|
708
|
+
<div class="line"><a name="l00691"></a><span class="lineno"> 691</span>  {</div>
|
|
709
|
+
<div class="line"><a name="l00692"></a><span class="lineno"> 692</span>  <span class="keywordflow">if</span> (llvm::DbgDeclareInst *DDI = SVFUtil::dyn_cast<llvm::DbgDeclareInst>(DII))</div>
|
|
710
|
+
<div class="line"><a name="l00693"></a><span class="lineno"> 693</span>  {</div>
|
|
711
|
+
<div class="line"><a name="l00694"></a><span class="lineno"> 694</span>  llvm::DIVariable *DIVar = SVFUtil::cast<llvm::DIVariable>(DDI->getVariable());</div>
|
|
712
|
+
<div class="line"><a name="l00695"></a><span class="lineno"> 695</span>  rawstr << <span class="stringliteral">"\"ln\": "</span> << DIVar->getLine() << <span class="stringliteral">", \"fl\": \""</span> << DIVar->getFilename().str() << <span class="stringliteral">"\""</span>;</div>
|
|
713
|
+
<div class="line"><a name="l00696"></a><span class="lineno"> 696</span>  <span class="keywordflow">break</span>;</div>
|
|
714
|
+
<div class="line"><a name="l00697"></a><span class="lineno"> 697</span>  }</div>
|
|
715
|
+
<div class="line"><a name="l00698"></a><span class="lineno"> 698</span>  }</div>
|
|
716
|
+
<div class="line"><a name="l00699"></a><span class="lineno"> 699</span>  }</div>
|
|
717
|
+
<div class="line"><a name="l00700"></a><span class="lineno"> 700</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF.html#ad3d3cec1813411f039211c86236f7adb">MDNode</a> *N = inst->getMetadata(<span class="stringliteral">"dbg"</span>)) <span class="comment">// Here I is an LLVM instruction</span></div>
|
|
718
|
+
<div class="line"><a name="l00701"></a><span class="lineno"> 701</span>  {</div>
|
|
719
|
+
<div class="line"><a name="l00702"></a><span class="lineno"> 702</span>  llvm::DILocation* Loc = SVFUtil::cast<llvm::DILocation>(N); <span class="comment">// DILocation is in DebugInfo.h</span></div>
|
|
720
|
+
<div class="line"><a name="l00703"></a><span class="lineno"> 703</span>  <span class="keywordtype">unsigned</span> Line = Loc->getLine();</div>
|
|
721
|
+
<div class="line"><a name="l00704"></a><span class="lineno"> 704</span>  <span class="keywordtype">unsigned</span> Column = Loc->getColumn();</div>
|
|
722
|
+
<div class="line"><a name="l00705"></a><span class="lineno"> 705</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> File = Loc->getFilename().str();</div>
|
|
723
|
+
<div class="line"><a name="l00706"></a><span class="lineno"> 706</span>  <span class="comment">//StringRef Dir = Loc.getDirectory();</span></div>
|
|
724
|
+
<div class="line"><a name="l00707"></a><span class="lineno"> 707</span>  <span class="keywordflow">if</span>(File.empty() || Line == 0)</div>
|
|
725
|
+
<div class="line"><a name="l00708"></a><span class="lineno"> 708</span>  {</div>
|
|
726
|
+
<div class="line"><a name="l00709"></a><span class="lineno"> 709</span>  <span class="keyword">auto</span> inlineLoc = Loc->getInlinedAt();</div>
|
|
727
|
+
<div class="line"><a name="l00710"></a><span class="lineno"> 710</span>  <span class="keywordflow">if</span>(inlineLoc)</div>
|
|
728
|
+
<div class="line"><a name="l00711"></a><span class="lineno"> 711</span>  {</div>
|
|
729
|
+
<div class="line"><a name="l00712"></a><span class="lineno"> 712</span>  Line = inlineLoc->getLine();</div>
|
|
730
|
+
<div class="line"><a name="l00713"></a><span class="lineno"> 713</span>  Column = inlineLoc->getColumn();</div>
|
|
731
|
+
<div class="line"><a name="l00714"></a><span class="lineno"> 714</span>  File = inlineLoc->getFilename().str();</div>
|
|
732
|
+
<div class="line"><a name="l00715"></a><span class="lineno"> 715</span>  }</div>
|
|
733
|
+
<div class="line"><a name="l00716"></a><span class="lineno"> 716</span>  }</div>
|
|
734
|
+
<div class="line"><a name="l00717"></a><span class="lineno"> 717</span>  rawstr << <span class="stringliteral">"\"ln\": "</span> << Line << <span class="stringliteral">", \"cl\": "</span> << Column << <span class="stringliteral">", \"fl\": \""</span> << File << <span class="stringliteral">"\""</span>;</div>
|
|
735
|
+
<div class="line"><a name="l00718"></a><span class="lineno"> 718</span>  }</div>
|
|
736
|
+
<div class="line"><a name="l00719"></a><span class="lineno"> 719</span>  }</div>
|
|
737
|
+
<div class="line"><a name="l00720"></a><span class="lineno"> 720</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>(val))</div>
|
|
738
|
+
<div class="line"><a name="l00721"></a><span class="lineno"> 721</span>  {</div>
|
|
739
|
+
<div class="line"><a name="l00722"></a><span class="lineno"> 722</span>  <span class="keywordflow">if</span> (argument->getArgNo()%10 == 1)</div>
|
|
740
|
+
<div class="line"><a name="l00723"></a><span class="lineno"> 723</span>  rawstr << argument->getArgNo() << <span class="stringliteral">"st"</span>;</div>
|
|
741
|
+
<div class="line"><a name="l00724"></a><span class="lineno"> 724</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (argument->getArgNo()%10 == 2)</div>
|
|
742
|
+
<div class="line"><a name="l00725"></a><span class="lineno"> 725</span>  rawstr << argument->getArgNo() << <span class="stringliteral">"nd"</span>;</div>
|
|
743
|
+
<div class="line"><a name="l00726"></a><span class="lineno"> 726</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (argument->getArgNo()%10 == 3)</div>
|
|
744
|
+
<div class="line"><a name="l00727"></a><span class="lineno"> 727</span>  rawstr << argument->getArgNo() << <span class="stringliteral">"rd"</span>;</div>
|
|
745
|
+
<div class="line"><a name="l00728"></a><span class="lineno"> 728</span>  <span class="keywordflow">else</span></div>
|
|
746
|
+
<div class="line"><a name="l00729"></a><span class="lineno"> 729</span>  rawstr << argument->getArgNo() << <span class="stringliteral">"th"</span>;</div>
|
|
747
|
+
<div class="line"><a name="l00730"></a><span class="lineno"> 730</span>  rawstr << <span class="stringliteral">" arg "</span> << argument->getParent()->getName().str() << <span class="stringliteral">" "</span></div>
|
|
748
|
+
<div class="line"><a name="l00731"></a><span class="lineno"> 731</span>  << <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2b32283ee2dbb9cef1d17ab6f2719e0c">getSourceLocOfFunction</a>(argument->getParent());</div>
|
|
749
|
+
<div class="line"><a name="l00732"></a><span class="lineno"> 732</span>  }</div>
|
|
750
|
+
<div class="line"><a name="l00733"></a><span class="lineno"> 733</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* gvar = SVFUtil::dyn_cast<GlobalVariable>(val))</div>
|
|
751
|
+
<div class="line"><a name="l00734"></a><span class="lineno"> 734</span>  {</div>
|
|
752
|
+
<div class="line"><a name="l00735"></a><span class="lineno"> 735</span>  rawstr << <span class="stringliteral">"Glob "</span>;</div>
|
|
753
|
+
<div class="line"><a name="l00736"></a><span class="lineno"> 736</span>  <a class="code" href="namespaceSVF.html#a3011dbac9102f044ad5f36a4ad3d4a71">NamedMDNode</a>* CU_Nodes = gvar->getParent()->getNamedMetadata(<span class="stringliteral">"llvm.dbg.cu"</span>);</div>
|
|
754
|
+
<div class="line"><a name="l00737"></a><span class="lineno"> 737</span>  <span class="keywordflow">if</span>(CU_Nodes)</div>
|
|
755
|
+
<div class="line"><a name="l00738"></a><span class="lineno"> 738</span>  {</div>
|
|
756
|
+
<div class="line"><a name="l00739"></a><span class="lineno"> 739</span>  <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = CU_Nodes->getNumOperands(); i != e; ++i)</div>
|
|
757
|
+
<div class="line"><a name="l00740"></a><span class="lineno"> 740</span>  {</div>
|
|
758
|
+
<div class="line"><a name="l00741"></a><span class="lineno"> 741</span>  llvm::DICompileUnit *CUNode = SVFUtil::cast<llvm::DICompileUnit>(CU_Nodes->getOperand(i));</div>
|
|
759
|
+
<div class="line"><a name="l00742"></a><span class="lineno"> 742</span>  <span class="keywordflow">for</span> (llvm::DIGlobalVariableExpression *GV : CUNode->getGlobalVariables())</div>
|
|
760
|
+
<div class="line"><a name="l00743"></a><span class="lineno"> 743</span>  {</div>
|
|
761
|
+
<div class="line"><a name="l00744"></a><span class="lineno"> 744</span>  llvm::DIGlobalVariable * DGV = GV->getVariable();</div>
|
|
762
|
+
<div class="line"><a name="l00745"></a><span class="lineno"> 745</span>  </div>
|
|
763
|
+
<div class="line"><a name="l00746"></a><span class="lineno"> 746</span>  <span class="keywordflow">if</span>(DGV->getName() == gvar->getName())</div>
|
|
764
|
+
<div class="line"><a name="l00747"></a><span class="lineno"> 747</span>  {</div>
|
|
765
|
+
<div class="line"><a name="l00748"></a><span class="lineno"> 748</span>  rawstr << <span class="stringliteral">"\"ln\": "</span> << DGV->getLine() << <span class="stringliteral">", \"fl\": \""</span> << DGV->getFilename().str() << <span class="stringliteral">"\""</span>;</div>
|
|
766
|
+
<div class="line"><a name="l00749"></a><span class="lineno"> 749</span>  }</div>
|
|
767
|
+
<div class="line"><a name="l00750"></a><span class="lineno"> 750</span>  </div>
|
|
768
|
+
<div class="line"><a name="l00751"></a><span class="lineno"> 751</span>  }</div>
|
|
769
|
+
<div class="line"><a name="l00752"></a><span class="lineno"> 752</span>  }</div>
|
|
770
|
+
<div class="line"><a name="l00753"></a><span class="lineno"> 753</span>  }</div>
|
|
771
|
+
<div class="line"><a name="l00754"></a><span class="lineno"> 754</span>  }</div>
|
|
772
|
+
<div class="line"><a name="l00755"></a><span class="lineno"> 755</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func = SVFUtil::dyn_cast<Function>(val))</div>
|
|
773
|
+
<div class="line"><a name="l00756"></a><span class="lineno"> 756</span>  {</div>
|
|
774
|
+
<div class="line"><a name="l00757"></a><span class="lineno"> 757</span>  rawstr << <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2b32283ee2dbb9cef1d17ab6f2719e0c">getSourceLocOfFunction</a>(func);</div>
|
|
775
|
+
<div class="line"><a name="l00758"></a><span class="lineno"> 758</span>  }</div>
|
|
776
|
+
<div class="line"><a name="l00759"></a><span class="lineno"> 759</span>  <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<BasicBlock>(val))</div>
|
|
777
|
+
<div class="line"><a name="l00760"></a><span class="lineno"> 760</span>  {</div>
|
|
778
|
+
<div class="line"><a name="l00761"></a><span class="lineno"> 761</span>  rawstr << <span class="stringliteral">"\"basic block\": "</span> << bb->getName().str() << <span class="stringliteral">", \"location\": "</span> << <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a8e4add30bd0ce00d3f2aa2e31c64fef8">getSourceLoc</a>(bb->getFirstNonPHI());</div>
|
|
779
|
+
<div class="line"><a name="l00762"></a><span class="lineno"> 762</span>  }</div>
|
|
780
|
+
<div class="line"><a name="l00763"></a><span class="lineno"> 763</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a8a77403306e97ab4cb31a56d38bba5be">LLVMUtil::isConstDataOrAggData</a>(val))</div>
|
|
781
|
+
<div class="line"><a name="l00764"></a><span class="lineno"> 764</span>  {</div>
|
|
782
|
+
<div class="line"><a name="l00765"></a><span class="lineno"> 765</span>  rawstr << <span class="stringliteral">"constant data"</span>;</div>
|
|
783
|
+
<div class="line"><a name="l00766"></a><span class="lineno"> 766</span>  }</div>
|
|
784
|
+
<div class="line"><a name="l00767"></a><span class="lineno"> 767</span>  <span class="keywordflow">else</span></div>
|
|
785
|
+
<div class="line"><a name="l00768"></a><span class="lineno"> 768</span>  {</div>
|
|
786
|
+
<div class="line"><a name="l00769"></a><span class="lineno"> 769</span>  rawstr << <span class="stringliteral">"N/A"</span>;</div>
|
|
787
|
+
<div class="line"><a name="l00770"></a><span class="lineno"> 770</span>  }</div>
|
|
788
|
+
<div class="line"><a name="l00771"></a><span class="lineno"> 771</span>  rawstr << <span class="stringliteral">" }"</span>;</div>
|
|
789
|
+
<div class="line"><a name="l00772"></a><span class="lineno"> 772</span>  </div>
|
|
790
|
+
<div class="line"><a name="l00773"></a><span class="lineno"> 773</span>  <span class="keywordflow">if</span>(rawstr.str()==<span class="stringliteral">"{ }"</span>)</div>
|
|
791
|
+
<div class="line"><a name="l00774"></a><span class="lineno"> 774</span>  <span class="keywordflow">return</span> <span class="stringliteral">""</span>;</div>
|
|
792
|
+
<div class="line"><a name="l00775"></a><span class="lineno"> 775</span>  <span class="keywordflow">return</span> rawstr.str();</div>
|
|
793
|
+
<div class="line"><a name="l00776"></a><span class="lineno"> 776</span> }</div>
|
|
794
|
+
<div class="line"><a name="l00777"></a><span class="lineno"> 777</span>  </div>
|
|
795
795
|
<div class="line"><a name="l00778"></a><span class="lineno"> 778</span>  </div>
|
|
796
|
-
<div class="line"><a name="
|
|
797
|
-
<div class="line"><a name="l00783"></a><span class="lineno"
|
|
798
|
-
<div class="line"><a name="l00784"></a><span class="lineno"> 784</span> 
|
|
799
|
-
<div class="line"><a name="l00785"></a><span class="lineno"> 785</span> 
|
|
800
|
-
<div class="line"><a name="l00786"></a><span class="lineno"> 786</span> 
|
|
801
|
-
<div class="line"><a name="l00787"></a><span class="lineno"> 787</span> 
|
|
802
|
-
<div class="line"><a name="l00788"></a><span class="lineno"> 788</span> <span class="comment"> *
|
|
803
|
-
<div class="line"><a name="l00789"></a><span class="lineno"> 789</span> <span class="comment">
|
|
804
|
-
<div class="line"><a name="l00790"></a><span class="lineno"> 790</span> 
|
|
805
|
-
<div class="line"><a name="l00791"></a><span class="lineno"> 791</span> 
|
|
806
|
-
<div class="line"><a name="l00792"></a><span class="lineno"> 792</span> 
|
|
807
|
-
<div class="line"><a name="l00793"></a><span class="lineno"> 793</span> 
|
|
808
|
-
<div class="line"><a name="l00794"></a><span class="lineno"> 794</span> 
|
|
809
|
-
<div class="line"><a name="l00795"></a><span class="lineno"> 795</span> 
|
|
810
|
-
<div class="line"><a name="l00796"></a><span class="lineno"> 796</span> 
|
|
811
|
-
<div class="line"><a name="l00797"></a><span class="lineno"> 797</span> 
|
|
812
|
-
<div class="line"><a name="
|
|
813
|
-
<div class="line"><a name="l00800"></a><span class="lineno"
|
|
814
|
-
<div class="line"><a name="l00801"></a><span class="lineno"> 801</span> 
|
|
815
|
-
<div class="line"><a name="l00802"></a><span class="lineno"> 802</span> 
|
|
816
|
-
<div class="line"><a name="l00803"></a><span class="lineno"> 803</span> 
|
|
817
|
-
<div class="line"><a name="l00804"></a><span class="lineno"> 804</span>  <span class="
|
|
818
|
-
<div class="line"><a name="l00805"></a><span class="lineno"> 805</span> 
|
|
819
|
-
<div class="line"><a name="l00806"></a><span class="lineno"> 806</span> 
|
|
820
|
-
<div class="line"><a name="l00807"></a><span class="lineno"> 807</span> 
|
|
821
|
-
<div class="line"><a name="l00808"></a><span class="lineno"> 808</span> 
|
|
822
|
-
<div class="line"><a name="l00809"></a><span class="lineno"> 809</span> 
|
|
823
|
-
<div class="line"><a name="l00810"></a><span class="lineno"> 810</span> 
|
|
824
|
-
<div class="line"><a name="l00811"></a><span class="lineno"> 811</span> 
|
|
825
|
-
<div class="line"><a name="l00812"></a><span class="lineno"> 812</span>  <span class="
|
|
826
|
-
<div class="line"><a name="l00813"></a><span class="lineno"> 813</span>  <span class="
|
|
827
|
-
<div class="line"><a name="l00814"></a><span class="lineno"> 814</span> 
|
|
828
|
-
<div class="line"><a name="l00815"></a><span class="lineno"> 815</span> 
|
|
829
|
-
<div class="line"><a name="l00816"></a><span class="lineno"> 816</span>  <span class="
|
|
830
|
-
<div class="line"><a name="l00817"></a><span class="lineno"> 817</span> 
|
|
831
|
-
<div class="line"><a name="l00818"></a><span class="lineno"> 818</span> 
|
|
832
|
-
<div class="line"><a name="l00819"></a><span class="lineno"> 819</span> 
|
|
833
|
-
<div class="line"><a name="l00820"></a><span class="lineno"> 820</span> 
|
|
834
|
-
<div class="line"><a name="l00821"></a><span class="lineno"> 821</span> 
|
|
835
|
-
<div class="line"><a name="l00822"></a><span class="lineno"> 822</span> 
|
|
836
|
-
<div class="line"><a name="l00823"></a><span class="lineno"> 823</span> 
|
|
796
|
+
<div class="line"><a name="l00782"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a2b32283ee2dbb9cef1d17ab6f2719e0c"> 782</a></span> <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2b32283ee2dbb9cef1d17ab6f2719e0c">LLVMUtil::getSourceLocOfFunction</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>)</div>
|
|
797
|
+
<div class="line"><a name="l00783"></a><span class="lineno"> 783</span> {</div>
|
|
798
|
+
<div class="line"><a name="l00784"></a><span class="lineno"> 784</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div>
|
|
799
|
+
<div class="line"><a name="l00785"></a><span class="lineno"> 785</span>  std::stringstream rawstr(str);</div>
|
|
800
|
+
<div class="line"><a name="l00786"></a><span class="lineno"> 786</span>  <span class="comment">/*</span></div>
|
|
801
|
+
<div class="line"><a name="l00787"></a><span class="lineno"> 787</span> <span class="comment"> * https://reviews.llvm.org/D18074?id=50385</span></div>
|
|
802
|
+
<div class="line"><a name="l00788"></a><span class="lineno"> 788</span> <span class="comment"> * looks like the relevant</span></div>
|
|
803
|
+
<div class="line"><a name="l00789"></a><span class="lineno"> 789</span> <span class="comment"> */</span></div>
|
|
804
|
+
<div class="line"><a name="l00790"></a><span class="lineno"> 790</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF.html#a89c7208bfc0b57873dfa574f52050295">llvm::DISubprogram</a> *SP = <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>->getSubprogram())</div>
|
|
805
|
+
<div class="line"><a name="l00791"></a><span class="lineno"> 791</span>  {</div>
|
|
806
|
+
<div class="line"><a name="l00792"></a><span class="lineno"> 792</span>  <span class="keywordflow">if</span> (SP->describes(<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>))</div>
|
|
807
|
+
<div class="line"><a name="l00793"></a><span class="lineno"> 793</span>  rawstr << <span class="stringliteral">"\"ln\": "</span> << SP->getLine() << <span class="stringliteral">", \"file\": \""</span> << SP->getFilename().str() << <span class="stringliteral">"\""</span>;</div>
|
|
808
|
+
<div class="line"><a name="l00794"></a><span class="lineno"> 794</span>  }</div>
|
|
809
|
+
<div class="line"><a name="l00795"></a><span class="lineno"> 795</span>  <span class="keywordflow">return</span> rawstr.str();</div>
|
|
810
|
+
<div class="line"><a name="l00796"></a><span class="lineno"> 796</span> }</div>
|
|
811
|
+
<div class="line"><a name="l00797"></a><span class="lineno"> 797</span>  </div>
|
|
812
|
+
<div class="line"><a name="l00799"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a7fa1f910598426330f08da19e9efdfa3"> 799</a></span> <span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#afbd60d5443c7fa1448813d00bb5d0fa7">LLVMUtil::getNextInsts</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* curInst, std::vector<const Instruction*>& instList)</div>
|
|
813
|
+
<div class="line"><a name="l00800"></a><span class="lineno"> 800</span> {</div>
|
|
814
|
+
<div class="line"><a name="l00801"></a><span class="lineno"> 801</span>  <span class="keywordflow">if</span> (!curInst->isTerminator())</div>
|
|
815
|
+
<div class="line"><a name="l00802"></a><span class="lineno"> 802</span>  {</div>
|
|
816
|
+
<div class="line"><a name="l00803"></a><span class="lineno"> 803</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* nextInst = curInst->getNextNode();</div>
|
|
817
|
+
<div class="line"><a name="l00804"></a><span class="lineno"> 804</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(nextInst))</div>
|
|
818
|
+
<div class="line"><a name="l00805"></a><span class="lineno"> 805</span>  <a class="code" href="namespaceSVF_1_1LLVMUtil.html#afbd60d5443c7fa1448813d00bb5d0fa7">getNextInsts</a>(nextInst, instList);</div>
|
|
819
|
+
<div class="line"><a name="l00806"></a><span class="lineno"> 806</span>  <span class="keywordflow">else</span></div>
|
|
820
|
+
<div class="line"><a name="l00807"></a><span class="lineno"> 807</span>  instList.push_back(nextInst);</div>
|
|
821
|
+
<div class="line"><a name="l00808"></a><span class="lineno"> 808</span>  }</div>
|
|
822
|
+
<div class="line"><a name="l00809"></a><span class="lineno"> 809</span>  <span class="keywordflow">else</span></div>
|
|
823
|
+
<div class="line"><a name="l00810"></a><span class="lineno"> 810</span>  {</div>
|
|
824
|
+
<div class="line"><a name="l00811"></a><span class="lineno"> 811</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *BB = curInst->getParent();</div>
|
|
825
|
+
<div class="line"><a name="l00812"></a><span class="lineno"> 812</span>  <span class="comment">// Visit all successors of BB in the CFG</span></div>
|
|
826
|
+
<div class="line"><a name="l00813"></a><span class="lineno"> 813</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">succ_const_iterator</a> it = succ_begin(BB), ie = succ_end(BB); it != ie; ++it)</div>
|
|
827
|
+
<div class="line"><a name="l00814"></a><span class="lineno"> 814</span>  {</div>
|
|
828
|
+
<div class="line"><a name="l00815"></a><span class="lineno"> 815</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* nextInst = &((*it)->front());</div>
|
|
829
|
+
<div class="line"><a name="l00816"></a><span class="lineno"> 816</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(nextInst))</div>
|
|
830
|
+
<div class="line"><a name="l00817"></a><span class="lineno"> 817</span>  <a class="code" href="namespaceSVF_1_1LLVMUtil.html#afbd60d5443c7fa1448813d00bb5d0fa7">getNextInsts</a>(nextInst, instList);</div>
|
|
831
|
+
<div class="line"><a name="l00818"></a><span class="lineno"> 818</span>  <span class="keywordflow">else</span></div>
|
|
832
|
+
<div class="line"><a name="l00819"></a><span class="lineno"> 819</span>  instList.push_back(nextInst);</div>
|
|
833
|
+
<div class="line"><a name="l00820"></a><span class="lineno"> 820</span>  }</div>
|
|
834
|
+
<div class="line"><a name="l00821"></a><span class="lineno"> 821</span>  }</div>
|
|
835
|
+
<div class="line"><a name="l00822"></a><span class="lineno"> 822</span> }</div>
|
|
836
|
+
<div class="line"><a name="l00823"></a><span class="lineno"> 823</span>  </div>
|
|
837
837
|
<div class="line"><a name="l00824"></a><span class="lineno"> 824</span>  </div>
|
|
838
|
-
<div class="line"><a name="
|
|
839
|
-
<div class="line"><a name="l00827"></a><span class="lineno"
|
|
840
|
-
<div class="line"><a name="l00828"></a><span class="lineno"> 828</span> 
|
|
841
|
-
<div class="line"><a name="l00829"></a><span class="lineno"> 829</span> 
|
|
842
|
-
<div class="line"><a name="l00830"></a><span class="lineno"> 830</span> 
|
|
843
|
-
<div class="line"><a name="l00831"></a><span class="lineno"> 831</span>  <span class="
|
|
844
|
-
<div class="line"><a name="l00832"></a><span class="lineno"> 832</span> 
|
|
845
|
-
<div class="line"><a name="l00833"></a><span class="lineno"> 833</span> 
|
|
846
|
-
<div class="line"><a name="l00834"></a><span class="lineno"> 834</span> 
|
|
847
|
-
<div class="line"><a name="l00835"></a><span class="lineno"> 835</span> 
|
|
848
|
-
<div class="line"><a name="l00836"></a><span class="lineno"> 836</span> 
|
|
849
|
-
<div class="line"><a name="l00837"></a><span class="lineno"> 837</span> 
|
|
850
|
-
<div class="line"><a name="l00838"></a><span class="lineno"> 838</span> 
|
|
851
|
-
<div class="line"><a name="l00839"></a><span class="lineno"> 839</span>  <span class="
|
|
852
|
-
<div class="line"><a name="l00840"></a><span class="lineno"> 840</span>  <span class="
|
|
853
|
-
<div class="line"><a name="l00841"></a><span class="lineno"> 841</span> 
|
|
854
|
-
<div class="line"><a name="l00842"></a><span class="lineno"> 842</span> 
|
|
855
|
-
<div class="line"><a name="l00843"></a><span class="lineno"> 843</span>  <span class="
|
|
856
|
-
<div class="line"><a name="l00844"></a><span class="lineno"> 844</span> 
|
|
857
|
-
<div class="line"><a name="l00845"></a><span class="lineno"> 845</span> 
|
|
858
|
-
<div class="line"><a name="l00846"></a><span class="lineno"> 846</span> 
|
|
859
|
-
<div class="line"><a name="l00847"></a><span class="lineno"> 847</span> 
|
|
860
|
-
<div class="line"><a name="l00848"></a><span class="lineno"> 848</span> 
|
|
861
|
-
<div class="line"><a name="l00849"></a><span class="lineno"> 849</span> 
|
|
862
|
-
<div class="line"><a name="l00850"></a><span class="lineno"> 850</span> 
|
|
863
|
-
<div class="line"><a name="
|
|
864
|
-
<div class="line"><a name="l00853"></a><span class="lineno"
|
|
865
|
-
<div class="line"><a name="l00854"></a><span class="lineno"> 854</span> 
|
|
866
|
-
<div class="line"><a name="l00855"></a><span class="lineno"> 855</span> 
|
|
867
|
-
<div class="line"><a name="l00856"></a><span class="lineno"> 856</span> 
|
|
838
|
+
<div class="line"><a name="l00826"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a08876cc07f9b9dbe84f87aea09e9824f"> 826</a></span> <span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a4c94a6c02fb89c1a1604c87414956acd">LLVMUtil::getPrevInsts</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* curInst, std::vector<const Instruction*>& instList)</div>
|
|
839
|
+
<div class="line"><a name="l00827"></a><span class="lineno"> 827</span> {</div>
|
|
840
|
+
<div class="line"><a name="l00828"></a><span class="lineno"> 828</span>  <span class="keywordflow">if</span> (curInst != &(curInst->getParent()->front()))</div>
|
|
841
|
+
<div class="line"><a name="l00829"></a><span class="lineno"> 829</span>  {</div>
|
|
842
|
+
<div class="line"><a name="l00830"></a><span class="lineno"> 830</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* prevInst = curInst->getPrevNode();</div>
|
|
843
|
+
<div class="line"><a name="l00831"></a><span class="lineno"> 831</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(prevInst))</div>
|
|
844
|
+
<div class="line"><a name="l00832"></a><span class="lineno"> 832</span>  <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a4c94a6c02fb89c1a1604c87414956acd">getPrevInsts</a>(prevInst, instList);</div>
|
|
845
|
+
<div class="line"><a name="l00833"></a><span class="lineno"> 833</span>  <span class="keywordflow">else</span></div>
|
|
846
|
+
<div class="line"><a name="l00834"></a><span class="lineno"> 834</span>  instList.push_back(prevInst);</div>
|
|
847
|
+
<div class="line"><a name="l00835"></a><span class="lineno"> 835</span>  }</div>
|
|
848
|
+
<div class="line"><a name="l00836"></a><span class="lineno"> 836</span>  <span class="keywordflow">else</span></div>
|
|
849
|
+
<div class="line"><a name="l00837"></a><span class="lineno"> 837</span>  {</div>
|
|
850
|
+
<div class="line"><a name="l00838"></a><span class="lineno"> 838</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *BB = curInst->getParent();</div>
|
|
851
|
+
<div class="line"><a name="l00839"></a><span class="lineno"> 839</span>  <span class="comment">// Visit all successors of BB in the CFG</span></div>
|
|
852
|
+
<div class="line"><a name="l00840"></a><span class="lineno"> 840</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a5c943191dc4e242704943e5f594ae99e">const_pred_iterator</a> it = pred_begin(BB), ie = pred_end(BB); it != ie; ++it)</div>
|
|
853
|
+
<div class="line"><a name="l00841"></a><span class="lineno"> 841</span>  {</div>
|
|
854
|
+
<div class="line"><a name="l00842"></a><span class="lineno"> 842</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* prevInst = &((*it)->back());</div>
|
|
855
|
+
<div class="line"><a name="l00843"></a><span class="lineno"> 843</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(prevInst))</div>
|
|
856
|
+
<div class="line"><a name="l00844"></a><span class="lineno"> 844</span>  <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a4c94a6c02fb89c1a1604c87414956acd">getPrevInsts</a>(prevInst, instList);</div>
|
|
857
|
+
<div class="line"><a name="l00845"></a><span class="lineno"> 845</span>  <span class="keywordflow">else</span></div>
|
|
858
|
+
<div class="line"><a name="l00846"></a><span class="lineno"> 846</span>  instList.push_back(prevInst);</div>
|
|
859
|
+
<div class="line"><a name="l00847"></a><span class="lineno"> 847</span>  }</div>
|
|
860
|
+
<div class="line"><a name="l00848"></a><span class="lineno"> 848</span>  }</div>
|
|
861
|
+
<div class="line"><a name="l00849"></a><span class="lineno"> 849</span> }</div>
|
|
862
|
+
<div class="line"><a name="l00850"></a><span class="lineno"> 850</span>  </div>
|
|
863
|
+
<div class="line"><a name="l00852"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#ad8ee8de153df3f1bbdebb67185a2731c"> 852</a></span> <span class="keywordtype">bool</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ad8ee8de153df3f1bbdebb67185a2731c">LLVMUtil::isConstantObjSym</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* val)</div>
|
|
864
|
+
<div class="line"><a name="l00853"></a><span class="lineno"> 853</span> {</div>
|
|
865
|
+
<div class="line"><a name="l00854"></a><span class="lineno"> 854</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ad8ee8de153df3f1bbdebb67185a2731c">isConstantObjSym</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()->getLLVMValue(val));</div>
|
|
866
|
+
<div class="line"><a name="l00855"></a><span class="lineno"> 855</span> }</div>
|
|
867
|
+
<div class="line"><a name="l00856"></a><span class="lineno"> 856</span>  </div>
|
|
868
868
|
<div class="line"><a name="l00857"></a><span class="lineno"> 857</span>  </div>
|
|
869
|
-
<div class="line"><a name="l00858"></a><span class="lineno"> 858</span>  </div>
|
|
870
|
-
<div class="line"><a name="l00859"></a><span class="lineno"
|
|
871
|
-
<div class="line"><a name="l00860"></a><span class="lineno"> 860</span> 
|
|
872
|
-
<div class="line"><a name="l00861"></a><span class="lineno"> 861</span>  <span class="
|
|
873
|
-
<div class="line"><a name="l00862"></a><span class="lineno"> 862</span> 
|
|
874
|
-
<div class="line"><a name="l00863"></a><span class="lineno"> 863</span>  </div>
|
|
875
|
-
<div class="line"><a name="l00864"></a><span class="lineno"> 864</span>  <span class="
|
|
876
|
-
<div class="line"><a name="l00865"></a><span class="lineno"> 865</span> 
|
|
877
|
-
<div class="line"><a name="l00866"></a><span class="lineno"> 866</span> 
|
|
878
|
-
<div class="line"><a name="l00867"></a><span class="lineno"> 867</span> 
|
|
879
|
-
<div class="line"><a name="l00868"></a><span class="lineno"> 868</span>  </div>
|
|
880
|
-
<div class="line"><a name="l00869"></a><span class="lineno"
|
|
881
|
-
<div class="line"><a name="l00870"></a><span class="lineno"> 870</span> 
|
|
882
|
-
<div class="line"><a name="l00871"></a><span class="lineno"> 871</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#
|
|
883
|
-
<div class="line"><a name="l00872"></a><span class="lineno"> 872</span>  <
|
|
884
|
-
<div class="line"><a name="l00873"></a><span class="lineno"> 873</span>  <
|
|
885
|
-
<div class="line"><a name="l00874"></a><span class="lineno"> 874</span> 
|
|
886
|
-
<div class="line"><a name="
|
|
887
|
-
<div class="line"><a name="l00877"></a><span class="lineno"> 877</span> 
|
|
888
|
-
<div class="line"><a name="l00878"></a><span class="lineno"> 878</span> 
|
|
889
|
-
<div class="line"><a name="l00879"></a><span class="lineno"> 879</span> 
|
|
890
|
-
<div class="line"><a name="
|
|
891
|
-
<div class="line"><a name="l00882"></a><span class="lineno"> 882</span> 
|
|
892
|
-
<div class="line"><a name="l00883"></a><span class="lineno"> 883</span> 
|
|
893
|
-
<div class="line"><a name="l00884"></a><span class="lineno"> 884</span> 
|
|
894
|
-
<div class="line"><a name="l00885"></a><span class="lineno"> 885</span> 
|
|
895
|
-
<div class="line"><a name="l00886"></a><span class="lineno"> 886</span> 
|
|
896
|
-
<div class="line"><a name="
|
|
897
|
-
<div class="line"><a name="l00890"></a><span class="lineno"> 890</span> 
|
|
898
|
-
<div class="line"><a name="l00891"></a><span class="lineno"> 891</span> 
|
|
899
|
-
<div class="line"><a name="l00892"></a><span class="lineno"> 892</span> 
|
|
900
|
-
<div class="line"><a name="l00893"></a><span class="lineno"> 893</span> 
|
|
901
|
-
<div class="line"><a name="l00894"></a><span class="lineno"> 894</span> 
|
|
902
|
-
<div class="line"><a name="l00895"></a><span class="lineno"> 895</span> 
|
|
903
|
-
<div class="line"><a name="l00896"></a><span class="lineno"
|
|
904
|
-
<div class="line"><a name="l00897"></a><span class="lineno"> 897</span> 
|
|
905
|
-
<div class="line"><a name="l00898"></a><span class="lineno"> 898</span> 
|
|
906
|
-
<div class="line"><a name="l00899"></a><span class="lineno"> 899</span> 
|
|
907
|
-
<div class="line"><a name="l00900"></a><span class="lineno"> 900</span> 
|
|
908
|
-
<div class="line"><a name="l00901"></a><span class="lineno"> 901</span> 
|
|
909
|
-
<div class="line"><a name="l00902"></a><span class="lineno"> 902</span> 
|
|
910
|
-
<div class="line"><a name="l00903"></a><span class="lineno"> 903</span> 
|
|
911
|
-
<div class="line"><a name="l00904"></a><span class="lineno"> 904</span> 
|
|
912
|
-
<div class="line"><a name="l00905"></a><span class="lineno"> 905</span> 
|
|
913
|
-
<div class="line"><a name="l00906"></a><span class="lineno"> 906</span> 
|
|
914
|
-
<div class="line"><a name="l00907"></a><span class="lineno"
|
|
915
|
-
<div class="line"><a name="l00908"></a><span class="lineno"> 908</span> 
|
|
916
|
-
<div class="line"><a name="l00909"></a><span class="lineno"> 909</span> 
|
|
917
|
-
<div class="line"><a name="l00910"></a><span class="lineno"> 910</span> 
|
|
918
|
-
<div class="line"><a name="l00911"></a><span class="lineno"> 911</span> 
|
|
919
|
-
<div class="line"><a name="l00912"></a><span class="lineno"> 912</span> 
|
|
920
|
-
<div class="line"><a name="l00913"></a><span class="lineno"> 913</span> 
|
|
921
|
-
<div class="line"><a name="l00914"></a><span class="lineno"> 914</span> 
|
|
922
|
-
<div class="line"><a name="l00915"></a><span class="lineno"> 915</span> 
|
|
923
|
-
<div class="line"><a name="l00916"></a><span class="lineno"> 916</span> 
|
|
924
|
-
<div class="line"><a name="l00917"></a><span class="lineno"> 917</span> 
|
|
925
|
-
<div class="line"><a name="l00918"></a><span class="lineno"
|
|
926
|
-
<div class="line"><a name="l00919"></a><span class="lineno"> 919</span> 
|
|
927
|
-
<div class="line"><a name="l00920"></a><span class="lineno"> 920</span> 
|
|
928
|
-
<div class="line"><a name="l00921"></a><span class="lineno"> 921</span> 
|
|
929
|
-
<div class="line"><a name="l00922"></a><span class="lineno"> 922</span> 
|
|
930
|
-
<div class="line"><a name="l00923"></a><span class="lineno"> 923</span> 
|
|
931
|
-
<div class="line"><a name="l00924"></a><span class="lineno"> 924</span> 
|
|
932
|
-
<div class="line"><a name="l00925"></a><span class="lineno"> 925</span> 
|
|
933
|
-
<div class="line"><a name="l00926"></a><span class="lineno"> 926</span> 
|
|
934
|
-
<div class="line"><a name="l00927"></a><span class="lineno"> 927</span> 
|
|
935
|
-
<div class="line"><a name="l00928"></a><span class="lineno"> 928</span> 
|
|
936
|
-
<div class="line"><a name="l00929"></a><span class="lineno"> 929</span> 
|
|
937
|
-
<div class="line"><a name="l00930"></a><span class="lineno"> 930</span> 
|
|
938
|
-
<div class="line"><a name="l00931"></a><span class="lineno"> 931</span> 
|
|
939
|
-
<div class="line"><a name="l00932"></a><span class="lineno"
|
|
940
|
-
<div class="line"><a name="l00933"></a><span class="lineno"> 933</span> 
|
|
941
|
-
<div class="line"><a name="l00934"></a><span class="lineno"> 934</span> 
|
|
942
|
-
<div class="line"><a name="l00935"></a><span class="lineno"> 935</span> 
|
|
943
|
-
<div class="line"><a name="l00936"></a><span class="lineno"> 936</span> 
|
|
944
|
-
<div class="line"><a name="l00937"></a><span class="lineno"> 937</span> 
|
|
945
|
-
<div class="line"><a name="l00938"></a><span class="lineno"> 938</span> 
|
|
946
|
-
<div class="line"><a name="l00939"></a><span class="lineno"> 939</span> 
|
|
947
|
-
<div class="line"><a name="l00940"></a><span class="lineno"> 940</span> 
|
|
948
|
-
<div class="line"><a name="l00941"></a><span class="lineno"> 941</span> 
|
|
949
|
-
<div class="line"><a name="l00942"></a><span class="lineno"> 942</span> 
|
|
950
|
-
<div class="line"><a name="l00943"></a><span class="lineno"> 943</span> 
|
|
951
|
-
<div class="line"><a name="l00944"></a><span class="lineno"> 944</span> 
|
|
952
|
-
<div class="line"><a name="l00945"></a><span class="lineno"> 945</span> 
|
|
953
|
-
<div class="line"><a name="l00946"></a><span class="lineno"> 946</span>  <span class="
|
|
954
|
-
<div class="line"><a name="l00947"></a><span class="lineno"> 947</span> 
|
|
955
|
-
<div class="line"><a name="l00948"></a><span class="lineno"> 948</span> 
|
|
956
|
-
<div class="line"><a name="l00949"></a><span class="lineno"> 949</span> 
|
|
957
|
-
<div class="line"><a name="l00950"></a><span class="lineno"> 950</span> 
|
|
958
|
-
<div class="line"><a name="l00951"></a><span class="lineno"> 951</span> 
|
|
959
|
-
<div class="line"><a name="l00952"></a><span class="lineno"> 952</span> 
|
|
960
|
-
<div class="line"><a name="l00953"></a><span class="lineno"> 953</span> 
|
|
961
|
-
<div class="line"><a name="l00954"></a><span class="lineno"> 954</span> 
|
|
962
|
-
<div class="line"><a name="l00955"></a><span class="lineno"> 955</span>  </div>
|
|
963
|
-
<div class="line"><a name="l00956"></a><span class="lineno"> 956</span> } <span class="comment">// namespace SVF</span></div>
|
|
869
|
+
<div class="line"><a name="l00858"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a9001722dd27bf487351725c3d7b65f2f"> 858</a></span> <span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a9001722dd27bf487351725c3d7b65f2f">LLVMUtil::getSuccBBandCondValPairVec</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a412280b134578905248ce0122c5db7c9">SwitchInst</a> &switchInst, <a class="code" href="namespaceSVF.html#a8de26e1810ea0c3b1e8ad62f1c8a864d">SuccBBAndCondValPairVec</a> &vec)</div>
|
|
870
|
+
<div class="line"><a name="l00859"></a><span class="lineno"> 859</span> {</div>
|
|
871
|
+
<div class="line"><a name="l00860"></a><span class="lineno"> 860</span>  <span class="comment">// get default successor basic block and default case value (nullptr)</span></div>
|
|
872
|
+
<div class="line"><a name="l00861"></a><span class="lineno"> 861</span>  vec.push_back({switchInst.getDefaultDest(), <span class="keyword">nullptr</span>});</div>
|
|
873
|
+
<div class="line"><a name="l00862"></a><span class="lineno"> 862</span>  </div>
|
|
874
|
+
<div class="line"><a name="l00863"></a><span class="lineno"> 863</span>  <span class="comment">// get normal case value and it's successor basic block</span></div>
|
|
875
|
+
<div class="line"><a name="l00864"></a><span class="lineno"> 864</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>& cs : switchInst.cases())</div>
|
|
876
|
+
<div class="line"><a name="l00865"></a><span class="lineno"> 865</span>  vec.push_back({cs.getCaseSuccessor(), cs.getCaseValue()});</div>
|
|
877
|
+
<div class="line"><a name="l00866"></a><span class="lineno"> 866</span> }</div>
|
|
878
|
+
<div class="line"><a name="l00867"></a><span class="lineno"> 867</span>  </div>
|
|
879
|
+
<div class="line"><a name="l00868"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a33e8378ae1a911169394e545a4ba2220"> 868</a></span> <a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a33e8378ae1a911169394e545a4ba2220">LLVMUtil::getCaseValue</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a412280b134578905248ce0122c5db7c9">SwitchInst</a> &switchInst, <a class="code" href="namespaceSVF.html#a255efa5be786996cbdd0c1f3d98b8400">SuccBBAndCondValPair</a> &succBB2CondVal)</div>
|
|
880
|
+
<div class="line"><a name="l00869"></a><span class="lineno"> 869</span> {</div>
|
|
881
|
+
<div class="line"><a name="l00870"></a><span class="lineno"> 870</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* succBB = succBB2CondVal.first;</div>
|
|
882
|
+
<div class="line"><a name="l00871"></a><span class="lineno"> 871</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a>* caseValue = succBB2CondVal.second;</div>
|
|
883
|
+
<div class="line"><a name="l00872"></a><span class="lineno"> 872</span>  <a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a> val;</div>
|
|
884
|
+
<div class="line"><a name="l00873"></a><span class="lineno"> 873</span>  <span class="keywordflow">if</span> (caseValue == <span class="keyword">nullptr</span> || succBB == switchInst.getDefaultDest())</div>
|
|
885
|
+
<div class="line"><a name="l00874"></a><span class="lineno"> 874</span>  {</div>
|
|
886
|
+
<div class="line"><a name="l00876"></a><span class="lineno"> 876</span>  val = -1;</div>
|
|
887
|
+
<div class="line"><a name="l00877"></a><span class="lineno"> 877</span>  }</div>
|
|
888
|
+
<div class="line"><a name="l00878"></a><span class="lineno"> 878</span>  <span class="keywordflow">else</span></div>
|
|
889
|
+
<div class="line"><a name="l00879"></a><span class="lineno"> 879</span>  {</div>
|
|
890
|
+
<div class="line"><a name="l00881"></a><span class="lineno"> 881</span>  <span class="keywordflow">if</span> (caseValue->getBitWidth() <= 64)</div>
|
|
891
|
+
<div class="line"><a name="l00882"></a><span class="lineno"> 882</span>  {</div>
|
|
892
|
+
<div class="line"><a name="l00883"></a><span class="lineno"> 883</span>  val = caseValue->getSExtValue();</div>
|
|
893
|
+
<div class="line"><a name="l00884"></a><span class="lineno"> 884</span>  }</div>
|
|
894
|
+
<div class="line"><a name="l00885"></a><span class="lineno"> 885</span>  <span class="keywordflow">else</span></div>
|
|
895
|
+
<div class="line"><a name="l00886"></a><span class="lineno"> 886</span>  {</div>
|
|
896
|
+
<div class="line"><a name="l00889"></a><span class="lineno"> 889</span>  val = -1;</div>
|
|
897
|
+
<div class="line"><a name="l00890"></a><span class="lineno"> 890</span>  }</div>
|
|
898
|
+
<div class="line"><a name="l00891"></a><span class="lineno"> 891</span>  }</div>
|
|
899
|
+
<div class="line"><a name="l00892"></a><span class="lineno"> 892</span>  <span class="keywordflow">return</span> val;</div>
|
|
900
|
+
<div class="line"><a name="l00893"></a><span class="lineno"> 893</span> }</div>
|
|
901
|
+
<div class="line"><a name="l00894"></a><span class="lineno"> 894</span>  </div>
|
|
902
|
+
<div class="line"><a name="l00895"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#afa2f8c8ab19c75547c26ede53b9f6159"> 895</a></span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#afa2f8c8ab19c75547c26ede53b9f6159">LLVMUtil::dumpValue</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val)</div>
|
|
903
|
+
<div class="line"><a name="l00896"></a><span class="lineno"> 896</span> {</div>
|
|
904
|
+
<div class="line"><a name="l00897"></a><span class="lineno"> 897</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div>
|
|
905
|
+
<div class="line"><a name="l00898"></a><span class="lineno"> 898</span>  llvm::raw_string_ostream rawstr(str);</div>
|
|
906
|
+
<div class="line"><a name="l00899"></a><span class="lineno"> 899</span>  <span class="keywordflow">if</span> (val)</div>
|
|
907
|
+
<div class="line"><a name="l00900"></a><span class="lineno"> 900</span>  rawstr << <span class="stringliteral">" "</span> << *val << <span class="stringliteral">" "</span>;</div>
|
|
908
|
+
<div class="line"><a name="l00901"></a><span class="lineno"> 901</span>  <span class="keywordflow">else</span></div>
|
|
909
|
+
<div class="line"><a name="l00902"></a><span class="lineno"> 902</span>  rawstr << <span class="stringliteral">" llvm Value is null"</span>;</div>
|
|
910
|
+
<div class="line"><a name="l00903"></a><span class="lineno"> 903</span>  <span class="keywordflow">return</span> rawstr.str();</div>
|
|
911
|
+
<div class="line"><a name="l00904"></a><span class="lineno"> 904</span> }</div>
|
|
912
|
+
<div class="line"><a name="l00905"></a><span class="lineno"> 905</span>  </div>
|
|
913
|
+
<div class="line"><a name="l00906"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a6e8682537cf5bed808df439bd7e1add9"> 906</a></span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a6e8682537cf5bed808df439bd7e1add9">LLVMUtil::dumpType</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>)</div>
|
|
914
|
+
<div class="line"><a name="l00907"></a><span class="lineno"> 907</span> {</div>
|
|
915
|
+
<div class="line"><a name="l00908"></a><span class="lineno"> 908</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div>
|
|
916
|
+
<div class="line"><a name="l00909"></a><span class="lineno"> 909</span>  llvm::raw_string_ostream rawstr(str);</div>
|
|
917
|
+
<div class="line"><a name="l00910"></a><span class="lineno"> 910</span>  <span class="keywordflow">if</span> (<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>)</div>
|
|
918
|
+
<div class="line"><a name="l00911"></a><span class="lineno"> 911</span>  rawstr << <span class="stringliteral">" "</span> << *<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> << <span class="stringliteral">" "</span>;</div>
|
|
919
|
+
<div class="line"><a name="l00912"></a><span class="lineno"> 912</span>  <span class="keywordflow">else</span></div>
|
|
920
|
+
<div class="line"><a name="l00913"></a><span class="lineno"> 913</span>  rawstr << <span class="stringliteral">" llvm type is null"</span>;</div>
|
|
921
|
+
<div class="line"><a name="l00914"></a><span class="lineno"> 914</span>  <span class="keywordflow">return</span> rawstr.str();</div>
|
|
922
|
+
<div class="line"><a name="l00915"></a><span class="lineno"> 915</span> }</div>
|
|
923
|
+
<div class="line"><a name="l00916"></a><span class="lineno"> 916</span>  </div>
|
|
924
|
+
<div class="line"><a name="l00917"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a86c0a0cb4ada72bd4f42c77558e6a350"> 917</a></span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a86c0a0cb4ada72bd4f42c77558e6a350">LLVMUtil::dumpValueAndDbgInfo</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *val)</div>
|
|
925
|
+
<div class="line"><a name="l00918"></a><span class="lineno"> 918</span> {</div>
|
|
926
|
+
<div class="line"><a name="l00919"></a><span class="lineno"> 919</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div>
|
|
927
|
+
<div class="line"><a name="l00920"></a><span class="lineno"> 920</span>  llvm::raw_string_ostream rawstr(str);</div>
|
|
928
|
+
<div class="line"><a name="l00921"></a><span class="lineno"> 921</span>  <span class="keywordflow">if</span> (val)</div>
|
|
929
|
+
<div class="line"><a name="l00922"></a><span class="lineno"> 922</span>  rawstr << <a class="code" href="namespaceSVF_1_1LLVMUtil.html#afa2f8c8ab19c75547c26ede53b9f6159">dumpValue</a>(val) << <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a8e4add30bd0ce00d3f2aa2e31c64fef8">getSourceLoc</a>(val);</div>
|
|
930
|
+
<div class="line"><a name="l00923"></a><span class="lineno"> 923</span>  <span class="keywordflow">else</span></div>
|
|
931
|
+
<div class="line"><a name="l00924"></a><span class="lineno"> 924</span>  rawstr << <span class="stringliteral">" llvm Value is null"</span>;</div>
|
|
932
|
+
<div class="line"><a name="l00925"></a><span class="lineno"> 925</span>  <span class="keywordflow">return</span> rawstr.str();</div>
|
|
933
|
+
<div class="line"><a name="l00926"></a><span class="lineno"> 926</span> }</div>
|
|
934
|
+
<div class="line"><a name="l00927"></a><span class="lineno"> 927</span>  </div>
|
|
935
|
+
<div class="line"><a name="l00928"></a><span class="lineno"> 928</span> <span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div>
|
|
936
|
+
<div class="line"><a name="l00929"></a><span class="lineno"> 929</span> {</div>
|
|
937
|
+
<div class="line"><a name="l00930"></a><span class="lineno"> 930</span>  </div>
|
|
938
|
+
<div class="line"><a name="l00931"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFValue.html#a4a0cfe3a8f37d33ffcdca3d66026dcc3"> 931</a></span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1SVFValue.html#a4a0cfe3a8f37d33ffcdca3d66026dcc3">SVFValue::toString</a>()<span class="keyword"> const</span></div>
|
|
939
|
+
<div class="line"><a name="l00932"></a><span class="lineno"> 932</span> <span class="keyword"></span>{</div>
|
|
940
|
+
<div class="line"><a name="l00933"></a><span class="lineno"> 933</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div>
|
|
941
|
+
<div class="line"><a name="l00934"></a><span class="lineno"> 934</span>  llvm::raw_string_ostream rawstr(str);</div>
|
|
942
|
+
<div class="line"><a name="l00935"></a><span class="lineno"> 935</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a>* fun = SVFUtil::dyn_cast<SVFFunction>(<span class="keyword">this</span>))</div>
|
|
943
|
+
<div class="line"><a name="l00936"></a><span class="lineno"> 936</span>  {</div>
|
|
944
|
+
<div class="line"><a name="l00937"></a><span class="lineno"> 937</span>  rawstr << <span class="stringliteral">"Function: "</span> << fun->getName() << <span class="stringliteral">" "</span>;</div>
|
|
945
|
+
<div class="line"><a name="l00938"></a><span class="lineno"> 938</span>  }</div>
|
|
946
|
+
<div class="line"><a name="l00939"></a><span class="lineno"> 939</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* bb = SVFUtil::dyn_cast<SVFBasicBlock>(<span class="keyword">this</span>))</div>
|
|
947
|
+
<div class="line"><a name="l00940"></a><span class="lineno"> 940</span>  {</div>
|
|
948
|
+
<div class="line"><a name="l00941"></a><span class="lineno"> 941</span>  rawstr << <span class="stringliteral">"BasicBlock: "</span> << bb->getName() << <span class="stringliteral">" "</span>;</div>
|
|
949
|
+
<div class="line"><a name="l00942"></a><span class="lineno"> 942</span>  }</div>
|
|
950
|
+
<div class="line"><a name="l00943"></a><span class="lineno"> 943</span>  <span class="keywordflow">else</span></div>
|
|
951
|
+
<div class="line"><a name="l00944"></a><span class="lineno"> 944</span>  {</div>
|
|
952
|
+
<div class="line"><a name="l00945"></a><span class="lineno"> 945</span>  <span class="keyword">auto</span> llvmVal = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#aaf9b679407f12b93afc53c157d37b444">getLLVMValue</a>(<span class="keyword">this</span>);</div>
|
|
953
|
+
<div class="line"><a name="l00946"></a><span class="lineno"> 946</span>  <span class="keywordflow">if</span> (llvmVal)</div>
|
|
954
|
+
<div class="line"><a name="l00947"></a><span class="lineno"> 947</span>  rawstr << <span class="stringliteral">" "</span> << *llvmVal << <span class="stringliteral">" "</span>;</div>
|
|
955
|
+
<div class="line"><a name="l00948"></a><span class="lineno"> 948</span>  <span class="keywordflow">else</span></div>
|
|
956
|
+
<div class="line"><a name="l00949"></a><span class="lineno"> 949</span>  rawstr << <span class="stringliteral">" No llvmVal found"</span>;</div>
|
|
957
|
+
<div class="line"><a name="l00950"></a><span class="lineno"> 950</span>  }</div>
|
|
958
|
+
<div class="line"><a name="l00951"></a><span class="lineno"> 951</span>  rawstr << this-><a class="code" href="classSVF_1_1SVFValue.html#a7effb0f37f486745e0cdc3ae5e9c732b">getSourceLoc</a>();</div>
|
|
959
|
+
<div class="line"><a name="l00952"></a><span class="lineno"> 952</span>  <span class="keywordflow">return</span> rawstr.str();</div>
|
|
960
|
+
<div class="line"><a name="l00953"></a><span class="lineno"> 953</span> }</div>
|
|
961
|
+
<div class="line"><a name="l00954"></a><span class="lineno"> 954</span>  </div>
|
|
962
|
+
<div class="line"><a name="l00955"></a><span class="lineno"> 955</span> } <span class="comment">// namespace SVF</span></div>
|
|
964
963
|
</div><!-- fragment --></div><!-- contents -->
|
|
965
964
|
<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#l00133">BasicTypes.h:133</a></div></div>
|
|
966
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a8e4add30bd0ce00d3f2aa2e31c64fef8"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a8e4add30bd0ce00d3f2aa2e31c64fef8">SVF::LLVMUtil::getSourceLoc</a></div><div class="ttdeci">const std::string getSourceLoc(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
967
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a484bbbc9713fc4be173943e6bc177fb5"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a484bbbc9713fc4be173943e6bc177fb5">SVF::LLVMUtil::removeUnusedFuncsAndAnnotationsAndGlobalVariables</a></div><div class="ttdeci">void removeUnusedFuncsAndAnnotationsAndGlobalVariables(Set< Function * > removedFuncList)</div><div class="ttdoc">Delete unused functions, annotations and global variables in extapi.bc.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
965
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a8e4add30bd0ce00d3f2aa2e31c64fef8"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a8e4add30bd0ce00d3f2aa2e31c64fef8">SVF::LLVMUtil::getSourceLoc</a></div><div class="ttdeci">const std::string getSourceLoc(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00678">LLVMUtil.cpp:678</a></div></div>
|
|
966
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a484bbbc9713fc4be173943e6bc177fb5"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a484bbbc9713fc4be173943e6bc177fb5">SVF::LLVMUtil::removeUnusedFuncsAndAnnotationsAndGlobalVariables</a></div><div class="ttdeci">void removeUnusedFuncsAndAnnotationsAndGlobalVariables(Set< Function * > removedFuncList)</div><div class="ttdoc">Delete unused functions, annotations and global variables in extapi.bc.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00564">LLVMUtil.cpp:564</a></div></div>
|
|
968
967
|
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a38ce45ae5f017c90115ce444b44d478c"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a38ce45ae5f017c90115ce444b44d478c">SVF::LLVMUtil::stripAllCasts</a></div><div class="ttdeci">const Value * stripAllCasts(const Value *val)</div><div class="ttdoc">Strip off the all casts.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00278">LLVMUtil.cpp:278</a></div></div>
|
|
969
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_afa2f8c8ab19c75547c26ede53b9f6159"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#afa2f8c8ab19c75547c26ede53b9f6159">SVF::LLVMUtil::dumpValue</a></div><div class="ttdeci">std::string dumpValue(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
968
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_afa2f8c8ab19c75547c26ede53b9f6159"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#afa2f8c8ab19c75547c26ede53b9f6159">SVF::LLVMUtil::dumpValue</a></div><div class="ttdeci">std::string dumpValue(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00895">LLVMUtil.cpp:895</a></div></div>
|
|
970
969
|
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_abc9c437b7da5cfe3d988dadfcbd0635f"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#abc9c437b7da5cfe3d988dadfcbd0635f">SVF::LLVMUtil::viewCFG</a></div><div class="ttdeci">void viewCFG(const Function *fun)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00259">LLVMUtil.cpp:259</a></div></div>
|
|
971
970
|
<div class="ttc" id="anamespaceSVF_html_a8de26e1810ea0c3b1e8ad62f1c8a864d"><div class="ttname"><a href="namespaceSVF.html#a8de26e1810ea0c3b1e8ad62f1c8a864d">SVF::SuccBBAndCondValPairVec</a></div><div class="ttdeci">std::vector< SuccBBAndCondValPair > SuccBBAndCondValPairVec</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00185">BasicTypes.h:185</a></div></div>
|
|
972
971
|
<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#l00105">LLVMModule.h:105</a></div></div>
|
|
973
972
|
<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#l00132">BasicTypes.h:132</a></div></div>
|
|
974
|
-
<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#
|
|
973
|
+
<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>
|
|
975
974
|
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_aca11801ed6ef6ff8d2a1e85bc0fc5794"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#aca11801ed6ef6ff8d2a1e85bc0fc5794">SVF::LLVMUtil::isObject</a></div><div class="ttdeci">bool isObject(const Value *ref)</div><div class="ttdoc">Return true if this value refers to a object.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00069">LLVMUtil.cpp:69</a></div></div>
|
|
976
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a86c0a0cb4ada72bd4f42c77558e6a350"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a86c0a0cb4ada72bd4f42c77558e6a350">SVF::LLVMUtil::dumpValueAndDbgInfo</a></div><div class="ttdeci">std::string dumpValueAndDbgInfo(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
975
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a86c0a0cb4ada72bd4f42c77558e6a350"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a86c0a0cb4ada72bd4f42c77558e6a350">SVF::LLVMUtil::dumpValueAndDbgInfo</a></div><div class="ttdeci">std::string dumpValueAndDbgInfo(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00917">LLVMUtil.cpp:917</a></div></div>
|
|
977
976
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_aaf9b679407f12b93afc53c157d37b444"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#aaf9b679407f12b93afc53c157d37b444">SVF::LLVMModuleSet::getLLVMValue</a></div><div class="ttdeci">const Value * getLLVMValue(const SVFValue *value) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00198">LLVMModule.h:198</a></div></div>
|
|
978
977
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a16d14e6712866d1d710c386c72d67181"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a16d14e6712866d1d710c386c72d67181">SVF::LLVMModuleSet::FunctionSetType</a></div><div class="ttdeci">std::vector< const Function * > FunctionSetType</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00050">LLVMModule.h:50</a></div></div>
|
|
979
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_accdd44093d6d145dc92edeaaff3f5732"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#accdd44093d6d145dc92edeaaff3f5732">SVF::LLVMUtil::processArguments</a></div><div class="ttdeci">void processArguments(int argc, char **argv, int &arg_num, char **arg_value, std::vector< std::string > &moduleNameVec)</div><div class="ttdoc">Parse argument for multi-module analysis.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
978
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_accdd44093d6d145dc92edeaaff3f5732"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#accdd44093d6d145dc92edeaaff3f5732">SVF::LLVMUtil::processArguments</a></div><div class="ttdeci">void processArguments(int argc, char **argv, int &arg_num, char **arg_value, std::vector< std::string > &moduleNameVec)</div><div class="ttdoc">Parse argument for multi-module analysis.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00433">LLVMUtil.cpp:433</a></div></div>
|
|
980
979
|
<div class="ttc" id="aLLVMUtil_8h_html"><div class="ttname"><a href="LLVMUtil_8h.html">LLVMUtil.h</a></div></div>
|
|
981
980
|
<div class="ttc" id="anamespaceSVF_html_af739db846e47ba6b2fd15eaad31ab7fb"><div class="ttname"><a href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">SVF::Set</a></div><div class="ttdeci">std::unordered_set< Key, Hash, KeyEqual, Allocator > Set</div><div class="ttdef"><b>Definition:</b> <a href="GeneralType_8h_source.html#l00092">GeneralType.h:92</a></div></div>
|
|
982
981
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a6e670254385050b9a5e612f881b07b9c"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a6e670254385050b9a5e612f881b07b9c">SVF::LLVMModuleSet::getDefinition</a></div><div class="ttdeci">const Function * getDefinition(const Function *fun) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00283">LLVMModule.h:283</a></div></div>
|
|
983
982
|
<div class="ttc" id="anamespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00085">BasicTypes.h:85</a></div></div>
|
|
984
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a9001722dd27bf487351725c3d7b65f2f"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a9001722dd27bf487351725c3d7b65f2f">SVF::LLVMUtil::getSuccBBandCondValPairVec</a></div><div class="ttdeci">void getSuccBBandCondValPairVec(const SwitchInst &switchInst, SuccBBAndCondValPairVec &vec)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
983
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a9001722dd27bf487351725c3d7b65f2f"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a9001722dd27bf487351725c3d7b65f2f">SVF::LLVMUtil::getSuccBBandCondValPairVec</a></div><div class="ttdeci">void getSuccBBandCondValPairVec(const SwitchInst &switchInst, SuccBBAndCondValPairVec &vec)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00858">LLVMUtil.cpp:858</a></div></div>
|
|
985
984
|
<div class="ttc" id="anamespaceSVF_html"><div class="ttname"><a href="namespaceSVF.html">SVF</a></div><div class="ttdoc">for isBitcode</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00066">BasicTypes.h:66</a></div></div>
|
|
986
|
-
<div class="ttc" id="anamespaceSVF_html_aa962cc1d782cc46553251e96b64a754b"><div class="ttname"><a href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">SVF::PointerType</a></div><div class="ttdeci">llvm::PointerType PointerType</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00095">BasicTypes.h:95</a></div></div>
|
|
987
985
|
<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>
|
|
988
986
|
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a07bd47ccfd02c5a2a6db26b537b2184f"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a07bd47ccfd02c5a2a6db26b537b2184f">SVF::LLVMUtil::stripConstantCasts</a></div><div class="ttdeci">const Value * stripConstantCasts(const Value *val)</div><div class="ttdoc">Strip off the constant casts.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00247">LLVMUtil.cpp:247</a></div></div>
|
|
989
987
|
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a026ae778570145a4719bd475f8f66d85"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a026ae778570145a4719bd475f8f66d85">SVF::LLVMUtil::getProgFunction</a></div><div class="ttdeci">const Function * getProgFunction(const std::string &funName)</div><div class="ttdoc">Get program entry function from module.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00049">LLVMUtil.cpp:49</a></div></div>
|
|
@@ -992,29 +990,29 @@ $(function() {
|
|
|
992
990
|
<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>
|
|
993
991
|
<div class="ttc" id="anamespaceSVF_html_a412280b134578905248ce0122c5db7c9"><div class="ttname"><a href="namespaceSVF.html#a412280b134578905248ce0122c5db7c9">SVF::SwitchInst</a></div><div class="ttdeci">llvm::SwitchInst SwitchInst</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00154">BasicTypes.h:154</a></div></div>
|
|
994
992
|
<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#l01358">LLVMModule.cpp:1358</a></div></div>
|
|
995
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ad8ee8de153df3f1bbdebb67185a2731c"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ad8ee8de153df3f1bbdebb67185a2731c">SVF::LLVMUtil::isConstantObjSym</a></div><div class="ttdeci">bool isConstantObjSym(const SVFValue *val)</div><div class="ttdoc">Check whether this value points-to a constant object.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
993
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ad8ee8de153df3f1bbdebb67185a2731c"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ad8ee8de153df3f1bbdebb67185a2731c">SVF::LLVMUtil::isConstantObjSym</a></div><div class="ttdeci">bool isConstantObjSym(const SVFValue *val)</div><div class="ttdoc">Check whether this value points-to a constant object.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00852">LLVMUtil.cpp:852</a></div></div>
|
|
996
994
|
<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>
|
|
997
995
|
<div class="ttc" id="anamespaceSVF_html_a52c8654c221bb53a59f70ea3cb1e5c45"><div class="ttname"><a href="namespaceSVF.html#a52c8654c221bb53a59f70ea3cb1e5c45">SVF::StructLayout</a></div><div class="ttdeci">llvm::StructLayout StructLayout</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00104">BasicTypes.h:104</a></div></div>
|
|
998
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ae2b444bb3e7a27d77386f588a78af8e2"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ae2b444bb3e7a27d77386f588a78af8e2">SVF::LLVMUtil::removeUnusedGlobalVariables</a></div><div class="ttdeci">void removeUnusedGlobalVariables(Module *module)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
996
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ae2b444bb3e7a27d77386f588a78af8e2"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ae2b444bb3e7a27d77386f588a78af8e2">SVF::LLVMUtil::removeUnusedGlobalVariables</a></div><div class="ttdeci">void removeUnusedGlobalVariables(Module *module)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00549">LLVMUtil.cpp:549</a></div></div>
|
|
999
997
|
<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#l00081">BasicTypes.h:81</a></div></div>
|
|
1000
998
|
<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>
|
|
1001
999
|
<div class="ttc" id="aclassSVF_1_1StInfo_html_ae5fad367673315da57a604e64b5889f0"><div class="ttname"><a href="classSVF_1_1StInfo.html#ae5fad367673315da57a604e64b5889f0">SVF::StInfo::getNumOfFlattenFields</a></div><div class="ttdeci">u32_t getNumOfFlattenFields() const</div><div class="ttdoc">Return the number of fields after flattening (ignoring array elements)</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00145">SVFType.h:145</a></div></div>
|
|
1002
1000
|
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a651b6a1cf3665277d2241220bb145aed"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a651b6a1cf3665277d2241220bb145aed">SVF::LLVMUtil::functionDoesNotRet</a></div><div class="ttdeci">bool functionDoesNotRet(const Function *fun)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00133">LLVMUtil.cpp:133</a></div></div>
|
|
1003
1001
|
<div class="ttc" id="acJSON_8h_html_a25d22ecc7e656d2c59332072684e8766"><div class="ttname"><a href="cJSON_8h.html#a25d22ecc7e656d2c59332072684e8766">name</a></div><div class="ttdeci">const char *const name</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00264">cJSON.h:264</a></div></div>
|
|
1004
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a47d2af43ff12d9e1014fa19256619466"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a47d2af43ff12d9e1014fa19256619466">SVF::LLVMUtil::getCalledFunctions</a></div><div class="ttdeci">std::vector< const Function * > getCalledFunctions(const Function *F)</div><div class="ttdoc">Get all called funcions in a parent function.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
1002
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a47d2af43ff12d9e1014fa19256619466"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a47d2af43ff12d9e1014fa19256619466">SVF::LLVMUtil::getCalledFunctions</a></div><div class="ttdeci">std::vector< const Function * > getCalledFunctions(const Function *F)</div><div class="ttdoc">Get all called funcions in a parent function.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00515">LLVMUtil.cpp:515</a></div></div>
|
|
1005
1003
|
<div class="ttc" id="anamespaceSVF_html_a5c943191dc4e242704943e5f594ae99e"><div class="ttname"><a href="namespaceSVF.html#a5c943191dc4e242704943e5f594ae99e">SVF::const_pred_iterator</a></div><div class="ttdeci">llvm::const_pred_iterator const_pred_iterator</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00253">BasicTypes.h:253</a></div></div>
|
|
1006
1004
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_aa4a604e47daaaf95babc7aca68991000"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#aa4a604e47daaaf95babc7aca68991000">SVF::LLVMModuleSet::getDeclaration</a></div><div class="ttdeci">const FunctionSetType & getDeclaration(const Function *fun) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00304">LLVMModule.h:304</a></div></div>
|
|
1007
1005
|
<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#l00084">BasicTypes.h:84</a></div></div>
|
|
1008
1006
|
<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#l00069">BasicTypes.h:69</a></div></div>
|
|
1009
1007
|
<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#l00145">BasicTypes.h:145</a></div></div>
|
|
1010
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a33e8378ae1a911169394e545a4ba2220"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a33e8378ae1a911169394e545a4ba2220">SVF::LLVMUtil::getCaseValue</a></div><div class="ttdeci">s64_t getCaseValue(const SwitchInst &switchInst, SuccBBAndCondValPair &succBB2CondVal)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
1008
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a33e8378ae1a911169394e545a4ba2220"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a33e8378ae1a911169394e545a4ba2220">SVF::LLVMUtil::getCaseValue</a></div><div class="ttdeci">s64_t getCaseValue(const SwitchInst &switchInst, SuccBBAndCondValPair &succBB2CondVal)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00868">LLVMUtil.cpp:868</a></div></div>
|
|
1011
1009
|
<div class="ttc" id="anamespaceSVF_html_a5ae718cba37d8e34d2946530dc098c8e"><div class="ttname"><a href="namespaceSVF.html#a5ae718cba37d8e34d2946530dc098c8e">SVF::ConstantArray</a></div><div class="ttdeci">llvm::ConstantArray ConstantArray</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00122">BasicTypes.h:122</a></div></div>
|
|
1012
1010
|
<div class="ttc" id="anamespaceSVF_html_a1d008c0666c145622b81d427be64c52d"><div class="ttname"><a href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">SVF::Type</a></div><div class="ttdeci">llvm::Type Type</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00082">BasicTypes.h:82</a></div></div>
|
|
1013
1011
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_ab0c0f321b6bfbfab2e4ff06d81920ab9"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">SVF::LLVMModuleSet::getSVFBasicBlock</a></div><div class="ttdeci">SVFBasicBlock * getSVFBasicBlock(const BasicBlock *bb) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00212">LLVMModule.h:212</a></div></div>
|
|
1014
1012
|
<div class="ttc" id="anamespaceSVF_html_a09f5fa3bc44bf53612a085e3a611cc4e"><div class="ttname"><a href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">SVF::GlobalVariable</a></div><div class="ttdeci">llvm::GlobalVariable GlobalVariable</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00129">BasicTypes.h:129</a></div></div>
|
|
1015
|
-
<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#
|
|
1013
|
+
<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#l00906">LLVMUtil.cpp:906</a></div></div>
|
|
1016
1014
|
<div class="ttc" id="anamespaceSVF_html_a146d286041987860388da3d8bc85cee3"><div class="ttname"><a href="namespaceSVF.html#a146d286041987860388da3d8bc85cee3">SVF::ArrayType</a></div><div class="ttdeci">llvm::ArrayType ArrayType</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00094">BasicTypes.h:94</a></div></div>
|
|
1017
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ab8511d0e24da255dd518457568326c70"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ab8511d0e24da255dd518457568326c70">SVF::LLVMUtil::getFunction</a></div><div class="ttdeci">const SVFFunction * getFunction(const std::string &name)</div><div class="ttdoc">Get the corresponding Function based on its name.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
1015
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ab8511d0e24da255dd518457568326c70"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ab8511d0e24da255dd518457568326c70">SVF::LLVMUtil::getFunction</a></div><div class="ttdeci">const SVFFunction * getFunction(const std::string &name)</div><div class="ttdoc">Get the corresponding Function based on its name.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00640">LLVMUtil.cpp:640</a></div></div>
|
|
1018
1016
|
<div class="ttc" id="aclassSVF_1_1SVFBasicBlock_html"><div class="ttname"><a href="classSVF_1_1SVFBasicBlock.html">SVF::SVFBasicBlock</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00527">SVFValue.h:527</a></div></div>
|
|
1019
1017
|
<div class="ttc" id="aclassSVF_1_1SVFValue_html"><div class="ttname"><a href="classSVF_1_1SVFValue.html">SVF::SVFValue</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00177">SVFValue.h:177</a></div></div>
|
|
1020
1018
|
<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>
|
|
@@ -1026,13 +1024,13 @@ $(function() {
|
|
|
1026
1024
|
<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#l00093">BasicTypes.h:93</a></div></div>
|
|
1027
1025
|
<div class="ttc" id="anamespaceSVF_html_a2b28f48dde0a9a91d251e654ce1f9477"><div class="ttname"><a href="namespaceSVF.html#a2b28f48dde0a9a91d251e654ce1f9477">SVF::ConstantStruct</a></div><div class="ttdeci">llvm::ConstantStruct ConstantStruct</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00105">BasicTypes.h:105</a></div></div>
|
|
1028
1026
|
<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>
|
|
1029
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ad8a8c32a09340f491fffffcb07dd7a41"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ad8a8c32a09340f491fffffcb07dd7a41">SVF::LLVMUtil::isIRFile</a></div><div class="ttdeci">bool isIRFile(const std::string &filename)</div><div class="ttdoc">Check whether a file is an LLVM IR file.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
1027
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ad8a8c32a09340f491fffffcb07dd7a41"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ad8a8c32a09340f491fffffcb07dd7a41">SVF::LLVMUtil::isIRFile</a></div><div class="ttdeci">bool isIRFile(const std::string &filename)</div><div class="ttdoc">Check whether a file is an LLVM IR file.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00412">LLVMUtil.cpp:412</a></div></div>
|
|
1030
1028
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a32558da64f03452c502ec57d1e106427"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a32558da64f03452c502ec57d1e106427">SVF::LLVMModuleSet::hasDefinition</a></div><div class="ttdeci">bool hasDefinition(const Function *fun) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00276">LLVMModule.h:276</a></div></div>
|
|
1031
1029
|
<div class="ttc" id="anamespaceSVF_html_ad3d3cec1813411f039211c86236f7adb"><div class="ttname"><a href="namespaceSVF.html#ad3d3cec1813411f039211c86236f7adb">SVF::MDNode</a></div><div class="ttdeci">llvm::MDNode MDNode</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00111">BasicTypes.h:111</a></div></div>
|
|
1032
1030
|
<div class="ttc" id="aclassSVF_1_1SVFFunction_html_af264312f0020bde9151697bccfde3263"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#af264312f0020bde9151697bccfde3263">SVF::SVFFunction::getReturnType</a></div><div class="ttdeci">const SVFType * getReturnType() const</div><div class="ttdoc">Returns the FunctionType.</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00389">SVFValue.h:389</a></div></div>
|
|
1033
1031
|
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a151fd7fb2b2ebe72af7c417defbb4f4d"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a151fd7fb2b2ebe72af7c417defbb4f4d">SVF::LLVMUtil::getDataLayout</a></div><div class="ttdeci">static DataLayout * getDataLayout(Module *mod)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00282">LLVMUtil.h:282</a></div></div>
|
|
1034
1032
|
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_adfa4a4e6d13004d14137d9168bd32463"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#adfa4a4e6d13004d14137d9168bd32463">SVF::LLVMUtil::isInt2PtrConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isInt2PtrConstantExpr(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00194">LLVMUtil.h:194</a></div></div>
|
|
1035
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a973ee05189ca5bbe832be00f2be9baa4"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a973ee05189ca5bbe832be00f2be9baa4">SVF::LLVMUtil::getGlobalRep</a></div><div class="ttdeci">const Value * getGlobalRep(const Value *val)</div><div class="ttdoc">find the unique defined global across multiple modules</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
1033
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a973ee05189ca5bbe832be00f2be9baa4"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a973ee05189ca5bbe832be00f2be9baa4">SVF::LLVMUtil::getGlobalRep</a></div><div class="ttdeci">const Value * getGlobalRep(const Value *val)</div><div class="ttdoc">find the unique defined global across multiple modules</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00645">LLVMUtil.cpp:645</a></div></div>
|
|
1036
1034
|
<div class="ttc" id="anamespaceSVF_html_a962e9a9044a46fc4bd2367384f6e0827"><div class="ttname"><a href="namespaceSVF.html#a962e9a9044a46fc4bd2367384f6e0827">SVF::CastInst</a></div><div class="ttdeci">llvm::CastInst CastInst</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00157">BasicTypes.h:157</a></div></div>
|
|
1037
1035
|
<div class="ttc" id="aclassSVF_1_1ExtAPI_html_a58a764c27354d5f9b70995d30de65f1d"><div class="ttname"><a href="classSVF_1_1ExtAPI.html#a58a764c27354d5f9b70995d30de65f1d">SVF::ExtAPI::getExtAPI</a></div><div class="ttdeci">static ExtAPI * getExtAPI()</div><div class="ttdef"><b>Definition:</b> <a href="ExtAPI_8cpp_source.html#l00042">ExtAPI.cpp:42</a></div></div>
|
|
1038
1036
|
<div class="ttc" id="aclassSVF_1_1SVFType_html_a05850c17c2dbe42e5602dc8c9a70f3bd"><div class="ttname"><a href="classSVF_1_1SVFType.html#a05850c17c2dbe42e5602dc8c9a70f3bd">SVF::SVFType::getTypeInfo</a></div><div class="ttdeci">StInfo * getTypeInfo()</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00230">SVFType.h:230</a></div></div>
|
|
@@ -1046,20 +1044,20 @@ $(function() {
|
|
|
1046
1044
|
<div class="ttc" id="aLLVMModule_8h_html"><div class="ttname"><a href="LLVMModule_8h.html">LLVMModule.h</a></div></div>
|
|
1047
1045
|
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_abb4b5ed04ec70a2e7fca8198132370cf"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#abb4b5ed04ec70a2e7fca8198132370cf">SVF::LLVMUtil::basicBlockHasRetInst</a></div><div class="ttdeci">bool basicBlockHasRetInst(const BasicBlock *bb)</div><div class="ttdoc">Return true if the function has a return instruction.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00119">LLVMUtil.cpp:119</a></div></div>
|
|
1048
1046
|
<div class="ttc" id="anamespaceSVF_html_a3436a988bf80c021cd8022fb445b66d5"><div class="ttname"><a href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">SVF::succ_const_iterator</a></div><div class="ttdeci">llvm::succ_const_iterator succ_const_iterator</div><div class="ttdoc">LLVM Iterators.</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00275">BasicTypes.h:275</a></div></div>
|
|
1049
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_acee7c2fb08e111eda4d91ce5479de05e"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#acee7c2fb08e111eda4d91ce5479de05e">SVF::LLVMUtil::isUnusedGlobalVariable</a></div><div class="ttdeci">bool isUnusedGlobalVariable(const GlobalVariable &global)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
1047
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_acee7c2fb08e111eda4d91ce5479de05e"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#acee7c2fb08e111eda4d91ce5479de05e">SVF::LLVMUtil::isUnusedGlobalVariable</a></div><div class="ttdeci">bool isUnusedGlobalVariable(const GlobalVariable &global)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00534">LLVMUtil.cpp:534</a></div></div>
|
|
1050
1048
|
<div class="ttc" id="anamespaceSVF_html_afc1b50355821e7299df03b026e36f1df"><div class="ttname"><a href="namespaceSVF.html#afc1b50355821e7299df03b026e36f1df">SVF::User</a></div><div class="ttdeci">llvm::User User</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00141">BasicTypes.h:141</a></div></div>
|
|
1051
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a2acb79d8c24884ee2dcbba37d98021d9"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a2acb79d8c24884ee2dcbba37d98021d9">SVF::LLVMUtil::removeFunAnnotations</a></div><div class="ttdeci">void removeFunAnnotations(Set< Function * > &removedFuncList)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
1052
|
-
<div class="ttc" id="aclassSVF_1_1SVFValue_html_a4a0cfe3a8f37d33ffcdca3d66026dcc3"><div class="ttname"><a href="classSVF_1_1SVFValue.html#a4a0cfe3a8f37d33ffcdca3d66026dcc3">SVF::SVFValue::toString</a></div><div class="ttdeci">std::string toString() const</div><div class="ttdoc">Needs to be implemented by a SVF front end.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
1049
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a2acb79d8c24884ee2dcbba37d98021d9"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a2acb79d8c24884ee2dcbba37d98021d9">SVF::LLVMUtil::removeFunAnnotations</a></div><div class="ttdeci">void removeFunAnnotations(Set< Function * > &removedFuncList)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00460">LLVMUtil.cpp:460</a></div></div>
|
|
1050
|
+
<div class="ttc" id="aclassSVF_1_1SVFValue_html_a4a0cfe3a8f37d33ffcdca3d66026dcc3"><div class="ttname"><a href="classSVF_1_1SVFValue.html#a4a0cfe3a8f37d33ffcdca3d66026dcc3">SVF::SVFValue::toString</a></div><div class="ttdeci">std::string toString() const</div><div class="ttdoc">Needs to be implemented by a SVF front end.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00931">LLVMUtil.cpp:931</a></div></div>
|
|
1053
1051
|
<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>
|
|
1054
1052
|
<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>
|
|
1055
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a2b32283ee2dbb9cef1d17ab6f2719e0c"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a2b32283ee2dbb9cef1d17ab6f2719e0c">SVF::LLVMUtil::getSourceLocOfFunction</a></div><div class="ttdeci">const std::string getSourceLocOfFunction(const Function *F)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
1053
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a2b32283ee2dbb9cef1d17ab6f2719e0c"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a2b32283ee2dbb9cef1d17ab6f2719e0c">SVF::LLVMUtil::getSourceLocOfFunction</a></div><div class="ttdeci">const std::string getSourceLocOfFunction(const Function *F)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00782">LLVMUtil.cpp:782</a></div></div>
|
|
1056
1054
|
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a9bd6f54920929e5ad35102ba2f2223da"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a9bd6f54920929e5ad35102ba2f2223da">SVF::LLVMUtil::getFunReachableBBs</a></div><div class="ttdeci">void getFunReachableBBs(const Function *svfFun, std::vector< const SVFBasicBlock * > &bbs)</div><div class="ttdoc">Get reachable basic block from function entry.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00084">LLVMUtil.cpp:84</a></div></div>
|
|
1057
1055
|
<div class="ttc" id="anamespaceSVF_html_a911dbaab38cb42deb9c195c7f687853d"><div class="ttname"><a href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">SVF::ConstantExpr</a></div><div class="ttdeci">llvm::ConstantExpr ConstantExpr</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00119">BasicTypes.h:119</a></div></div>
|
|
1058
1056
|
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a2abbe4ed46b2031a981d93b3ba9d3fbd"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a2abbe4ed46b2031a981d93b3ba9d3fbd">SVF::LLVMUtil::viewCFGOnly</a></div><div class="ttdeci">void viewCFGOnly(const Function *fun)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00267">LLVMUtil.cpp:267</a></div></div>
|
|
1059
1057
|
<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< const SVFInstruction * > &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>
|
|
1060
1058
|
<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>
|
|
1061
1059
|
<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>
|
|
1062
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ae617611b584e3d899984c376a6e91987"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ae617611b584e3d899984c376a6e91987">SVF::LLVMUtil::getBBPredecessorNum</a></div><div class="ttdeci">u32_t getBBPredecessorNum(const BasicBlock *BB)</div><div class="ttdoc">Get num of BB's predecessors.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
1060
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ae617611b584e3d899984c376a6e91987"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ae617611b584e3d899984c376a6e91987">SVF::LLVMUtil::getBBPredecessorNum</a></div><div class="ttdeci">u32_t getBBPredecessorNum(const BasicBlock *BB)</div><div class="ttdoc">Get num of BB's predecessors.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00399">LLVMUtil.cpp:399</a></div></div>
|
|
1063
1061
|
<div class="ttc" id="anamespaceSVF_html_a3011dbac9102f044ad5f36a4ad3d4a71"><div class="ttname"><a href="namespaceSVF.html#a3011dbac9102f044ad5f36a4ad3d4a71">SVF::NamedMDNode</a></div><div class="ttdeci">llvm::NamedMDNode NamedMDNode</div><div class="ttdoc">LLVM metadata and debug information.</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00110">BasicTypes.h:110</a></div></div>
|
|
1064
1062
|
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a5a7dc8680a9714e08b01dd339b85bb20"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a5a7dc8680a9714e08b01dd339b85bb20">SVF::LLVMUtil::isCallSite</a></div><div class="ttdeci">bool isCallSite(const Instruction *inst)</div><div class="ttdoc">Whether an instruction is a call or invoke instruction.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00045">LLVMUtil.h:45</a></div></div>
|
|
1065
1063
|
<div class="ttc" id="aclassSVF_1_1ExtAPI_html_a26bc352dbfd1b2fe34106a73f1f6d50c"><div class="ttname"><a href="classSVF_1_1ExtAPI.html#a26bc352dbfd1b2fe34106a73f1f6d50c">SVF::ExtAPI::getExtBcPath</a></div><div class="ttdeci">std::string getExtBcPath()</div><div class="ttdef"><b>Definition:</b> <a href="ExtAPI_8cpp_source.html#l00127">ExtAPI.cpp:127</a></div></div>
|
|
@@ -1068,14 +1066,14 @@ $(function() {
|
|
|
1068
1066
|
<div class="ttc" id="anamespaceSVF_html_ad781b0b14e89773e774072b280658ef3"><div class="ttname"><a href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">SVF::s64_t</a></div><div class="ttdeci">signed long long s64_t</div><div class="ttdef"><b>Definition:</b> <a href="GeneralType_8h_source.html#l00049">GeneralType.h:49</a></div></div>
|
|
1069
1067
|
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a003b769751b93b94bdb011bd704cfde1"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">SVF::LLVMUtil::isIntrinsicInst</a></div><div class="ttdeci">bool isIntrinsicInst(const Instruction *inst)</div><div class="ttdoc">Return true if it is an intrinsic instruction.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00231">LLVMUtil.cpp:231</a></div></div>
|
|
1070
1068
|
<div class="ttc" id="aSymbolTableInfo_8h_html"><div class="ttname"><a href="SymbolTableInfo_8h.html">SymbolTableInfo.h</a></div></div>
|
|
1071
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a09683d4d88a50fa621809c734465f94d"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a09683d4d88a50fa621809c734465f94d">SVF::LLVMUtil::getTypeSizeInBytes</a></div><div class="ttdeci">u32_t getTypeSizeInBytes(const Type *type)</div><div class="ttdoc">Helper method to get the size of the type from target data layout.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
1069
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a09683d4d88a50fa621809c734465f94d"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a09683d4d88a50fa621809c734465f94d">SVF::LLVMUtil::getTypeSizeInBytes</a></div><div class="ttdeci">u32_t getTypeSizeInBytes(const Type *type)</div><div class="ttdoc">Helper method to get the size of the type from target data layout.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00655">LLVMUtil.cpp:655</a></div></div>
|
|
1072
1070
|
<div class="ttc" id="aclassSVF_1_1SVFValue_html_a7effb0f37f486745e0cdc3ae5e9c732b"><div class="ttname"><a href="classSVF_1_1SVFValue.html#a7effb0f37f486745e0cdc3ae5e9c732b">SVF::SVFValue::getSourceLoc</a></div><div class="ttdeci">virtual const std::string getSourceLoc() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00280">SVFValue.h:280</a></div></div>
|
|
1073
1071
|
<div class="ttc" id="anamespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="GeneralType_8h_source.html#l00046">GeneralType.h:46</a></div></div>
|
|
1074
1072
|
<div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_ab65033f068bfbeb0a1c52dcec3beb6bc"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVF::SVFUtil::errs</a></div><div class="ttdeci">std::ostream & errs()</div><div class="ttdoc">Overwrite llvm::errs()</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00056">SVFUtil.h:56</a></div></div>
|
|
1075
1073
|
<div class="ttc" id="anamespaceSVF_html_a58cdfbc4160cae08745b67844ac29801"><div class="ttname"><a href="namespaceSVF.html#a58cdfbc4160cae08745b67844ac29801">SVF::Argument</a></div><div class="ttdeci">llvm::Argument Argument</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00144">BasicTypes.h:144</a></div></div>
|
|
1076
1074
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a757bf149437cce22163c764ea9993e12"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a757bf149437cce22163c764ea9993e12">SVF::LLVMModuleSet::getGlobalRep</a></div><div class="ttdeci">GlobalVariable * getGlobalRep(const GlobalVariable *val) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00322">LLVMModule.h:322</a></div></div>
|
|
1077
1075
|
<div class="ttc" id="anamespaceSVF_html_a255efa5be786996cbdd0c1f3d98b8400"><div class="ttname"><a href="namespaceSVF.html#a255efa5be786996cbdd0c1f3d98b8400">SVF::SuccBBAndCondValPair</a></div><div class="ttdeci">std::pair< const BasicBlock *, const ConstantInt * > SuccBBAndCondValPair</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00184">BasicTypes.h:184</a></div></div>
|
|
1078
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ab5b55fce942ab6d7995541f3fe0503f8"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ab5b55fce942ab6d7995541f3fe0503f8">SVF::LLVMUtil::getNumOfElements</a></div><div class="ttdeci">u32_t getNumOfElements(const Type *ety)</div><div class="ttdoc">Return size of this object based on LLVM value.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
1076
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ab5b55fce942ab6d7995541f3fe0503f8"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ab5b55fce942ab6d7995541f3fe0503f8">SVF::LLVMUtil::getNumOfElements</a></div><div class="ttdeci">u32_t getNumOfElements(const Type *ety)</div><div class="ttdoc">Return size of this object based on LLVM value.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00382">LLVMUtil.cpp:382</a></div></div>
|
|
1079
1077
|
<!-- start footer part -->
|
|
1080
1078
|
<hr class="footer"/><address class="footer"><small>
|
|
1081
1079
|
Generated by  <a href="http://www.doxygen.org/index.html">
|