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.
Files changed (129) hide show
  1. package/SVF-doxygen/html/AbstractExecution_8cpp_source.html +451 -450
  2. package/SVF-doxygen/html/AbstractExecution_8h_source.html +11 -11
  3. package/SVF-doxygen/html/AccessPath_8cpp_source.html +150 -147
  4. package/SVF-doxygen/html/AccessPath_8h_source.html +6 -6
  5. package/SVF-doxygen/html/Andersen_8cpp_source.html +1 -1
  6. package/SVF-doxygen/html/BufOverflowChecker_8cpp_source.html +426 -425
  7. package/SVF-doxygen/html/BufOverflowChecker_8h_source.html +2 -2
  8. package/SVF-doxygen/html/CFLAlias_8cpp_source.html +1 -1
  9. package/SVF-doxygen/html/ConsG_8cpp_source.html +1 -1
  10. package/SVF-doxygen/html/CppUtil_8cpp_source.html +3 -3
  11. package/SVF-doxygen/html/CxtStmt_8h_source.html +1 -1
  12. package/SVF-doxygen/html/DCHG_8cpp_source.html +1 -1
  13. package/SVF-doxygen/html/DDAClient_8cpp_source.html +1 -1
  14. package/SVF-doxygen/html/ICFGSimplification_8cpp_source.html +43 -44
  15. package/SVF-doxygen/html/ICFGWTO_8h_source.html +4 -4
  16. package/SVF-doxygen/html/ICFG_8cpp_source.html +1 -1
  17. package/SVF-doxygen/html/LLVMModule_8cpp_source.html +6 -6
  18. package/SVF-doxygen/html/LLVMUtil_8cpp_source.html +575 -577
  19. package/SVF-doxygen/html/LLVMUtil_8h_source.html +21 -21
  20. package/SVF-doxygen/html/LockResultValidator_8cpp_source.html +1 -1
  21. package/SVF-doxygen/html/MHP_8cpp_source.html +1 -1
  22. package/SVF-doxygen/html/MemSSA_8cpp_source.html +1 -1
  23. package/SVF-doxygen/html/ObjTypeInference_8cpp.html +1 -1
  24. package/SVF-doxygen/html/ObjTypeInference_8cpp_source.html +3 -3
  25. package/SVF-doxygen/html/PointerAnalysis_8cpp_source.html +1 -1
  26. package/SVF-doxygen/html/SVFIR2ItvExeState_8cpp_source.html +828 -827
  27. package/SVF-doxygen/html/SVFIR2ItvExeState_8h_source.html +20 -20
  28. package/SVF-doxygen/html/SVFIRBuilder_8cpp_source.html +5 -5
  29. package/SVF-doxygen/html/SVFStatements_8cpp_source.html +1 -1
  30. package/SVF-doxygen/html/SVFStatements_8h_source.html +1 -1
  31. package/SVF-doxygen/html/SVFValue_8cpp_source.html +1 -1
  32. package/SVF-doxygen/html/SVFValue_8h_source.html +1 -1
  33. package/SVF-doxygen/html/SVFVariables_8cpp_source.html +1 -1
  34. package/SVF-doxygen/html/Steensgaard_8cpp_source.html +1 -1
  35. package/SVF-doxygen/html/SymbolTableBuilder_8cpp_source.html +5 -5
  36. package/SVF-doxygen/html/SymbolTableInfo_8cpp_source.html +1 -1
  37. package/SVF-doxygen/html/WTO_8h.html +1 -0
  38. package/SVF-doxygen/html/WTO_8h_source.html +812 -811
  39. package/SVF-doxygen/html/ae_8cpp.html +46 -47
  40. package/SVF-doxygen/html/ae_8cpp_source.html +46 -47
  41. package/SVF-doxygen/html/classSVF_1_1AEAPI.html +432 -431
  42. package/SVF-doxygen/html/classSVF_1_1AbstractExecution.html +22 -22
  43. package/SVF-doxygen/html/classSVF_1_1AccessPath.html +136 -133
  44. package/SVF-doxygen/html/classSVF_1_1ActualINSVFGNode.html +1 -1
  45. package/SVF-doxygen/html/classSVF_1_1ActualOUTSVFGNode.html +1 -1
  46. package/SVF-doxygen/html/classSVF_1_1AddrStmt.html +1 -1
  47. package/SVF-doxygen/html/classSVF_1_1AliasDDAClient.html +1 -1
  48. package/SVF-doxygen/html/classSVF_1_1Andersen.html +1 -1
  49. package/SVF-doxygen/html/classSVF_1_1BinaryOPStmt.html +1 -1
  50. package/SVF-doxygen/html/classSVF_1_1BinaryOPVFGNode.html +1 -1
  51. package/SVF-doxygen/html/classSVF_1_1BranchStmt.html +1 -1
  52. package/SVF-doxygen/html/classSVF_1_1BufOverflowCheckerAPI.html +82 -81
  53. package/SVF-doxygen/html/classSVF_1_1CFLAlias.html +1 -1
  54. package/SVF-doxygen/html/classSVF_1_1CallCFGEdge.html +1 -1
  55. package/SVF-doxygen/html/classSVF_1_1CallPE.html +1 -1
  56. package/SVF-doxygen/html/classSVF_1_1CmpStmt.html +1 -1
  57. package/SVF-doxygen/html/classSVF_1_1CmpVFGNode.html +1 -1
  58. package/SVF-doxygen/html/classSVF_1_1CopyStmt.html +1 -1
  59. package/SVF-doxygen/html/classSVF_1_1CxtStmt.html +1 -1
  60. package/SVF-doxygen/html/classSVF_1_1CxtThread.html +1 -1
  61. package/SVF-doxygen/html/classSVF_1_1CxtThreadStmt.html +1 -1
  62. package/SVF-doxygen/html/classSVF_1_1DCHGraph.html +1 -1
  63. package/SVF-doxygen/html/classSVF_1_1DoubleFreeChecker.html +1 -1
  64. package/SVF-doxygen/html/classSVF_1_1FIObjVar.html +1 -1
  65. package/SVF-doxygen/html/classSVF_1_1ForkJoinAnalysis.html +1 -1
  66. package/SVF-doxygen/html/classSVF_1_1GepObjVar.html +1 -1
  67. package/SVF-doxygen/html/classSVF_1_1GepStmt.html +2 -2
  68. package/SVF-doxygen/html/classSVF_1_1GepValVar.html +1 -1
  69. package/SVF-doxygen/html/classSVF_1_1ICFG.html +1 -1
  70. package/SVF-doxygen/html/classSVF_1_1ICFGSimplification.html +43 -44
  71. package/SVF-doxygen/html/classSVF_1_1InterMSSAPHISVFGNode.html +1 -1
  72. package/SVF-doxygen/html/classSVF_1_1InterPHIVFGNode.html +1 -1
  73. package/SVF-doxygen/html/classSVF_1_1IntraCFGEdge.html +1 -1
  74. package/SVF-doxygen/html/classSVF_1_1IntraICFGNode.html +1 -1
  75. package/SVF-doxygen/html/classSVF_1_1IntraPHIVFGNode.html +1 -1
  76. package/SVF-doxygen/html/classSVF_1_1LLVMModuleSet.html +6 -6
  77. package/SVF-doxygen/html/classSVF_1_1LeakChecker.html +1 -1
  78. package/SVF-doxygen/html/classSVF_1_1LoadStmt.html +1 -1
  79. package/SVF-doxygen/html/classSVF_1_1LockResultValidator.html +1 -1
  80. package/SVF-doxygen/html/classSVF_1_1MHP.html +1 -1
  81. package/SVF-doxygen/html/classSVF_1_1MTAResultValidator.html +1 -1
  82. package/SVF-doxygen/html/classSVF_1_1MemObj.html +1 -1
  83. package/SVF-doxygen/html/classSVF_1_1MemSSA.html +1 -1
  84. package/SVF-doxygen/html/classSVF_1_1ObjTypeInference.html +3 -3
  85. package/SVF-doxygen/html/classSVF_1_1ObjVar.html +1 -1
  86. package/SVF-doxygen/html/classSVF_1_1PHIVFGNode.html +1 -1
  87. package/SVF-doxygen/html/classSVF_1_1PhiStmt.html +1 -1
  88. package/SVF-doxygen/html/classSVF_1_1PointerAnalysis.html +1 -1
  89. package/SVF-doxygen/html/classSVF_1_1RetCFGEdge.html +1 -1
  90. package/SVF-doxygen/html/classSVF_1_1RetPE.html +1 -1
  91. package/SVF-doxygen/html/classSVF_1_1SVFIR2ItvExeState.html +792 -791
  92. package/SVF-doxygen/html/classSVF_1_1SVFIRBuilder.html +5 -5
  93. package/SVF-doxygen/html/classSVF_1_1SVFValue.html +23 -23
  94. package/SVF-doxygen/html/classSVF_1_1SelectStmt.html +1 -1
  95. package/SVF-doxygen/html/classSVF_1_1Steensgaard.html +1 -1
  96. package/SVF-doxygen/html/classSVF_1_1StoreStmt.html +1 -1
  97. package/SVF-doxygen/html/classSVF_1_1SymbolTableBuilder.html +4 -4
  98. package/SVF-doxygen/html/classSVF_1_1TCT.html +1 -1
  99. package/SVF-doxygen/html/classSVF_1_1TDForkPE.html +1 -1
  100. package/SVF-doxygen/html/classSVF_1_1TDJoinPE.html +1 -1
  101. package/SVF-doxygen/html/classSVF_1_1UnaryOPStmt.html +1 -1
  102. package/SVF-doxygen/html/classSVF_1_1UnaryOPVFGNode.html +1 -1
  103. package/SVF-doxygen/html/classSVF_1_1ValVar.html +1 -1
  104. package/SVF-doxygen/html/classSVF_1_1WTO.html +253 -253
  105. package/SVF-doxygen/html/classSVF_1_1WTOComponent.html +21 -21
  106. package/SVF-doxygen/html/classSVF_1_1WTOComponentVisitor.html +3 -3
  107. package/SVF-doxygen/html/classSVF_1_1WTOCycle.html +61 -61
  108. package/SVF-doxygen/html/classSVF_1_1WTOCycleDepth.html +115 -115
  109. package/SVF-doxygen/html/classSVF_1_1WTONode.html +31 -31
  110. package/SVF-doxygen/html/classSVF_1_1WTO_1_1WTOCycleDepthBuilder.html +31 -31
  111. package/SVF-doxygen/html/namespaceSVF_1_1LLVMUtil.html +503 -505
  112. package/SVF-doxygen/html/namespaceSVF_1_1cppUtil.html +2 -2
  113. package/SVF-doxygen/html/structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +1 -1
  114. package/SVF-doxygen/html/structSVF_1_1has__edgetype.html +1 -1
  115. 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
  116. package/SVF-doxygen/html/structSVF_1_1has__nodetype.html +1 -1
  117. 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
  118. package/SVF-doxygen/html/svf-ex_8cpp.html +12 -12
  119. package/SVF-doxygen/html/svf-ex_8cpp_source.html +12 -12
  120. package/package.json +1 -1
  121. package/svf/include/Graphs/WTO.h +1 -0
  122. package/svf/lib/AE/Svfexe/AbstractExecution.cpp +1 -0
  123. package/svf/lib/AE/Svfexe/BufOverflowChecker.cpp +1 -0
  124. package/svf/lib/AE/Svfexe/ICFGSimplification.cpp +1 -2
  125. package/svf/lib/AE/Svfexe/SVFIR2ItvExeState.cpp +1 -0
  126. package/svf/lib/MemoryModel/AccessPath.cpp +4 -1
  127. package/svf-llvm/lib/LLVMUtil.cpp +1 -2
  128. package/svf-llvm/lib/SVFIRBuilder.cpp +1 -1
  129. package/svf-llvm/tools/AE/ae.cpp +1 -2
@@ -363,16 +363,16 @@ Functions</h2></td></tr>
363
363
  </table>
364
364
  </div><div class="memdoc">
365
365
 
366
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00907">907</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
367
- <div class="fragment"><div class="line"><a name="l00908"></a><span class="lineno"> 908</span>&#160;{</div>
368
- <div class="line"><a name="l00909"></a><span class="lineno"> 909</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div>
369
- <div class="line"><a name="l00910"></a><span class="lineno"> 910</span>&#160; llvm::raw_string_ostream rawstr(str);</div>
370
- <div class="line"><a name="l00911"></a><span class="lineno"> 911</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>)</div>
371
- <div class="line"><a name="l00912"></a><span class="lineno"> 912</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; &quot;</span> &lt;&lt; *<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div>
372
- <div class="line"><a name="l00913"></a><span class="lineno"> 913</span>&#160; <span class="keywordflow">else</span></div>
373
- <div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; llvm type is null&quot;</span>;</div>
374
- <div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div>
375
- <div class="line"><a name="l00916"></a><span class="lineno"> 916</span>&#160;}</div>
366
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00906">906</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
367
+ <div class="fragment"><div class="line"><a name="l00907"></a><span class="lineno"> 907</span>&#160;{</div>
368
+ <div class="line"><a name="l00908"></a><span class="lineno"> 908</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div>
369
+ <div class="line"><a name="l00909"></a><span class="lineno"> 909</span>&#160; llvm::raw_string_ostream rawstr(str);</div>
370
+ <div class="line"><a name="l00910"></a><span class="lineno"> 910</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>)</div>
371
+ <div class="line"><a name="l00911"></a><span class="lineno"> 911</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; &quot;</span> &lt;&lt; *<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div>
372
+ <div class="line"><a name="l00912"></a><span class="lineno"> 912</span>&#160; <span class="keywordflow">else</span></div>
373
+ <div class="line"><a name="l00913"></a><span class="lineno"> 913</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; llvm type is null&quot;</span>;</div>
374
+ <div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div>
375
+ <div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160;}</div>
376
376
  </div><!-- fragment -->
377
377
  </div>
378
378
  </div>
@@ -392,16 +392,16 @@ Functions</h2></td></tr>
392
392
  </table>
393
393
  </div><div class="memdoc">
394
394
 
395
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00896">896</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
396
- <div class="fragment"><div class="line"><a name="l00897"></a><span class="lineno"> 897</span>&#160;{</div>
397
- <div class="line"><a name="l00898"></a><span class="lineno"> 898</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div>
398
- <div class="line"><a name="l00899"></a><span class="lineno"> 899</span>&#160; llvm::raw_string_ostream rawstr(str);</div>
399
- <div class="line"><a name="l00900"></a><span class="lineno"> 900</span>&#160; <span class="keywordflow">if</span> (val)</div>
400
- <div class="line"><a name="l00901"></a><span class="lineno"> 901</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; &quot;</span> &lt;&lt; *val &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div>
401
- <div class="line"><a name="l00902"></a><span class="lineno"> 902</span>&#160; <span class="keywordflow">else</span></div>
402
- <div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; llvm Value is null&quot;</span>;</div>
403
- <div class="line"><a name="l00904"></a><span class="lineno"> 904</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div>
404
- <div class="line"><a name="l00905"></a><span class="lineno"> 905</span>&#160;}</div>
395
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00895">895</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
396
+ <div class="fragment"><div class="line"><a name="l00896"></a><span class="lineno"> 896</span>&#160;{</div>
397
+ <div class="line"><a name="l00897"></a><span class="lineno"> 897</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div>
398
+ <div class="line"><a name="l00898"></a><span class="lineno"> 898</span>&#160; llvm::raw_string_ostream rawstr(str);</div>
399
+ <div class="line"><a name="l00899"></a><span class="lineno"> 899</span>&#160; <span class="keywordflow">if</span> (val)</div>
400
+ <div class="line"><a name="l00900"></a><span class="lineno"> 900</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; &quot;</span> &lt;&lt; *val &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div>
401
+ <div class="line"><a name="l00901"></a><span class="lineno"> 901</span>&#160; <span class="keywordflow">else</span></div>
402
+ <div class="line"><a name="l00902"></a><span class="lineno"> 902</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; llvm Value is null&quot;</span>;</div>
403
+ <div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div>
404
+ <div class="line"><a name="l00904"></a><span class="lineno"> 904</span>&#160;}</div>
405
405
  </div><!-- fragment -->
406
406
  </div>
407
407
  </div>
@@ -421,16 +421,16 @@ Functions</h2></td></tr>
421
421
  </table>
422
422
  </div><div class="memdoc">
423
423
 
424
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00918">918</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
425
- <div class="fragment"><div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160;{</div>
426
- <div class="line"><a name="l00920"></a><span class="lineno"> 920</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div>
427
- <div class="line"><a name="l00921"></a><span class="lineno"> 921</span>&#160; llvm::raw_string_ostream rawstr(str);</div>
428
- <div class="line"><a name="l00922"></a><span class="lineno"> 922</span>&#160; <span class="keywordflow">if</span> (val)</div>
429
- <div class="line"><a name="l00923"></a><span class="lineno"> 923</span>&#160; rawstr &lt;&lt; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#afa2f8c8ab19c75547c26ede53b9f6159">dumpValue</a>(val) &lt;&lt; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a8e4add30bd0ce00d3f2aa2e31c64fef8">getSourceLoc</a>(val);</div>
430
- <div class="line"><a name="l00924"></a><span class="lineno"> 924</span>&#160; <span class="keywordflow">else</span></div>
431
- <div class="line"><a name="l00925"></a><span class="lineno"> 925</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; llvm Value is null&quot;</span>;</div>
432
- <div class="line"><a name="l00926"></a><span class="lineno"> 926</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div>
433
- <div class="line"><a name="l00927"></a><span class="lineno"> 927</span>&#160;}</div>
424
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00917">917</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
425
+ <div class="fragment"><div class="line"><a name="l00918"></a><span class="lineno"> 918</span>&#160;{</div>
426
+ <div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div>
427
+ <div class="line"><a name="l00920"></a><span class="lineno"> 920</span>&#160; llvm::raw_string_ostream rawstr(str);</div>
428
+ <div class="line"><a name="l00921"></a><span class="lineno"> 921</span>&#160; <span class="keywordflow">if</span> (val)</div>
429
+ <div class="line"><a name="l00922"></a><span class="lineno"> 922</span>&#160; rawstr &lt;&lt; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#afa2f8c8ab19c75547c26ede53b9f6159">dumpValue</a>(val) &lt;&lt; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a8e4add30bd0ce00d3f2aa2e31c64fef8">getSourceLoc</a>(val);</div>
430
+ <div class="line"><a name="l00923"></a><span class="lineno"> 923</span>&#160; <span class="keywordflow">else</span></div>
431
+ <div class="line"><a name="l00924"></a><span class="lineno"> 924</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; llvm Value is null&quot;</span>;</div>
432
+ <div class="line"><a name="l00925"></a><span class="lineno"> 925</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div>
433
+ <div class="line"><a name="l00926"></a><span class="lineno"> 926</span>&#160;}</div>
434
434
  </div><!-- fragment -->
435
435
  </div>
436
436
  </div>
@@ -505,13 +505,13 @@ Functions</h2></td></tr>
505
505
  <p>Get num of BB's predecessors. </p>
506
506
  <p>Get the num of BB's predecessors </p>
507
507
 
508
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00400">400</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
509
- <div class="fragment"><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160;{</div>
510
- <div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> num = 0;</div>
511
- <div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; <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>
512
- <div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; num++;</div>
513
- <div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; <span class="keywordflow">return</span> num;</div>
514
- <div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160;}</div>
508
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00399">399</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
509
+ <div class="fragment"><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160;{</div>
510
+ <div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> num = 0;</div>
511
+ <div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <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>
512
+ <div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; num++;</div>
513
+ <div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; <span class="keywordflow">return</span> num;</div>
514
+ <div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160;}</div>
515
515
  </div><!-- fragment -->
516
516
  </div>
517
517
  </div>
@@ -533,24 +533,24 @@ Functions</h2></td></tr>
533
533
 
534
534
  <p>Get all called funcions in a parent function. </p>
535
535
 
536
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00516">516</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
537
- <div class="fragment"><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160;{</div>
538
- <div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; std::vector&lt;const Function *&gt; calledFunctions;</div>
539
- <div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> &amp;I : instructions(<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>))</div>
540
- <div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; {</div>
541
- <div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a> *callInst = SVFUtil::dyn_cast&lt;CallBase&gt;(&amp;I))</div>
542
- <div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; {</div>
543
- <div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *calledFunction = callInst-&gt;getCalledFunction();</div>
544
- <div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; <span class="keywordflow">if</span> (calledFunction)</div>
545
- <div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; {</div>
546
- <div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; calledFunctions.push_back(calledFunction);</div>
547
- <div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; std::vector&lt;const Function *&gt; nestedCalledFunctions = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a47d2af43ff12d9e1014fa19256619466">getCalledFunctions</a>(calledFunction);</div>
548
- <div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; calledFunctions.insert(calledFunctions.end(), nestedCalledFunctions.begin(), nestedCalledFunctions.end());</div>
549
- <div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; }</div>
550
- <div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; }</div>
551
- <div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; }</div>
552
- <div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; <span class="keywordflow">return</span> calledFunctions;</div>
553
- <div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160;}</div>
536
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00515">515</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
537
+ <div class="fragment"><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160;{</div>
538
+ <div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; std::vector&lt;const Function *&gt; calledFunctions;</div>
539
+ <div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> &amp;I : instructions(<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>))</div>
540
+ <div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; {</div>
541
+ <div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a> *callInst = SVFUtil::dyn_cast&lt;CallBase&gt;(&amp;I))</div>
542
+ <div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; {</div>
543
+ <div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *calledFunction = callInst-&gt;getCalledFunction();</div>
544
+ <div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; <span class="keywordflow">if</span> (calledFunction)</div>
545
+ <div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; {</div>
546
+ <div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; calledFunctions.push_back(calledFunction);</div>
547
+ <div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; std::vector&lt;const Function *&gt; nestedCalledFunctions = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a47d2af43ff12d9e1014fa19256619466">getCalledFunctions</a>(calledFunction);</div>
548
+ <div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; calledFunctions.insert(calledFunctions.end(), nestedCalledFunctions.begin(), nestedCalledFunctions.end());</div>
549
+ <div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; }</div>
550
+ <div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; }</div>
551
+ <div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; }</div>
552
+ <div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; <span class="keywordflow">return</span> calledFunctions;</div>
553
+ <div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160;}</div>
554
554
  </div><!-- fragment -->
555
555
  </div>
556
556
  </div>
@@ -617,28 +617,28 @@ Functions</h2></td></tr>
617
617
  <p>get normal case value</p>
618
618
  <p>For larger number, we preserve case value just -1 now see more: <a href="https://github.com/SVF-tools/SVF/pull/992">https://github.com/SVF-tools/SVF/pull/992</a></p>
619
619
 
620
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00869">869</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
621
- <div class="fragment"><div class="line"><a name="l00870"></a><span class="lineno"> 870</span>&#160;{</div>
622
- <div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* succBB = succBB2CondVal.first;</div>
623
- <div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a>* caseValue = succBB2CondVal.second;</div>
624
- <div class="line"><a name="l00873"></a><span class="lineno"> 873</span>&#160; <a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a> val;</div>
625
- <div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160; <span class="keywordflow">if</span> (caseValue == <span class="keyword">nullptr</span> || succBB == switchInst.getDefaultDest())</div>
626
- <div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160; {</div>
627
- <div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160; val = -1;</div>
628
- <div class="line"><a name="l00878"></a><span class="lineno"> 878</span>&#160; }</div>
629
- <div class="line"><a name="l00879"></a><span class="lineno"> 879</span>&#160; <span class="keywordflow">else</span></div>
630
- <div class="line"><a name="l00880"></a><span class="lineno"> 880</span>&#160; {</div>
631
- <div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160; <span class="keywordflow">if</span> (caseValue-&gt;getBitWidth() &lt;= 64)</div>
632
- <div class="line"><a name="l00883"></a><span class="lineno"> 883</span>&#160; {</div>
633
- <div class="line"><a name="l00884"></a><span class="lineno"> 884</span>&#160; val = caseValue-&gt;getSExtValue();</div>
634
- <div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160; }</div>
635
- <div class="line"><a name="l00886"></a><span class="lineno"> 886</span>&#160; <span class="keywordflow">else</span></div>
636
- <div class="line"><a name="l00887"></a><span class="lineno"> 887</span>&#160; {</div>
637
- <div class="line"><a name="l00890"></a><span class="lineno"> 890</span>&#160; val = -1;</div>
638
- <div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160; }</div>
639
- <div class="line"><a name="l00892"></a><span class="lineno"> 892</span>&#160; }</div>
640
- <div class="line"><a name="l00893"></a><span class="lineno"> 893</span>&#160; <span class="keywordflow">return</span> val;</div>
641
- <div class="line"><a name="l00894"></a><span class="lineno"> 894</span>&#160;}</div>
620
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00868">868</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
621
+ <div class="fragment"><div class="line"><a name="l00869"></a><span class="lineno"> 869</span>&#160;{</div>
622
+ <div class="line"><a name="l00870"></a><span class="lineno"> 870</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* succBB = succBB2CondVal.first;</div>
623
+ <div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a>* caseValue = succBB2CondVal.second;</div>
624
+ <div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160; <a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a> val;</div>
625
+ <div class="line"><a name="l00873"></a><span class="lineno"> 873</span>&#160; <span class="keywordflow">if</span> (caseValue == <span class="keyword">nullptr</span> || succBB == switchInst.getDefaultDest())</div>
626
+ <div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160; {</div>
627
+ <div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160; val = -1;</div>
628
+ <div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160; }</div>
629
+ <div class="line"><a name="l00878"></a><span class="lineno"> 878</span>&#160; <span class="keywordflow">else</span></div>
630
+ <div class="line"><a name="l00879"></a><span class="lineno"> 879</span>&#160; {</div>
631
+ <div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160; <span class="keywordflow">if</span> (caseValue-&gt;getBitWidth() &lt;= 64)</div>
632
+ <div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160; {</div>
633
+ <div class="line"><a name="l00883"></a><span class="lineno"> 883</span>&#160; val = caseValue-&gt;getSExtValue();</div>
634
+ <div class="line"><a name="l00884"></a><span class="lineno"> 884</span>&#160; }</div>
635
+ <div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160; <span class="keywordflow">else</span></div>
636
+ <div class="line"><a name="l00886"></a><span class="lineno"> 886</span>&#160; {</div>
637
+ <div class="line"><a name="l00889"></a><span class="lineno"> 889</span>&#160; val = -1;</div>
638
+ <div class="line"><a name="l00890"></a><span class="lineno"> 890</span>&#160; }</div>
639
+ <div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160; }</div>
640
+ <div class="line"><a name="l00892"></a><span class="lineno"> 892</span>&#160; <span class="keywordflow">return</span> val;</div>
641
+ <div class="line"><a name="l00893"></a><span class="lineno"> 893</span>&#160;}</div>
642
642
  </div><!-- fragment -->
643
643
  </div>
644
644
  </div>
@@ -726,18 +726,17 @@ Functions</h2></td></tr>
726
726
 
727
727
  <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00364">364</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
728
728
  <div class="fragment"><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160;{</div>
729
- <div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a> * <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> = SVFUtil::dyn_cast&lt;PointerType&gt;(val-&gt;getType());</div>
730
- <div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; assert(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> &amp;&amp; <span class="stringliteral">&quot;this value should be a pointer type!&quot;</span>);</div>
731
- <div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *latestUse = <span class="keyword">nullptr</span>;</div>
732
- <div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;it : val-&gt;uses())</div>
733
- <div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; {</div>
734
- <div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;BitCastInst&gt;(it.getUser()))</div>
735
- <div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; latestUse = it.getUser();</div>
736
- <div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <span class="keywordflow">else</span></div>
737
- <div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; latestUse = <span class="keyword">nullptr</span>;</div>
738
- <div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; }</div>
739
- <div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; <span class="keywordflow">return</span> latestUse;</div>
740
- <div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160;}</div>
729
+ <div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; assert(SVFUtil::isa&lt;PointerType&gt;(val-&gt;getType()) &amp;&amp; <span class="stringliteral">&quot;this value should be a pointer type!&quot;</span>);</div>
730
+ <div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *latestUse = <span class="keyword">nullptr</span>;</div>
731
+ <div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;it : val-&gt;uses())</div>
732
+ <div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; {</div>
733
+ <div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;BitCastInst&gt;(it.getUser()))</div>
734
+ <div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; latestUse = it.getUser();</div>
735
+ <div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <span class="keywordflow">else</span></div>
736
+ <div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; latestUse = <span class="keyword">nullptr</span>;</div>
737
+ <div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; }</div>
738
+ <div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <span class="keywordflow">return</span> latestUse;</div>
739
+ <div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160;}</div>
741
740
  </div><!-- fragment -->
742
741
  </div>
743
742
  </div>
@@ -759,10 +758,10 @@ Functions</h2></td></tr>
759
758
 
760
759
  <p>Get the corresponding Function based on its name. </p>
761
760
 
762
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00641">641</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
763
- <div class="fragment"><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160;{</div>
764
- <div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; <span class="keywordflow">return</span> LLVMModuleSet::getLLVMModuleSet()-&gt;getSVFFunction(<a class="code" href="cJSON_8h.html#a25d22ecc7e656d2c59332072684e8766">name</a>);</div>
765
- <div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160;}</div>
761
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00640">640</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
762
+ <div class="fragment"><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160;{</div>
763
+ <div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; <span class="keywordflow">return</span> LLVMModuleSet::getLLVMModuleSet()-&gt;getSVFFunction(<a class="code" href="cJSON_8h.html#a25d22ecc7e656d2c59332072684e8766">name</a>);</div>
764
+ <div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160;}</div>
766
765
  </div><!-- fragment -->
767
766
  </div>
768
767
  </div>
@@ -847,15 +846,15 @@ Functions</h2></td></tr>
847
846
 
848
847
  <p>find the unique defined global across multiple modules </p>
849
848
 
850
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00646">646</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
851
- <div class="fragment"><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160;{</div>
852
- <div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* gvar = SVFUtil::dyn_cast&lt;GlobalVariable&gt;(val))</div>
853
- <div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; {</div>
854
- <div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; <span class="keywordflow">if</span> (LLVMModuleSet::getLLVMModuleSet()-&gt;hasGlobalRep(gvar))</div>
855
- <div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; val = LLVMModuleSet::getLLVMModuleSet()-&gt;getGlobalRep(gvar);</div>
856
- <div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; }</div>
857
- <div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; <span class="keywordflow">return</span> val;</div>
858
- <div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160;}</div>
849
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00645">645</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
850
+ <div class="fragment"><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160;{</div>
851
+ <div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* gvar = SVFUtil::dyn_cast&lt;GlobalVariable&gt;(val))</div>
852
+ <div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; {</div>
853
+ <div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; <span class="keywordflow">if</span> (LLVMModuleSet::getLLVMModuleSet()-&gt;hasGlobalRep(gvar))</div>
854
+ <div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; val = LLVMModuleSet::getLLVMModuleSet()-&gt;getGlobalRep(gvar);</div>
855
+ <div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; }</div>
856
+ <div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; <span class="keywordflow">return</span> val;</div>
857
+ <div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160;}</div>
859
858
  </div><!-- fragment -->
860
859
  </div>
861
860
  </div>
@@ -954,30 +953,30 @@ Functions</h2></td></tr>
954
953
 
955
954
  <p>Get the next instructions following control flow. </p>
956
955
 
957
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00800">800</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
958
- <div class="fragment"><div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160;{</div>
959
- <div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160; <span class="keywordflow">if</span> (!curInst-&gt;isTerminator())</div>
960
- <div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160; {</div>
961
- <div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* nextInst = curInst-&gt;getNextNode();</div>
962
- <div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(nextInst))</div>
963
- <div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#afbd60d5443c7fa1448813d00bb5d0fa7">getNextInsts</a>(nextInst, instList);</div>
964
- <div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160; <span class="keywordflow">else</span></div>
965
- <div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160; instList.push_back(nextInst);</div>
966
- <div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160; }</div>
967
- <div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160; <span class="keywordflow">else</span></div>
968
- <div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160; {</div>
969
- <div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *BB = curInst-&gt;getParent();</div>
970
- <div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160; <span class="comment">// Visit all successors of BB in the CFG</span></div>
971
- <div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; <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>
972
- <div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160; {</div>
973
- <div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* nextInst = &amp;((*it)-&gt;front());</div>
974
- <div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(nextInst))</div>
975
- <div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#afbd60d5443c7fa1448813d00bb5d0fa7">getNextInsts</a>(nextInst, instList);</div>
976
- <div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; <span class="keywordflow">else</span></div>
977
- <div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; instList.push_back(nextInst);</div>
978
- <div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160; }</div>
979
- <div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160; }</div>
980
- <div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160;}</div>
956
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00799">799</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
957
+ <div class="fragment"><div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160;{</div>
958
+ <div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160; <span class="keywordflow">if</span> (!curInst-&gt;isTerminator())</div>
959
+ <div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160; {</div>
960
+ <div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* nextInst = curInst-&gt;getNextNode();</div>
961
+ <div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(nextInst))</div>
962
+ <div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#afbd60d5443c7fa1448813d00bb5d0fa7">getNextInsts</a>(nextInst, instList);</div>
963
+ <div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160; <span class="keywordflow">else</span></div>
964
+ <div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160; instList.push_back(nextInst);</div>
965
+ <div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160; }</div>
966
+ <div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160; <span class="keywordflow">else</span></div>
967
+ <div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160; {</div>
968
+ <div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *BB = curInst-&gt;getParent();</div>
969
+ <div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160; <span class="comment">// Visit all successors of BB in the CFG</span></div>
970
+ <div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160; <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>
971
+ <div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; {</div>
972
+ <div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* nextInst = &amp;((*it)-&gt;front());</div>
973
+ <div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(nextInst))</div>
974
+ <div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#afbd60d5443c7fa1448813d00bb5d0fa7">getNextInsts</a>(nextInst, instList);</div>
975
+ <div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160; <span class="keywordflow">else</span></div>
976
+ <div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; instList.push_back(nextInst);</div>
977
+ <div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; }</div>
978
+ <div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160; }</div>
979
+ <div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160;}</div>
981
980
  </div><!-- fragment -->
982
981
  </div>
983
982
  </div>
@@ -1057,19 +1056,19 @@ Functions</h2></td></tr>
1057
1056
  <p>Return size of this object based on LLVM value. </p>
1058
1057
  <p>Return size of this Object </p>
1059
1058
 
1060
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00383">383</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1061
- <div class="fragment"><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160;{</div>
1062
- <div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; assert(ety &amp;&amp; <span class="stringliteral">&quot;type is null?&quot;</span>);</div>
1063
- <div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> numOfFields = 1;</div>
1064
- <div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;StructType, ArrayType&gt;(ety))</div>
1065
- <div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; {</div>
1066
- <div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; <span class="keywordflow">if</span>(Options::ModelArrays())</div>
1067
- <div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <span class="keywordflow">return</span> LLVMModuleSet::getLLVMModuleSet()-&gt;getSVFType(ety)-&gt;getTypeInfo()-&gt;getNumOfFlattenElements();</div>
1068
- <div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <span class="keywordflow">else</span></div>
1069
- <div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <span class="keywordflow">return</span> LLVMModuleSet::getLLVMModuleSet()-&gt;getSVFType(ety)-&gt;getTypeInfo()-&gt;getNumOfFlattenFields();</div>
1070
- <div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; }</div>
1071
- <div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <span class="keywordflow">return</span> numOfFields;</div>
1072
- <div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160;}</div>
1059
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00382">382</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1060
+ <div class="fragment"><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160;{</div>
1061
+ <div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; assert(ety &amp;&amp; <span class="stringliteral">&quot;type is null?&quot;</span>);</div>
1062
+ <div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> numOfFields = 1;</div>
1063
+ <div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;StructType, ArrayType&gt;(ety))</div>
1064
+ <div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; {</div>
1065
+ <div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; <span class="keywordflow">if</span>(Options::ModelArrays())</div>
1066
+ <div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; <span class="keywordflow">return</span> LLVMModuleSet::getLLVMModuleSet()-&gt;getSVFType(ety)-&gt;getTypeInfo()-&gt;getNumOfFlattenElements();</div>
1067
+ <div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <span class="keywordflow">else</span></div>
1068
+ <div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <span class="keywordflow">return</span> LLVMModuleSet::getLLVMModuleSet()-&gt;getSVFType(ety)-&gt;getTypeInfo()-&gt;getNumOfFlattenFields();</div>
1069
+ <div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; }</div>
1070
+ <div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <span class="keywordflow">return</span> numOfFields;</div>
1071
+ <div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160;}</div>
1073
1072
  </div><!-- fragment -->
1074
1073
  </div>
1075
1074
  </div>
@@ -1101,30 +1100,30 @@ Functions</h2></td></tr>
1101
1100
 
1102
1101
  <p>Get the previous instructions following control flow. </p>
1103
1102
 
1104
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00827">827</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1105
- <div class="fragment"><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160;{</div>
1106
- <div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; <span class="keywordflow">if</span> (curInst != &amp;(curInst-&gt;getParent()-&gt;front()))</div>
1107
- <div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160; {</div>
1108
- <div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* prevInst = curInst-&gt;getPrevNode();</div>
1109
- <div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(prevInst))</div>
1110
- <div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a4c94a6c02fb89c1a1604c87414956acd">getPrevInsts</a>(prevInst, instList);</div>
1111
- <div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160; <span class="keywordflow">else</span></div>
1112
- <div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160; instList.push_back(prevInst);</div>
1113
- <div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160; }</div>
1114
- <div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160; <span class="keywordflow">else</span></div>
1115
- <div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160; {</div>
1116
- <div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *BB = curInst-&gt;getParent();</div>
1117
- <div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; <span class="comment">// Visit all successors of BB in the CFG</span></div>
1118
- <div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160; <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>
1119
- <div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160; {</div>
1120
- <div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* prevInst = &amp;((*it)-&gt;back());</div>
1121
- <div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(prevInst))</div>
1122
- <div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a4c94a6c02fb89c1a1604c87414956acd">getPrevInsts</a>(prevInst, instList);</div>
1123
- <div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160; <span class="keywordflow">else</span></div>
1124
- <div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160; instList.push_back(prevInst);</div>
1125
- <div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160; }</div>
1126
- <div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160; }</div>
1127
- <div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160;}</div>
1103
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00826">826</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1104
+ <div class="fragment"><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160;{</div>
1105
+ <div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160; <span class="keywordflow">if</span> (curInst != &amp;(curInst-&gt;getParent()-&gt;front()))</div>
1106
+ <div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; {</div>
1107
+ <div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* prevInst = curInst-&gt;getPrevNode();</div>
1108
+ <div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(prevInst))</div>
1109
+ <div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a4c94a6c02fb89c1a1604c87414956acd">getPrevInsts</a>(prevInst, instList);</div>
1110
+ <div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; <span class="keywordflow">else</span></div>
1111
+ <div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160; instList.push_back(prevInst);</div>
1112
+ <div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160; }</div>
1113
+ <div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160; <span class="keywordflow">else</span></div>
1114
+ <div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160; {</div>
1115
+ <div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *BB = curInst-&gt;getParent();</div>
1116
+ <div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160; <span class="comment">// Visit all successors of BB in the CFG</span></div>
1117
+ <div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; <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>
1118
+ <div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160; {</div>
1119
+ <div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* prevInst = &amp;((*it)-&gt;back());</div>
1120
+ <div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(prevInst))</div>
1121
+ <div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a4c94a6c02fb89c1a1604c87414956acd">getPrevInsts</a>(prevInst, instList);</div>
1122
+ <div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160; <span class="keywordflow">else</span></div>
1123
+ <div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160; instList.push_back(prevInst);</div>
1124
+ <div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160; }</div>
1125
+ <div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160; }</div>
1126
+ <div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160;}</div>
1128
1127
  </div><!-- fragment -->
1129
1128
  </div>
1130
1129
  </div>
@@ -1274,105 +1273,105 @@ Functions</h2></td></tr>
1274
1273
  </div><div class="memdoc">
1275
1274
  <p>Get the meta data (line number and file name) info of a LLVM value </p>
1276
1275
 
1277
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00679">679</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1278
- <div class="fragment"><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160;{</div>
1279
- <div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; <span class="keywordflow">if</span>(val==<span class="keyword">nullptr</span>) <span class="keywordflow">return</span> <span class="stringliteral">&quot;{ empty val }&quot;</span>;</div>
1280
- <div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; </div>
1281
- <div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div>
1282
- <div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; std::stringstream rawstr(str);</div>
1283
- <div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;{ &quot;</span>;</div>
1284
- <div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; </div>
1285
- <div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst = SVFUtil::dyn_cast&lt;Instruction&gt;(val))</div>
1286
- <div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; {</div>
1287
- <div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;AllocaInst&gt;(inst))</div>
1288
- <div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; {</div>
1289
- <div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; <span class="keywordflow">for</span> (llvm::DbgInfoIntrinsic *DII : FindDbgAddrUses(<span class="keyword">const_cast&lt;</span><a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>*<span class="keyword">&gt;</span>(inst)))</div>
1290
- <div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; {</div>
1291
- <div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; <span class="keywordflow">if</span> (llvm::DbgDeclareInst *DDI = SVFUtil::dyn_cast&lt;llvm::DbgDeclareInst&gt;(DII))</div>
1292
- <div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; {</div>
1293
- <div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; llvm::DIVariable *DIVar = SVFUtil::cast&lt;llvm::DIVariable&gt;(DDI-&gt;getVariable());</div>
1294
- <div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\&quot;ln\&quot;: &quot;</span> &lt;&lt; DIVar-&gt;getLine() &lt;&lt; <span class="stringliteral">&quot;, \&quot;fl\&quot;: \&quot;&quot;</span> &lt;&lt; DIVar-&gt;getFilename().str() &lt;&lt; <span class="stringliteral">&quot;\&quot;&quot;</span>;</div>
1295
- <div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; <span class="keywordflow">break</span>;</div>
1296
- <div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; }</div>
1297
- <div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; }</div>
1298
- <div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; }</div>
1299
- <div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF.html#ad3d3cec1813411f039211c86236f7adb">MDNode</a> *N = inst-&gt;getMetadata(<span class="stringliteral">&quot;dbg&quot;</span>)) <span class="comment">// Here I is an LLVM instruction</span></div>
1300
- <div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; {</div>
1301
- <div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; llvm::DILocation* Loc = SVFUtil::cast&lt;llvm::DILocation&gt;(N); <span class="comment">// DILocation is in DebugInfo.h</span></div>
1302
- <div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; <span class="keywordtype">unsigned</span> Line = Loc-&gt;getLine();</div>
1303
- <div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; <span class="keywordtype">unsigned</span> Column = Loc-&gt;getColumn();</div>
1304
- <div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> File = Loc-&gt;getFilename().str();</div>
1305
- <div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; <span class="comment">//StringRef Dir = Loc.getDirectory();</span></div>
1306
- <div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; <span class="keywordflow">if</span>(File.empty() || Line == 0)</div>
1307
- <div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; {</div>
1308
- <div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; <span class="keyword">auto</span> inlineLoc = Loc-&gt;getInlinedAt();</div>
1309
- <div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; <span class="keywordflow">if</span>(inlineLoc)</div>
1310
- <div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; {</div>
1311
- <div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; Line = inlineLoc-&gt;getLine();</div>
1312
- <div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; Column = inlineLoc-&gt;getColumn();</div>
1313
- <div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; File = inlineLoc-&gt;getFilename().str();</div>
1314
- <div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; }</div>
1315
- <div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; }</div>
1316
- <div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\&quot;ln\&quot;: &quot;</span> &lt;&lt; Line &lt;&lt; <span class="stringliteral">&quot;, \&quot;cl\&quot;: &quot;</span> &lt;&lt; Column &lt;&lt; <span class="stringliteral">&quot;, \&quot;fl\&quot;: \&quot;&quot;</span> &lt;&lt; File &lt;&lt; <span class="stringliteral">&quot;\&quot;&quot;</span>;</div>
1317
- <div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; }</div>
1318
- <div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; }</div>
1319
- <div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a58cdfbc4160cae08745b67844ac29801">Argument</a>* argument = SVFUtil::dyn_cast&lt;Argument&gt;(val))</div>
1320
- <div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; {</div>
1321
- <div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; <span class="keywordflow">if</span> (argument-&gt;getArgNo()%10 == 1)</div>
1322
- <div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; rawstr &lt;&lt; argument-&gt;getArgNo() &lt;&lt; <span class="stringliteral">&quot;st&quot;</span>;</div>
1323
- <div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (argument-&gt;getArgNo()%10 == 2)</div>
1324
- <div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; rawstr &lt;&lt; argument-&gt;getArgNo() &lt;&lt; <span class="stringliteral">&quot;nd&quot;</span>;</div>
1325
- <div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (argument-&gt;getArgNo()%10 == 3)</div>
1326
- <div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; rawstr &lt;&lt; argument-&gt;getArgNo() &lt;&lt; <span class="stringliteral">&quot;rd&quot;</span>;</div>
1327
- <div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; <span class="keywordflow">else</span></div>
1328
- <div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; rawstr &lt;&lt; argument-&gt;getArgNo() &lt;&lt; <span class="stringliteral">&quot;th&quot;</span>;</div>
1329
- <div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; arg &quot;</span> &lt;&lt; argument-&gt;getParent()-&gt;getName().str() &lt;&lt; <span class="stringliteral">&quot; &quot;</span></div>
1330
- <div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; &lt;&lt; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2b32283ee2dbb9cef1d17ab6f2719e0c">getSourceLocOfFunction</a>(argument-&gt;getParent());</div>
1331
- <div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; }</div>
1332
- <div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; <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&lt;GlobalVariable&gt;(val))</div>
1333
- <div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; {</div>
1334
- <div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;Glob &quot;</span>;</div>
1335
- <div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; <a class="code" href="namespaceSVF.html#a3011dbac9102f044ad5f36a4ad3d4a71">NamedMDNode</a>* CU_Nodes = gvar-&gt;getParent()-&gt;getNamedMetadata(<span class="stringliteral">&quot;llvm.dbg.cu&quot;</span>);</div>
1336
- <div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; <span class="keywordflow">if</span>(CU_Nodes)</div>
1337
- <div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; {</div>
1338
- <div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = CU_Nodes-&gt;getNumOperands(); i != e; ++i)</div>
1339
- <div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; {</div>
1340
- <div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; llvm::DICompileUnit *CUNode = SVFUtil::cast&lt;llvm::DICompileUnit&gt;(CU_Nodes-&gt;getOperand(i));</div>
1341
- <div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; <span class="keywordflow">for</span> (llvm::DIGlobalVariableExpression *GV : CUNode-&gt;getGlobalVariables())</div>
1342
- <div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; {</div>
1343
- <div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160; llvm::DIGlobalVariable * DGV = GV-&gt;getVariable();</div>
1344
- <div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160; </div>
1345
- <div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160; <span class="keywordflow">if</span>(DGV-&gt;getName() == gvar-&gt;getName())</div>
1346
- <div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160; {</div>
1347
- <div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\&quot;ln\&quot;: &quot;</span> &lt;&lt; DGV-&gt;getLine() &lt;&lt; <span class="stringliteral">&quot;, \&quot;fl\&quot;: \&quot;&quot;</span> &lt;&lt; DGV-&gt;getFilename().str() &lt;&lt; <span class="stringliteral">&quot;\&quot;&quot;</span>;</div>
1348
- <div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160; }</div>
1349
- <div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160; </div>
1350
- <div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160; }</div>
1351
- <div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160; }</div>
1352
- <div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160; }</div>
1353
- <div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160; }</div>
1354
- <div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160; <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&lt;Function&gt;(val))</div>
1355
- <div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160; {</div>
1356
- <div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160; rawstr &lt;&lt; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2b32283ee2dbb9cef1d17ab6f2719e0c">getSourceLocOfFunction</a>(func);</div>
1357
- <div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; }</div>
1358
- <div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb = SVFUtil::dyn_cast&lt;BasicBlock&gt;(val))</div>
1359
- <div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160; {</div>
1360
- <div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\&quot;basic block\&quot;: &quot;</span> &lt;&lt; bb-&gt;getName().str() &lt;&lt; <span class="stringliteral">&quot;, \&quot;location\&quot;: &quot;</span> &lt;&lt; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a8e4add30bd0ce00d3f2aa2e31c64fef8">getSourceLoc</a>(bb-&gt;getFirstNonPHI());</div>
1361
- <div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160; }</div>
1362
- <div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a8a77403306e97ab4cb31a56d38bba5be">LLVMUtil::isConstDataOrAggData</a>(val))</div>
1363
- <div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160; {</div>
1364
- <div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;constant data&quot;</span>;</div>
1365
- <div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; }</div>
1366
- <div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; <span class="keywordflow">else</span></div>
1367
- <div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160; {</div>
1368
- <div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;N/A&quot;</span>;</div>
1369
- <div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160; }</div>
1370
- <div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; }&quot;</span>;</div>
1371
- <div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160; </div>
1372
- <div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; <span class="keywordflow">if</span>(rawstr.str()==<span class="stringliteral">&quot;{ }&quot;</span>)</div>
1373
- <div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;&quot;</span>;</div>
1374
- <div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div>
1375
- <div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160;}</div>
1276
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00678">678</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1277
+ <div class="fragment"><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160;{</div>
1278
+ <div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; <span class="keywordflow">if</span>(val==<span class="keyword">nullptr</span>) <span class="keywordflow">return</span> <span class="stringliteral">&quot;{ empty val }&quot;</span>;</div>
1279
+ <div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; </div>
1280
+ <div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div>
1281
+ <div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; std::stringstream rawstr(str);</div>
1282
+ <div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;{ &quot;</span>;</div>
1283
+ <div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; </div>
1284
+ <div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst = SVFUtil::dyn_cast&lt;Instruction&gt;(val))</div>
1285
+ <div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; {</div>
1286
+ <div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;AllocaInst&gt;(inst))</div>
1287
+ <div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; {</div>
1288
+ <div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; <span class="keywordflow">for</span> (llvm::DbgInfoIntrinsic *DII : FindDbgAddrUses(<span class="keyword">const_cast&lt;</span><a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>*<span class="keyword">&gt;</span>(inst)))</div>
1289
+ <div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; {</div>
1290
+ <div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; <span class="keywordflow">if</span> (llvm::DbgDeclareInst *DDI = SVFUtil::dyn_cast&lt;llvm::DbgDeclareInst&gt;(DII))</div>
1291
+ <div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; {</div>
1292
+ <div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; llvm::DIVariable *DIVar = SVFUtil::cast&lt;llvm::DIVariable&gt;(DDI-&gt;getVariable());</div>
1293
+ <div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\&quot;ln\&quot;: &quot;</span> &lt;&lt; DIVar-&gt;getLine() &lt;&lt; <span class="stringliteral">&quot;, \&quot;fl\&quot;: \&quot;&quot;</span> &lt;&lt; DIVar-&gt;getFilename().str() &lt;&lt; <span class="stringliteral">&quot;\&quot;&quot;</span>;</div>
1294
+ <div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; <span class="keywordflow">break</span>;</div>
1295
+ <div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; }</div>
1296
+ <div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; }</div>
1297
+ <div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; }</div>
1298
+ <div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF.html#ad3d3cec1813411f039211c86236f7adb">MDNode</a> *N = inst-&gt;getMetadata(<span class="stringliteral">&quot;dbg&quot;</span>)) <span class="comment">// Here I is an LLVM instruction</span></div>
1299
+ <div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; {</div>
1300
+ <div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; llvm::DILocation* Loc = SVFUtil::cast&lt;llvm::DILocation&gt;(N); <span class="comment">// DILocation is in DebugInfo.h</span></div>
1301
+ <div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; <span class="keywordtype">unsigned</span> Line = Loc-&gt;getLine();</div>
1302
+ <div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; <span class="keywordtype">unsigned</span> Column = Loc-&gt;getColumn();</div>
1303
+ <div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> File = Loc-&gt;getFilename().str();</div>
1304
+ <div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; <span class="comment">//StringRef Dir = Loc.getDirectory();</span></div>
1305
+ <div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; <span class="keywordflow">if</span>(File.empty() || Line == 0)</div>
1306
+ <div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; {</div>
1307
+ <div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; <span class="keyword">auto</span> inlineLoc = Loc-&gt;getInlinedAt();</div>
1308
+ <div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; <span class="keywordflow">if</span>(inlineLoc)</div>
1309
+ <div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; {</div>
1310
+ <div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; Line = inlineLoc-&gt;getLine();</div>
1311
+ <div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; Column = inlineLoc-&gt;getColumn();</div>
1312
+ <div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; File = inlineLoc-&gt;getFilename().str();</div>
1313
+ <div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; }</div>
1314
+ <div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; }</div>
1315
+ <div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\&quot;ln\&quot;: &quot;</span> &lt;&lt; Line &lt;&lt; <span class="stringliteral">&quot;, \&quot;cl\&quot;: &quot;</span> &lt;&lt; Column &lt;&lt; <span class="stringliteral">&quot;, \&quot;fl\&quot;: \&quot;&quot;</span> &lt;&lt; File &lt;&lt; <span class="stringliteral">&quot;\&quot;&quot;</span>;</div>
1316
+ <div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; }</div>
1317
+ <div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; }</div>
1318
+ <div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a58cdfbc4160cae08745b67844ac29801">Argument</a>* argument = SVFUtil::dyn_cast&lt;Argument&gt;(val))</div>
1319
+ <div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160; {</div>
1320
+ <div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; <span class="keywordflow">if</span> (argument-&gt;getArgNo()%10 == 1)</div>
1321
+ <div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; rawstr &lt;&lt; argument-&gt;getArgNo() &lt;&lt; <span class="stringliteral">&quot;st&quot;</span>;</div>
1322
+ <div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (argument-&gt;getArgNo()%10 == 2)</div>
1323
+ <div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160; rawstr &lt;&lt; argument-&gt;getArgNo() &lt;&lt; <span class="stringliteral">&quot;nd&quot;</span>;</div>
1324
+ <div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (argument-&gt;getArgNo()%10 == 3)</div>
1325
+ <div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; rawstr &lt;&lt; argument-&gt;getArgNo() &lt;&lt; <span class="stringliteral">&quot;rd&quot;</span>;</div>
1326
+ <div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; <span class="keywordflow">else</span></div>
1327
+ <div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; rawstr &lt;&lt; argument-&gt;getArgNo() &lt;&lt; <span class="stringliteral">&quot;th&quot;</span>;</div>
1328
+ <div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; arg &quot;</span> &lt;&lt; argument-&gt;getParent()-&gt;getName().str() &lt;&lt; <span class="stringliteral">&quot; &quot;</span></div>
1329
+ <div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; &lt;&lt; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2b32283ee2dbb9cef1d17ab6f2719e0c">getSourceLocOfFunction</a>(argument-&gt;getParent());</div>
1330
+ <div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; }</div>
1331
+ <div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; <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&lt;GlobalVariable&gt;(val))</div>
1332
+ <div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; {</div>
1333
+ <div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;Glob &quot;</span>;</div>
1334
+ <div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160; <a class="code" href="namespaceSVF.html#a3011dbac9102f044ad5f36a4ad3d4a71">NamedMDNode</a>* CU_Nodes = gvar-&gt;getParent()-&gt;getNamedMetadata(<span class="stringliteral">&quot;llvm.dbg.cu&quot;</span>);</div>
1335
+ <div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; <span class="keywordflow">if</span>(CU_Nodes)</div>
1336
+ <div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; {</div>
1337
+ <div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = CU_Nodes-&gt;getNumOperands(); i != e; ++i)</div>
1338
+ <div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160; {</div>
1339
+ <div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; llvm::DICompileUnit *CUNode = SVFUtil::cast&lt;llvm::DICompileUnit&gt;(CU_Nodes-&gt;getOperand(i));</div>
1340
+ <div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; <span class="keywordflow">for</span> (llvm::DIGlobalVariableExpression *GV : CUNode-&gt;getGlobalVariables())</div>
1341
+ <div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; {</div>
1342
+ <div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; llvm::DIGlobalVariable * DGV = GV-&gt;getVariable();</div>
1343
+ <div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160; </div>
1344
+ <div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160; <span class="keywordflow">if</span>(DGV-&gt;getName() == gvar-&gt;getName())</div>
1345
+ <div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160; {</div>
1346
+ <div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\&quot;ln\&quot;: &quot;</span> &lt;&lt; DGV-&gt;getLine() &lt;&lt; <span class="stringliteral">&quot;, \&quot;fl\&quot;: \&quot;&quot;</span> &lt;&lt; DGV-&gt;getFilename().str() &lt;&lt; <span class="stringliteral">&quot;\&quot;&quot;</span>;</div>
1347
+ <div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; }</div>
1348
+ <div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160; </div>
1349
+ <div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160; }</div>
1350
+ <div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160; }</div>
1351
+ <div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160; }</div>
1352
+ <div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160; }</div>
1353
+ <div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160; <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&lt;Function&gt;(val))</div>
1354
+ <div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160; {</div>
1355
+ <div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160; rawstr &lt;&lt; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2b32283ee2dbb9cef1d17ab6f2719e0c">getSourceLocOfFunction</a>(func);</div>
1356
+ <div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160; }</div>
1357
+ <div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb = SVFUtil::dyn_cast&lt;BasicBlock&gt;(val))</div>
1358
+ <div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; {</div>
1359
+ <div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\&quot;basic block\&quot;: &quot;</span> &lt;&lt; bb-&gt;getName().str() &lt;&lt; <span class="stringliteral">&quot;, \&quot;location\&quot;: &quot;</span> &lt;&lt; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a8e4add30bd0ce00d3f2aa2e31c64fef8">getSourceLoc</a>(bb-&gt;getFirstNonPHI());</div>
1360
+ <div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160; }</div>
1361
+ <div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a8a77403306e97ab4cb31a56d38bba5be">LLVMUtil::isConstDataOrAggData</a>(val))</div>
1362
+ <div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160; {</div>
1363
+ <div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;constant data&quot;</span>;</div>
1364
+ <div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; }</div>
1365
+ <div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; <span class="keywordflow">else</span></div>
1366
+ <div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; {</div>
1367
+ <div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;N/A&quot;</span>;</div>
1368
+ <div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160; }</div>
1369
+ <div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; }&quot;</span>;</div>
1370
+ <div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160; </div>
1371
+ <div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160; <span class="keywordflow">if</span>(rawstr.str()==<span class="stringliteral">&quot;{ }&quot;</span>)</div>
1372
+ <div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;&quot;</span>;</div>
1373
+ <div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div>
1374
+ <div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160;}</div>
1376
1375
  </div><!-- fragment -->
1377
1376
  </div>
1378
1377
  </div>
@@ -1393,21 +1392,21 @@ Functions</h2></td></tr>
1393
1392
  </div><div class="memdoc">
1394
1393
  <p>Get source code line number of a function according to debug info </p>
1395
1394
 
1396
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00783">783</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1397
- <div class="fragment"><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160;{</div>
1398
- <div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div>
1399
- <div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160; std::stringstream rawstr(str);</div>
1400
- <div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160; <span class="comment">/*</span></div>
1401
- <div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160;<span class="comment"> * https://reviews.llvm.org/D18074?id=50385</span></div>
1402
- <div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160;<span class="comment"> * looks like the relevant</span></div>
1403
- <div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160;<span class="comment"> */</span></div>
1404
- <div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160; <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>-&gt;getSubprogram())</div>
1405
- <div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160; {</div>
1406
- <div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160; <span class="keywordflow">if</span> (SP-&gt;describes(<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>))</div>
1407
- <div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\&quot;ln\&quot;: &quot;</span> &lt;&lt; SP-&gt;getLine() &lt;&lt; <span class="stringliteral">&quot;, \&quot;file\&quot;: \&quot;&quot;</span> &lt;&lt; SP-&gt;getFilename().str() &lt;&lt; <span class="stringliteral">&quot;\&quot;&quot;</span>;</div>
1408
- <div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160; }</div>
1409
- <div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div>
1410
- <div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160;}</div>
1395
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00782">782</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1396
+ <div class="fragment"><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160;{</div>
1397
+ <div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div>
1398
+ <div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160; std::stringstream rawstr(str);</div>
1399
+ <div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160; <span class="comment">/*</span></div>
1400
+ <div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160;<span class="comment"> * https://reviews.llvm.org/D18074?id=50385</span></div>
1401
+ <div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160;<span class="comment"> * looks like the relevant</span></div>
1402
+ <div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160;<span class="comment"> */</span></div>
1403
+ <div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; <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>-&gt;getSubprogram())</div>
1404
+ <div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160; {</div>
1405
+ <div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160; <span class="keywordflow">if</span> (SP-&gt;describes(<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>))</div>
1406
+ <div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\&quot;ln\&quot;: &quot;</span> &lt;&lt; SP-&gt;getLine() &lt;&lt; <span class="stringliteral">&quot;, \&quot;file\&quot;: \&quot;&quot;</span> &lt;&lt; SP-&gt;getFilename().str() &lt;&lt; <span class="stringliteral">&quot;\&quot;&quot;</span>;</div>
1407
+ <div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160; }</div>
1408
+ <div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div>
1409
+ <div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160;}</div>
1411
1410
  </div><!-- fragment -->
1412
1411
  </div>
1413
1412
  </div>
@@ -1443,15 +1442,15 @@ Functions</h2></td></tr>
1443
1442
  <p>switch i32 %0, label sw.default [ i32 0, label sw.bb i32 1, label sw.bb1 i32 2, label sw.bb1 i32 3, label sw.bb1 i32 4, label sw.bb3 i32 6, label sw.bb3 i32 7, label sw.bb3 ]</p>
1444
1443
  <p>We can get every case basic block and related case value: [ {sw.default, -1}, {sw.bb, 0}, {sw.bb1, 1}, {sw.bb1, 2}, {sw.bb1, 3}, {sw.bb3, 4}, {sw.bb3, 6}, {sw.bb3, 7}, ] Note: default case value is nullptr </p>
1445
1444
 
1446
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00859">859</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1447
- <div class="fragment"><div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160;{</div>
1448
- <div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160; <span class="comment">// get default successor basic block and default case value (nullptr)</span></div>
1449
- <div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160; vec.push_back({switchInst.getDefaultDest(), <span class="keyword">nullptr</span>});</div>
1450
- <div class="line"><a name="l00863"></a><span class="lineno"> 863</span>&#160; </div>
1451
- <div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160; <span class="comment">// get normal case value and it&#39;s successor basic block</span></div>
1452
- <div class="line"><a name="l00865"></a><span class="lineno"> 865</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; cs : switchInst.cases())</div>
1453
- <div class="line"><a name="l00866"></a><span class="lineno"> 866</span>&#160; vec.push_back({cs.getCaseSuccessor(), cs.getCaseValue()});</div>
1454
- <div class="line"><a name="l00867"></a><span class="lineno"> 867</span>&#160;}</div>
1445
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00858">858</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1446
+ <div class="fragment"><div class="line"><a name="l00859"></a><span class="lineno"> 859</span>&#160;{</div>
1447
+ <div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160; <span class="comment">// get default successor basic block and default case value (nullptr)</span></div>
1448
+ <div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160; vec.push_back({switchInst.getDefaultDest(), <span class="keyword">nullptr</span>});</div>
1449
+ <div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160; </div>
1450
+ <div class="line"><a name="l00863"></a><span class="lineno"> 863</span>&#160; <span class="comment">// get normal case value and it&#39;s successor basic block</span></div>
1451
+ <div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; cs : switchInst.cases())</div>
1452
+ <div class="line"><a name="l00865"></a><span class="lineno"> 865</span>&#160; vec.push_back({cs.getCaseSuccessor(), cs.getCaseValue()});</div>
1453
+ <div class="line"><a name="l00866"></a><span class="lineno"> 866</span>&#160;}</div>
1455
1454
  </div><!-- fragment -->
1456
1455
  </div>
1457
1456
  </div>
@@ -1482,15 +1481,15 @@ Functions</h2></td></tr>
1482
1481
  </div><div class="memdoc">
1483
1482
  <p>if this struct type does not have any element, i.e., opaque</p>
1484
1483
 
1485
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00665">665</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1486
- <div class="fragment"><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160;{</div>
1487
- <div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; </div>
1488
- <div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160; <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>(LLVMModuleSet::getLLVMModuleSet()-&gt;getMainLLVMModule())-&gt;getStructLayout( <span class="keyword">const_cast&lt;</span><a class="code" href="namespaceSVF.html#a2bf58575ac7d068e0f1a4cf953b9e6cb">StructType</a> *<span class="keyword">&gt;</span>(sty) );</div>
1489
- <div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; <span class="keywordflow">if</span>(sty-&gt;isOpaque())</div>
1490
- <div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; <span class="keywordflow">return</span> 0;</div>
1491
- <div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; <span class="keywordflow">else</span></div>
1492
- <div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160; <span class="keywordflow">return</span> stTySL-&gt;getElementOffset(field_idx);</div>
1493
- <div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160;}</div>
1484
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00664">664</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1485
+ <div class="fragment"><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160;{</div>
1486
+ <div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; </div>
1487
+ <div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; <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>(LLVMModuleSet::getLLVMModuleSet()-&gt;getMainLLVMModule())-&gt;getStructLayout( <span class="keyword">const_cast&lt;</span><a class="code" href="namespaceSVF.html#a2bf58575ac7d068e0f1a4cf953b9e6cb">StructType</a> *<span class="keyword">&gt;</span>(sty) );</div>
1488
+ <div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; <span class="keywordflow">if</span>(sty-&gt;isOpaque())</div>
1489
+ <div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; <span class="keywordflow">return</span> 0;</div>
1490
+ <div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; <span class="keywordflow">else</span></div>
1491
+ <div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; <span class="keywordflow">return</span> stTySL-&gt;getElementOffset(field_idx);</div>
1492
+ <div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160;}</div>
1494
1493
  </div><!-- fragment -->
1495
1494
  </div>
1496
1495
  </div>
@@ -1512,14 +1511,14 @@ Functions</h2></td></tr>
1512
1511
 
1513
1512
  <p>Helper method to get the size of the type from target data layout. </p>
1514
1513
 
1515
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00656">656</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1516
- <div class="fragment"><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160;{</div>
1517
- <div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; <span class="comment">// if the type has size then simply return it, otherwise just return 0</span></div>
1518
- <div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>-&gt;isSized())</div>
1519
- <div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a151fd7fb2b2ebe72af7c417defbb4f4d">getDataLayout</a>(LLVMModuleSet::getLLVMModuleSet()-&gt;getMainLLVMModule())-&gt;getTypeStoreSize(<span class="keyword">const_cast&lt;</span><a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>*<span class="keyword">&gt;</span>(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>));</div>
1520
- <div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; <span class="keywordflow">else</span></div>
1521
- <div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; <span class="keywordflow">return</span> 0;</div>
1522
- <div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160;}</div>
1514
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00655">655</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1515
+ <div class="fragment"><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160;{</div>
1516
+ <div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; <span class="comment">// if the type has size then simply return it, otherwise just return 0</span></div>
1517
+ <div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>-&gt;isSized())</div>
1518
+ <div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a151fd7fb2b2ebe72af7c417defbb4f4d">getDataLayout</a>(LLVMModuleSet::getLLVMModuleSet()-&gt;getMainLLVMModule())-&gt;getTypeStoreSize(<span class="keyword">const_cast&lt;</span><a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>*<span class="keyword">&gt;</span>(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>));</div>
1519
+ <div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; <span class="keywordflow">else</span></div>
1520
+ <div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; <span class="keywordflow">return</span> 0;</div>
1521
+ <div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160;}</div>
1523
1522
  </div><!-- fragment -->
1524
1523
  </div>
1525
1524
  </div>
@@ -1784,10 +1783,10 @@ Functions</h2></td></tr>
1784
1783
 
1785
1784
  <p>Check whether this value points-to a constant object. </p>
1786
1785
 
1787
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00853">853</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1788
- <div class="fragment"><div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160;{</div>
1789
- <div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ad8ee8de153df3f1bbdebb67185a2731c">isConstantObjSym</a>(LLVMModuleSet::getLLVMModuleSet()-&gt;getLLVMValue(val));</div>
1790
- <div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160;}</div>
1786
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00852">852</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1787
+ <div class="fragment"><div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160;{</div>
1788
+ <div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ad8ee8de153df3f1bbdebb67185a2731c">isConstantObjSym</a>(LLVMModuleSet::getLLVMModuleSet()-&gt;getLLVMValue(val));</div>
1789
+ <div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160;}</div>
1791
1790
  </div><!-- fragment -->
1792
1791
  </div>
1793
1792
  </div>
@@ -2030,23 +2029,23 @@ Functions</h2></td></tr>
2030
2029
 
2031
2030
  <p>Check whether a file is an LLVM IR file. </p>
2032
2031
 
2033
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00413">413</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
2034
- <div class="fragment"><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160;{</div>
2035
- <div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; <a class="code" href="namespaceSVF.html#affba423b674a0aba723e33101826e297">llvm::LLVMContext</a> context;</div>
2036
- <div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; <a class="code" href="namespaceSVF.html#a86863d104a3930b3a806935d92ddbf30">llvm::SMDiagnostic</a> err;</div>
2037
- <div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; </div>
2038
- <div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; <span class="comment">// Parse the input LLVM IR file into a module</span></div>
2039
- <div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; std::unique_ptr&lt;llvm::Module&gt; module = llvm::parseIRFile(filename, err, context);</div>
2040
- <div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; </div>
2041
- <div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; <span class="comment">// Check if the parsing succeeded</span></div>
2042
- <div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; <span class="keywordflow">if</span> (!module)</div>
2043
- <div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; {</div>
2044
- <div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; err.print(<span class="stringliteral">&quot;isIRFile&quot;</span>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">llvm::errs</a>());</div>
2045
- <div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>; <span class="comment">// Not an LLVM IR file</span></div>
2046
- <div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; }</div>
2047
- <div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; </div>
2048
- <div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>; <span class="comment">// It is an LLVM IR file</span></div>
2049
- <div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160;}</div>
2032
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00412">412</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
2033
+ <div class="fragment"><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160;{</div>
2034
+ <div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; <a class="code" href="namespaceSVF.html#affba423b674a0aba723e33101826e297">llvm::LLVMContext</a> context;</div>
2035
+ <div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; <a class="code" href="namespaceSVF.html#a86863d104a3930b3a806935d92ddbf30">llvm::SMDiagnostic</a> err;</div>
2036
+ <div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; </div>
2037
+ <div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; <span class="comment">// Parse the input LLVM IR file into a module</span></div>
2038
+ <div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; std::unique_ptr&lt;llvm::Module&gt; module = llvm::parseIRFile(filename, err, context);</div>
2039
+ <div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; </div>
2040
+ <div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; <span class="comment">// Check if the parsing succeeded</span></div>
2041
+ <div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; <span class="keywordflow">if</span> (!module)</div>
2042
+ <div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; {</div>
2043
+ <div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; err.print(<span class="stringliteral">&quot;isIRFile&quot;</span>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">llvm::errs</a>());</div>
2044
+ <div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>; <span class="comment">// Not an LLVM IR file</span></div>
2045
+ <div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; }</div>
2046
+ <div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; </div>
2047
+ <div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>; <span class="comment">// It is an LLVM IR file</span></div>
2048
+ <div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160;}</div>
2050
2049
  </div><!-- fragment -->
2051
2050
  </div>
2052
2051
  </div>
@@ -2436,20 +2435,20 @@ Functions</h2></td></tr>
2436
2435
  </table>
2437
2436
  </div><div class="memdoc">
2438
2437
 
2439
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00535">535</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
2440
- <div class="fragment"><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160;{</div>
2441
- <div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; <span class="comment">// Check if it is an empty global annotations</span></div>
2442
- <div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; <span class="keywordflow">if</span> (global.getName() == <span class="stringliteral">&quot;llvm.global.annotations&quot;</span> &amp;&amp; SVFUtil::isa&lt;ConstantArray&gt;(global.getInitializer()))</div>
2443
- <div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2444
- <div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; <span class="keywordflow">else</span></div>
2445
- <div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; {</div>
2446
- <div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; <span class="comment">// Check if any global strings has at least one effective user</span></div>
2447
- <div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; use : global.uses())</div>
2448
- <div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; <span class="keywordflow">if</span> (use.getUser()-&gt;getNumUses() != 0)</div>
2449
- <div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2450
- <div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; }</div>
2451
- <div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
2452
- <div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160;}</div>
2438
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00534">534</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
2439
+ <div class="fragment"><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160;{</div>
2440
+ <div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; <span class="comment">// Check if it is an empty global annotations</span></div>
2441
+ <div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; <span class="keywordflow">if</span> (global.getName() == <span class="stringliteral">&quot;llvm.global.annotations&quot;</span> &amp;&amp; SVFUtil::isa&lt;ConstantArray&gt;(global.getInitializer()))</div>
2442
+ <div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2443
+ <div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; <span class="keywordflow">else</span></div>
2444
+ <div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; {</div>
2445
+ <div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; <span class="comment">// Check if any global strings has at least one effective user</span></div>
2446
+ <div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; use : global.uses())</div>
2447
+ <div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; <span class="keywordflow">if</span> (use.getUser()-&gt;getNumUses() != 0)</div>
2448
+ <div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2449
+ <div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; }</div>
2450
+ <div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
2451
+ <div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160;}</div>
2453
2452
  </div><!-- fragment -->
2454
2453
  </div>
2455
2454
  </div>
@@ -2500,31 +2499,31 @@ Functions</h2></td></tr>
2500
2499
  <p>Parse argument for multi-module analysis. </p>
2501
2500
  <p>Get the names of all modules into a vector And process arguments </p>
2502
2501
 
2503
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00434">434</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
2504
- <div class="fragment"><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160;{</div>
2505
- <div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; <span class="keywordtype">bool</span> first_ir_file = <span class="keyword">true</span>;</div>
2506
- <div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; argc; ++i)</div>
2507
- <div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; {</div>
2508
- <div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> argument(argv[i]);</div>
2509
- <div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#ad8a8c32a09340f491fffffcb07dd7a41">LLVMUtil::isIRFile</a>(argument))</div>
2510
- <div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; {</div>
2511
- <div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; <span class="keywordflow">if</span> (find(moduleNameVec.begin(), moduleNameVec.end(), argument)</div>
2512
- <div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; == moduleNameVec.end())</div>
2513
- <div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; moduleNameVec.push_back(argument);</div>
2514
- <div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; <span class="keywordflow">if</span> (first_ir_file)</div>
2515
- <div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; {</div>
2516
- <div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; arg_value[arg_num] = argv[i];</div>
2517
- <div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; arg_num++;</div>
2518
- <div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; first_ir_file = <span class="keyword">false</span>;</div>
2519
- <div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; }</div>
2520
- <div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; }</div>
2521
- <div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; <span class="keywordflow">else</span></div>
2522
- <div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; {</div>
2523
- <div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; arg_value[arg_num] = argv[i];</div>
2524
- <div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; arg_num++;</div>
2525
- <div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; }</div>
2526
- <div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; }</div>
2527
- <div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160;}</div>
2502
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00433">433</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
2503
+ <div class="fragment"><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160;{</div>
2504
+ <div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; <span class="keywordtype">bool</span> first_ir_file = <span class="keyword">true</span>;</div>
2505
+ <div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; argc; ++i)</div>
2506
+ <div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; {</div>
2507
+ <div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> argument(argv[i]);</div>
2508
+ <div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#ad8a8c32a09340f491fffffcb07dd7a41">LLVMUtil::isIRFile</a>(argument))</div>
2509
+ <div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; {</div>
2510
+ <div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; <span class="keywordflow">if</span> (find(moduleNameVec.begin(), moduleNameVec.end(), argument)</div>
2511
+ <div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; == moduleNameVec.end())</div>
2512
+ <div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; moduleNameVec.push_back(argument);</div>
2513
+ <div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; <span class="keywordflow">if</span> (first_ir_file)</div>
2514
+ <div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; {</div>
2515
+ <div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; arg_value[arg_num] = argv[i];</div>
2516
+ <div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; arg_num++;</div>
2517
+ <div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; first_ir_file = <span class="keyword">false</span>;</div>
2518
+ <div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; }</div>
2519
+ <div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; }</div>
2520
+ <div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; <span class="keywordflow">else</span></div>
2521
+ <div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; {</div>
2522
+ <div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; arg_value[arg_num] = argv[i];</div>
2523
+ <div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; arg_num++;</div>
2524
+ <div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; }</div>
2525
+ <div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; }</div>
2526
+ <div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160;}</div>
2528
2527
  </div><!-- fragment -->
2529
2528
  </div>
2530
2529
  </div>
@@ -2544,59 +2543,59 @@ Functions</h2></td></tr>
2544
2543
  </table>
2545
2544
  </div><div class="memdoc">
2546
2545
 
2547
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00461">461</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
2548
- <div class="fragment"><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160;{</div>
2549
- <div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; <span class="keywordflow">if</span> (removedFuncList.empty())</div>
2550
- <div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; <span class="keywordflow">return</span>; <span class="comment">// No functions to remove annotations in extapi.bc module</span></div>
2551
- <div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; </div>
2552
- <div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; <a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>* module = (*removedFuncList.begin())-&gt;getParent();</div>
2553
- <div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* glob = module-&gt;getGlobalVariable(<span class="stringliteral">&quot;llvm.global.annotations&quot;</span>);</div>
2554
- <div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; <span class="keywordflow">if</span> (glob == <span class="keyword">nullptr</span> || !glob-&gt;hasInitializer())</div>
2555
- <div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; <span class="keywordflow">return</span>;</div>
2556
- <div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; </div>
2557
- <div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <a class="code" href="namespaceSVF.html#a5ae718cba37d8e34d2946530dc098c8e">ConstantArray</a>* ca = SVFUtil::dyn_cast&lt;ConstantArray&gt;(glob-&gt;getInitializer());</div>
2558
- <div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <span class="keywordflow">if</span> (ca == <span class="keyword">nullptr</span>)</div>
2559
- <div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; <span class="keywordflow">return</span>;</div>
2560
- <div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; </div>
2561
- <div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; std::vector&lt;Constant*&gt; newAnnotations;</div>
2562
- <div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i &lt; ca-&gt;getNumOperands(); ++i)</div>
2563
- <div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; {</div>
2564
- <div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; <a class="code" href="namespaceSVF.html#a2b28f48dde0a9a91d251e654ce1f9477">ConstantStruct</a>* structAn = SVFUtil::dyn_cast&lt;ConstantStruct&gt;(ca-&gt;getOperand(i));</div>
2565
- <div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; <span class="keywordflow">if</span> (structAn == <span class="keyword">nullptr</span>)</div>
2566
- <div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; <span class="keywordflow">continue</span>;</div>
2567
- <div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; </div>
2568
- <div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* annotatedFunc = <span class="keyword">nullptr</span>;</div>
2569
- <div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; </div>
2570
- <div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; <span class="comment">// Non-opague pointer, try to cast to ConstantExpr and check for BitCast</span></div>
2571
- <div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* expr = SVFUtil::dyn_cast&lt;ConstantExpr&gt;(structAn-&gt;getOperand(0)))</div>
2572
- <div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; {</div>
2573
- <div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; <span class="keywordflow">if</span> (expr-&gt;getOpcode() == Instruction::BitCast)</div>
2574
- <div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; {</div>
2575
- <div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; annotatedFunc = SVFUtil::dyn_cast&lt;Function&gt;(expr-&gt;getOperand(0));</div>
2576
- <div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; }</div>
2577
- <div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; }</div>
2578
- <div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; </div>
2579
- <div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <span class="comment">// Opague pointer, If the above method didn&#39;t work, try casting directly to Function</span></div>
2580
- <div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; <span class="keywordflow">if</span> (!annotatedFunc)</div>
2581
- <div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; {</div>
2582
- <div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; annotatedFunc = SVFUtil::dyn_cast&lt;Function&gt;(structAn-&gt;getOperand(0));</div>
2583
- <div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; }</div>
2584
- <div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; </div>
2585
- <div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; <span class="comment">// Process the annotated function if it&#39;s not in the removed list</span></div>
2586
- <div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; <span class="keywordflow">if</span> (annotatedFunc &amp;&amp; std::find(removedFuncList.begin(), removedFuncList.end(), annotatedFunc) == removedFuncList.end())</div>
2587
- <div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; {</div>
2588
- <div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; newAnnotations.push_back(structAn);</div>
2589
- <div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; }</div>
2590
- <div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; }</div>
2591
- <div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; </div>
2592
- <div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; <span class="keywordflow">if</span> (newAnnotations.size() == ca-&gt;getNumOperands())</div>
2593
- <div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; <span class="keywordflow">return</span>; <span class="comment">// No annotations to remove</span></div>
2594
- <div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; </div>
2595
- <div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; <a class="code" href="namespaceSVF.html#a146d286041987860388da3d8bc85cee3">ArrayType</a>* annotationsType = ArrayType::get(ca-&gt;getType()-&gt;getElementType(), newAnnotations.size());</div>
2596
- <div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; <a class="code" href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">Constant</a>* newCA = ConstantArray::get(annotationsType, newAnnotations);</div>
2597
- <div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; </div>
2598
- <div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; glob-&gt;setInitializer(newCA);</div>
2599
- <div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160;}</div>
2546
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00460">460</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
2547
+ <div class="fragment"><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160;{</div>
2548
+ <div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; <span class="keywordflow">if</span> (removedFuncList.empty())</div>
2549
+ <div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; <span class="keywordflow">return</span>; <span class="comment">// No functions to remove annotations in extapi.bc module</span></div>
2550
+ <div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; </div>
2551
+ <div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; <a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>* module = (*removedFuncList.begin())-&gt;getParent();</div>
2552
+ <div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* glob = module-&gt;getGlobalVariable(<span class="stringliteral">&quot;llvm.global.annotations&quot;</span>);</div>
2553
+ <div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; <span class="keywordflow">if</span> (glob == <span class="keyword">nullptr</span> || !glob-&gt;hasInitializer())</div>
2554
+ <div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; <span class="keywordflow">return</span>;</div>
2555
+ <div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; </div>
2556
+ <div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; <a class="code" href="namespaceSVF.html#a5ae718cba37d8e34d2946530dc098c8e">ConstantArray</a>* ca = SVFUtil::dyn_cast&lt;ConstantArray&gt;(glob-&gt;getInitializer());</div>
2557
+ <div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <span class="keywordflow">if</span> (ca == <span class="keyword">nullptr</span>)</div>
2558
+ <div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <span class="keywordflow">return</span>;</div>
2559
+ <div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; </div>
2560
+ <div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; std::vector&lt;Constant*&gt; newAnnotations;</div>
2561
+ <div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i &lt; ca-&gt;getNumOperands(); ++i)</div>
2562
+ <div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; {</div>
2563
+ <div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; <a class="code" href="namespaceSVF.html#a2b28f48dde0a9a91d251e654ce1f9477">ConstantStruct</a>* structAn = SVFUtil::dyn_cast&lt;ConstantStruct&gt;(ca-&gt;getOperand(i));</div>
2564
+ <div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; <span class="keywordflow">if</span> (structAn == <span class="keyword">nullptr</span>)</div>
2565
+ <div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; <span class="keywordflow">continue</span>;</div>
2566
+ <div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; </div>
2567
+ <div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* annotatedFunc = <span class="keyword">nullptr</span>;</div>
2568
+ <div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; </div>
2569
+ <div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <span class="comment">// Non-opague pointer, try to cast to ConstantExpr and check for BitCast</span></div>
2570
+ <div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* expr = SVFUtil::dyn_cast&lt;ConstantExpr&gt;(structAn-&gt;getOperand(0)))</div>
2571
+ <div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; {</div>
2572
+ <div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; <span class="keywordflow">if</span> (expr-&gt;getOpcode() == Instruction::BitCast)</div>
2573
+ <div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; {</div>
2574
+ <div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; annotatedFunc = SVFUtil::dyn_cast&lt;Function&gt;(expr-&gt;getOperand(0));</div>
2575
+ <div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; }</div>
2576
+ <div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; }</div>
2577
+ <div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; </div>
2578
+ <div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; <span class="comment">// Opague pointer, If the above method didn&#39;t work, try casting directly to Function</span></div>
2579
+ <div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <span class="keywordflow">if</span> (!annotatedFunc)</div>
2580
+ <div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; {</div>
2581
+ <div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; annotatedFunc = SVFUtil::dyn_cast&lt;Function&gt;(structAn-&gt;getOperand(0));</div>
2582
+ <div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; }</div>
2583
+ <div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; </div>
2584
+ <div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; <span class="comment">// Process the annotated function if it&#39;s not in the removed list</span></div>
2585
+ <div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; <span class="keywordflow">if</span> (annotatedFunc &amp;&amp; std::find(removedFuncList.begin(), removedFuncList.end(), annotatedFunc) == removedFuncList.end())</div>
2586
+ <div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; {</div>
2587
+ <div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; newAnnotations.push_back(structAn);</div>
2588
+ <div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; }</div>
2589
+ <div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; }</div>
2590
+ <div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; </div>
2591
+ <div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; <span class="keywordflow">if</span> (newAnnotations.size() == ca-&gt;getNumOperands())</div>
2592
+ <div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; <span class="keywordflow">return</span>; <span class="comment">// No annotations to remove</span></div>
2593
+ <div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; </div>
2594
+ <div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; <a class="code" href="namespaceSVF.html#a146d286041987860388da3d8bc85cee3">ArrayType</a>* annotationsType = ArrayType::get(ca-&gt;getType()-&gt;getElementType(), newAnnotations.size());</div>
2595
+ <div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; <a class="code" href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">Constant</a>* newCA = ConstantArray::get(annotationsType, newAnnotations);</div>
2596
+ <div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; </div>
2597
+ <div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; glob-&gt;setInitializer(newCA);</div>
2598
+ <div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160;}</div>
2600
2599
  </div><!-- fragment -->
2601
2600
  </div>
2602
2601
  </div>
@@ -2621,45 +2620,45 @@ Functions</h2></td></tr>
2621
2620
  <p>Delete unused functions The functions to be deleted from extapi.bc can be categorized into two types. The first type includes functions do not contain any invocation statements, The second type includes functions whose contain invocation statements. It is necessary to delete functions of the second type first before deleting those of the first type; Otherwise, errors may occur when calling eraseFromParent().</p>
2622
2621
  <p>Check whether a function is called by other functions</p>
2623
2622
 
2624
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00565">565</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
2625
- <div class="fragment"><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160;{</div>
2626
- <div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; <span class="keywordflow">if</span> (removedFuncList.empty())</div>
2627
- <div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; <span class="keywordflow">return</span>;</div>
2628
- <div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; </div>
2629
- <div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; <a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>* mod = (*removedFuncList.begin())-&gt;getParent();</div>
2630
- <div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; <span class="keywordflow">if</span> (mod-&gt;getName().str() != ExtAPI::getExtAPI()-&gt;getExtBcPath())</div>
2631
- <div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; <span class="keywordflow">return</span>;</div>
2632
- <div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; </div>
2633
- <div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2acb79d8c24884ee2dcbba37d98021d9">LLVMUtil::removeFunAnnotations</a>(removedFuncList);</div>
2634
- <div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; </div>
2635
- <div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; std::vector&lt;Function*&gt; funcsToKeep;</div>
2636
- <div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; <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>
2637
- <div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; {</div>
2638
- <div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; assert(<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a> &amp;&amp; <span class="stringliteral">&quot;Null function pointer!&quot;</span>);</div>
2639
- <div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; use : <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>-&gt;uses())</div>
2640
- <div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; {</div>
2641
- <div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; <a class="code" href="namespaceSVF.html#afc1b50355821e7299df03b026e36f1df">llvm::User</a>* user = use.getUser();</div>
2642
- <div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; <span class="keywordflow">if</span> (llvm::isa&lt;llvm::CallBase&gt;(user))</div>
2643
- <div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
2644
- <div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; }</div>
2645
- <div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2646
- <div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; };</div>
2647
- <div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; </div>
2648
- <div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func : removedFuncList)</div>
2649
- <div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; {</div>
2650
- <div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; <span class="keywordflow">if</span> (isCalledFunction(func))</div>
2651
- <div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; <span class="comment">// Record first kind function(which does not contain any invocation statements)</span></div>
2652
- <div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; funcsToKeep.push_back(func);</div>
2653
- <div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; <span class="keywordflow">else</span></div>
2654
- <div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; <span class="comment">// Delete second kind function(which contains invocation statements)</span></div>
2655
- <div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; func-&gt;eraseFromParent();</div>
2656
- <div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; }</div>
2657
- <div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; <span class="comment">// Delete first kind functions</span></div>
2658
- <div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func : funcsToKeep)</div>
2659
- <div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; func-&gt;eraseFromParent();</div>
2660
- <div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; <span class="comment">// Delete unused global variables</span></div>
2661
- <div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ae2b444bb3e7a27d77386f588a78af8e2">removeUnusedGlobalVariables</a>(mod);</div>
2662
- <div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160;}</div>
2623
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00564">564</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
2624
+ <div class="fragment"><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160;{</div>
2625
+ <div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; <span class="keywordflow">if</span> (removedFuncList.empty())</div>
2626
+ <div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; <span class="keywordflow">return</span>;</div>
2627
+ <div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; </div>
2628
+ <div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; <a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>* mod = (*removedFuncList.begin())-&gt;getParent();</div>
2629
+ <div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; <span class="keywordflow">if</span> (mod-&gt;getName().str() != ExtAPI::getExtAPI()-&gt;getExtBcPath())</div>
2630
+ <div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; <span class="keywordflow">return</span>;</div>
2631
+ <div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; </div>
2632
+ <div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2acb79d8c24884ee2dcbba37d98021d9">LLVMUtil::removeFunAnnotations</a>(removedFuncList);</div>
2633
+ <div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; </div>
2634
+ <div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; std::vector&lt;Function*&gt; funcsToKeep;</div>
2635
+ <div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; <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>
2636
+ <div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; {</div>
2637
+ <div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; assert(<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a> &amp;&amp; <span class="stringliteral">&quot;Null function pointer!&quot;</span>);</div>
2638
+ <div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; use : <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>-&gt;uses())</div>
2639
+ <div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; {</div>
2640
+ <div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; <a class="code" href="namespaceSVF.html#afc1b50355821e7299df03b026e36f1df">llvm::User</a>* user = use.getUser();</div>
2641
+ <div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; <span class="keywordflow">if</span> (llvm::isa&lt;llvm::CallBase&gt;(user))</div>
2642
+ <div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
2643
+ <div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; }</div>
2644
+ <div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2645
+ <div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; };</div>
2646
+ <div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; </div>
2647
+ <div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func : removedFuncList)</div>
2648
+ <div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; {</div>
2649
+ <div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; <span class="keywordflow">if</span> (isCalledFunction(func))</div>
2650
+ <div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; <span class="comment">// Record first kind function(which does not contain any invocation statements)</span></div>
2651
+ <div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; funcsToKeep.push_back(func);</div>
2652
+ <div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; <span class="keywordflow">else</span></div>
2653
+ <div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; <span class="comment">// Delete second kind function(which contains invocation statements)</span></div>
2654
+ <div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; func-&gt;eraseFromParent();</div>
2655
+ <div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; }</div>
2656
+ <div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; <span class="comment">// Delete first kind functions</span></div>
2657
+ <div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func : funcsToKeep)</div>
2658
+ <div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; func-&gt;eraseFromParent();</div>
2659
+ <div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; <span class="comment">// Delete unused global variables</span></div>
2660
+ <div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ae2b444bb3e7a27d77386f588a78af8e2">removeUnusedGlobalVariables</a>(mod);</div>
2661
+ <div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160;}</div>
2663
2662
  </div><!-- fragment -->
2664
2663
  </div>
2665
2664
  </div>
@@ -2679,19 +2678,19 @@ Functions</h2></td></tr>
2679
2678
  </table>
2680
2679
  </div><div class="memdoc">
2681
2680
 
2682
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00550">550</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
2683
- <div class="fragment"><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160;{</div>
2684
- <div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; assert(module &amp;&amp; <span class="stringliteral">&quot;Null module pointer!&quot;</span>);</div>
2685
- <div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; std::vector&lt;GlobalVariable*&gt; unusedGlobals;</div>
2686
- <div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>&amp; global : module-&gt;globals())</div>
2687
- <div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#acee7c2fb08e111eda4d91ce5479de05e">isUnusedGlobalVariable</a>(global))</div>
2688
- <div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; <span class="comment">// Record unused global variables</span></div>
2689
- <div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; unusedGlobals.push_back(&amp;global);</div>
2690
- <div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; </div>
2691
- <div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; <span class="comment">// Delete unused global variables</span></div>
2692
- <div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* global : unusedGlobals)</div>
2693
- <div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; global-&gt;eraseFromParent();</div>
2694
- <div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160;}</div>
2681
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00549">549</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
2682
+ <div class="fragment"><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160;{</div>
2683
+ <div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; assert(module &amp;&amp; <span class="stringliteral">&quot;Null module pointer!&quot;</span>);</div>
2684
+ <div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; std::vector&lt;GlobalVariable*&gt; unusedGlobals;</div>
2685
+ <div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>&amp; global : module-&gt;globals())</div>
2686
+ <div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#acee7c2fb08e111eda4d91ce5479de05e">isUnusedGlobalVariable</a>(global))</div>
2687
+ <div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; <span class="comment">// Record unused global variables</span></div>
2688
+ <div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; unusedGlobals.push_back(&amp;global);</div>
2689
+ <div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; </div>
2690
+ <div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; <span class="comment">// Delete unused global variables</span></div>
2691
+ <div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* global : unusedGlobals)</div>
2692
+ <div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; global-&gt;eraseFromParent();</div>
2693
+ <div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160;}</div>
2695
2694
  </div><!-- fragment -->
2696
2695
  </div>
2697
2696
  </div>
@@ -2711,33 +2710,33 @@ Functions</h2></td></tr>
2711
2710
  </table>
2712
2711
  </div><div class="memdoc">
2713
2712
 
2714
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00613">613</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
2715
- <div class="fragment"><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160;{</div>
2716
- <div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; assert(!funcName.empty() &amp;&amp; <span class="stringliteral">&quot;Empty function name&quot;</span>);</div>
2717
- <div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; <span class="comment">// Some function names change due to mangling, such as &quot;fopen&quot; to &quot;\01_fopen&quot; on macOS.</span></div>
2718
- <div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; <span class="comment">// Since C function names cannot include &#39;.&#39;, change the function name from llvm.memcpy.p0i8.p0i8.i64 to llvm_memcpy_p0i8_p0i8_i64.&quot;</span></div>
2719
- <div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; <span class="keywordtype">bool</span> hasSpecialPrefix = funcName[0] == <span class="charliteral">&#39;\01&#39;</span>;</div>
2720
- <div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; <span class="keywordtype">bool</span> hasDot = funcName.find(<span class="charliteral">&#39;.&#39;</span>) != std::string::npos;</div>
2721
- <div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; </div>
2722
- <div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; <span class="keywordflow">if</span> (!hasDot &amp;&amp; !hasSpecialPrefix)</div>
2723
- <div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; <span class="keywordflow">return</span> funcName;</div>
2724
- <div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; </div>
2725
- <div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; <span class="comment">// Remove prefix &quot;\01_&quot; or &quot;\01&quot;</span></div>
2726
- <div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; <span class="keywordflow">if</span> (hasSpecialPrefix)</div>
2727
- <div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; {</div>
2728
- <div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> prefix1 = <span class="stringliteral">&quot;\01_&quot;</span>;</div>
2729
- <div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> prefix2 = <span class="stringliteral">&quot;\01&quot;</span>;</div>
2730
- <div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; <span class="keywordflow">if</span> (funcName.substr(0, prefix1.length()) == prefix1)</div>
2731
- <div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; funcName = funcName.substr(prefix1.length());</div>
2732
- <div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (funcName.substr(0, prefix2.length()) == prefix2)</div>
2733
- <div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; funcName = funcName.substr(prefix2.length());</div>
2734
- <div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; }</div>
2735
- <div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; <span class="comment">// Replace &#39;.&#39; with &#39;_&#39;</span></div>
2736
- <div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; <span class="keywordflow">if</span> (hasDot)</div>
2737
- <div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; std::replace(funcName.begin(), funcName.end(), <span class="charliteral">&#39;.&#39;</span>, <span class="charliteral">&#39;_&#39;</span>);</div>
2738
- <div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; </div>
2739
- <div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; <span class="keywordflow">return</span> funcName;</div>
2740
- <div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160;}</div>
2713
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00612">612</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
2714
+ <div class="fragment"><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160;{</div>
2715
+ <div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; assert(!funcName.empty() &amp;&amp; <span class="stringliteral">&quot;Empty function name&quot;</span>);</div>
2716
+ <div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; <span class="comment">// Some function names change due to mangling, such as &quot;fopen&quot; to &quot;\01_fopen&quot; on macOS.</span></div>
2717
+ <div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; <span class="comment">// Since C function names cannot include &#39;.&#39;, change the function name from llvm.memcpy.p0i8.p0i8.i64 to llvm_memcpy_p0i8_p0i8_i64.&quot;</span></div>
2718
+ <div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; <span class="keywordtype">bool</span> hasSpecialPrefix = funcName[0] == <span class="charliteral">&#39;\01&#39;</span>;</div>
2719
+ <div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; <span class="keywordtype">bool</span> hasDot = funcName.find(<span class="charliteral">&#39;.&#39;</span>) != std::string::npos;</div>
2720
+ <div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; </div>
2721
+ <div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; <span class="keywordflow">if</span> (!hasDot &amp;&amp; !hasSpecialPrefix)</div>
2722
+ <div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; <span class="keywordflow">return</span> funcName;</div>
2723
+ <div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; </div>
2724
+ <div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; <span class="comment">// Remove prefix &quot;\01_&quot; or &quot;\01&quot;</span></div>
2725
+ <div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; <span class="keywordflow">if</span> (hasSpecialPrefix)</div>
2726
+ <div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; {</div>
2727
+ <div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> prefix1 = <span class="stringliteral">&quot;\01_&quot;</span>;</div>
2728
+ <div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> prefix2 = <span class="stringliteral">&quot;\01&quot;</span>;</div>
2729
+ <div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; <span class="keywordflow">if</span> (funcName.substr(0, prefix1.length()) == prefix1)</div>
2730
+ <div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; funcName = funcName.substr(prefix1.length());</div>
2731
+ <div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (funcName.substr(0, prefix2.length()) == prefix2)</div>
2732
+ <div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; funcName = funcName.substr(prefix2.length());</div>
2733
+ <div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; }</div>
2734
+ <div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; <span class="comment">// Replace &#39;.&#39; with &#39;_&#39;</span></div>
2735
+ <div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; <span class="keywordflow">if</span> (hasDot)</div>
2736
+ <div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; std::replace(funcName.begin(), funcName.end(), <span class="charliteral">&#39;.&#39;</span>, <span class="charliteral">&#39;_&#39;</span>);</div>
2737
+ <div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; </div>
2738
+ <div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; <span class="keywordflow">return</span> funcName;</div>
2739
+ <div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160;}</div>
2741
2740
  </div><!-- fragment -->
2742
2741
  </div>
2743
2742
  </div>
@@ -2872,8 +2871,8 @@ Functions</h2></td></tr>
2872
2871
  </div>
2873
2872
  </div><!-- contents -->
2874
2873
  <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>
2875
- <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#l00679">LLVMUtil.cpp:679</a></div></div>
2876
- <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#l00896">LLVMUtil.cpp:896</a></div></div>
2874
+ <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>
2875
+ <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>
2877
2876
  <div class="ttc" id="anamespaceSVF_1_1cppUtil_html_aeef0f5c6486379043a7d47b0635f2667"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#aeef0f5c6486379043a7d47b0635f2667">SVF::cppUtil::isValVtbl</a></div><div class="ttdeci">bool isValVtbl(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#l00271">CppUtil.cpp:271</a></div></div>
2878
2877
  <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>
2879
2878
  <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_aeaa116fd9718c8b31f30d3fe62bb6403"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#aeaa116fd9718c8b31f30d3fe62bb6403">SVF::LLVMUtil::isCallSite</a></div><div class="ttdeci">bool isCallSite(const Value *val)</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#l00050">LLVMUtil.h:50</a></div></div>
@@ -2882,19 +2881,18 @@ Functions</h2></td></tr>
2882
2881
  <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&lt; const Function * &gt; FunctionSetType</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00050">LLVMModule.h:50</a></div></div>
2883
2882
  <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&lt; Key, Hash, KeyEqual, Allocator &gt; Set</div><div class="ttdef"><b>Definition:</b> <a href="GeneralType_8h_source.html#l00092">GeneralType.h:92</a></div></div>
2884
2883
  <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>
2885
- <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>
2886
2884
  <div class="ttc" id="anamespaceSVF_html_a03db82b8a7914367024723dba4d6ca3c"><div class="ttname"><a href="namespaceSVF.html#a03db82b8a7914367024723dba4d6ca3c">SVF::DataLayout</a></div><div class="ttdeci">llvm::DataLayout DataLayout</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00107">BasicTypes.h:107</a></div></div>
2887
2885
  <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>
2888
2886
  <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>
2889
2887
  <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>
2890
- <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#l00853">LLVMUtil.cpp:853</a></div></div>
2888
+ <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>
2891
2889
  <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>
2892
- <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#l00550">LLVMUtil.cpp:550</a></div></div>
2890
+ <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>
2893
2891
  <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>
2894
2892
  <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>
2895
2893
  <div class="ttc" id="anamespaceSVF_html_a7cbe1c6567039e72958fd70e423d3597"><div class="ttname"><a href="namespaceSVF.html#a7cbe1c6567039e72958fd70e423d3597">SVF::ConstantAggregate</a></div><div class="ttdeci">llvm::ConstantAggregate ConstantAggregate</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00116">BasicTypes.h:116</a></div></div>
2896
2894
  <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>
2897
- <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&lt; const Function * &gt; 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#l00516">LLVMUtil.cpp:516</a></div></div>
2895
+ <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&lt; const Function * &gt; 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>
2898
2896
  <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>
2899
2897
  <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>
2900
2898
  <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>
@@ -2915,7 +2913,7 @@ Functions</h2></td></tr>
2915
2913
  <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>
2916
2914
  <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>
2917
2915
  <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>
2918
- <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 &amp;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#l00413">LLVMUtil.cpp:413</a></div></div>
2916
+ <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 &amp;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>
2919
2917
  <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>
2920
2918
  <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>
2921
2919
  <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>
@@ -2932,11 +2930,11 @@ Functions</h2></td></tr>
2932
2930
  <div class="ttc" id="aclassSVF_1_1StInfo_html_ac0a9f85f90524abfd519d3cd2ac95a56"><div class="ttname"><a href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">SVF::StInfo::getFlattenFieldTypes</a></div><div class="ttdeci">std::vector&lt; const SVFType * &gt; &amp; getFlattenFieldTypes()</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00106">SVFType.h:106</a></div></div>
2933
2931
  <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>
2934
2932
  <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>
2935
- <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 &amp;global)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00535">LLVMUtil.cpp:535</a></div></div>
2933
+ <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 &amp;global)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00534">LLVMUtil.cpp:534</a></div></div>
2936
2934
  <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>
2937
- <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&lt; Function * &gt; &amp;removedFuncList)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00461">LLVMUtil.cpp:461</a></div></div>
2935
+ <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&lt; Function * &gt; &amp;removedFuncList)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00460">LLVMUtil.cpp:460</a></div></div>
2938
2936
  <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>
2939
- <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#l00783">LLVMUtil.cpp:783</a></div></div>
2937
+ <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>
2940
2938
  <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>
2941
2939
  <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a4c94a6c02fb89c1a1604c87414956acd"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a4c94a6c02fb89c1a1604c87414956acd">SVF::LLVMUtil::getPrevInsts</a></div><div class="ttdeci">void getPrevInsts(const Instruction *curInst, std::vector&lt; const SVFInstruction * &gt; &amp;instList)</div><div class="ttdoc">Get the previous instructions following control flow.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00331">LLVMUtil.cpp:331</a></div></div>
2942
2940
  <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>