svf-tools 1.0.761 → 1.0.762
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +1199 -1180
- package/SVF-doxygen/html/html/LLVMModule_8h_source.html +162 -159
- package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +3 -3
- package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +2 -2
- package/SVF-doxygen/html/html/SVFIRExtAPI_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +1206 -1184
- package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1RaceResultValidator.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +3 -3
- package/SVF-doxygen/html/html/svf-llvm_2tools_2MTA_2MTAResultValidator_8h_source.html +1 -1
- package/SVF-doxygen/html/html/svf_2include_2MTA_2MTAResultValidator_8h_source.html +1 -1
- package/package.json +1 -1
- package/svf-llvm/include/SVF-LLVM/LLVMModule.h +3 -0
- package/svf-llvm/lib/LLVMModule.cpp +23 -4
|
@@ -947,99 +947,99 @@ Friends</h2></td></tr>
|
|
|
947
947
|
</table>
|
|
948
948
|
</div><div class="memdoc">
|
|
949
949
|
|
|
950
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#
|
|
951
|
-
<div class="fragment"><div class="line"><a name="
|
|
952
|
-
<div class="line"><a name="
|
|
953
|
-
<div class="line"><a name="
|
|
954
|
-
<div class="line"><a name="
|
|
955
|
-
<div class="line"><a name="
|
|
956
|
-
<div class="line"><a name="
|
|
957
|
-
<div class="line"><a name="
|
|
958
|
-
<div class="line"><a name="
|
|
959
|
-
<div class="line"><a name="
|
|
960
|
-
<div class="line"><a name="
|
|
961
|
-
<div class="line"><a name="
|
|
962
|
-
<div class="line"><a name="
|
|
963
|
-
<div class="line"><a name="
|
|
964
|
-
<div class="line"><a name="
|
|
965
|
-
<div class="line"><a name="
|
|
966
|
-
<div class="line"><a name="
|
|
967
|
-
<div class="line"><a name="
|
|
968
|
-
<div class="line"><a name="
|
|
969
|
-
<div class="line"><a name="
|
|
970
|
-
<div class="line"><a name="
|
|
971
|
-
<div class="line"><a name="
|
|
972
|
-
<div class="line"><a name="
|
|
973
|
-
<div class="line"><a name="
|
|
974
|
-
<div class="line"><a name="
|
|
975
|
-
<div class="line"><a name="
|
|
976
|
-
<div class="line"><a name="
|
|
977
|
-
<div class="line"><a name="
|
|
978
|
-
<div class="line"><a name="l00658"></a><span class="lineno"> 658</span>  </div>
|
|
979
|
-
<div class="line"><a name="l00659"></a><span class="lineno"> 659</span>  <span class="keywordflow">if</span> (funName.equals(<span class="stringliteral">"main"</span>))</div>
|
|
980
|
-
<div class="line"><a name="l00660"></a><span class="lineno"> 660</span>  {</div>
|
|
981
|
-
<div class="line"><a name="l00661"></a><span class="lineno"> 661</span>  orgMain = &func;</div>
|
|
982
|
-
<div class="line"><a name="l00662"></a><span class="lineno"> 662</span>  mainMod = &mod;</div>
|
|
983
|
-
<div class="line"><a name="l00663"></a><span class="lineno"> 663</span>  }</div>
|
|
984
|
-
<div class="line"><a name="l00664"></a><span class="lineno"> 664</span>  }</div>
|
|
985
|
-
<div class="line"><a name="l00665"></a><span class="lineno"> 665</span>  }</div>
|
|
950
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00638">638</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
|
|
951
|
+
<div class="fragment"><div class="line"><a name="l00639"></a><span class="lineno"> 639</span> {</div>
|
|
952
|
+
<div class="line"><a name="l00640"></a><span class="lineno"> 640</span>  std::vector<const Function*> ctor_funcs;</div>
|
|
953
|
+
<div class="line"><a name="l00641"></a><span class="lineno"> 641</span>  std::vector<const Function*> dtor_funcs;</div>
|
|
954
|
+
<div class="line"><a name="l00642"></a><span class="lineno"> 642</span>  <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* orgMain = 0;</div>
|
|
955
|
+
<div class="line"><a name="l00643"></a><span class="lineno"> 643</span>  <a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>* mainMod = <span class="keyword">nullptr</span>;</div>
|
|
956
|
+
<div class="line"><a name="l00644"></a><span class="lineno"> 644</span>  </div>
|
|
957
|
+
<div class="line"><a name="l00645"></a><span class="lineno"> 645</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a> &mod : <a class="code" href="classSVF_1_1LLVMModuleSet.html#acde6292e719c80f93d3d1c344ab442cd">modules</a>)</div>
|
|
958
|
+
<div class="line"><a name="l00646"></a><span class="lineno"> 646</span>  {</div>
|
|
959
|
+
<div class="line"><a name="l00647"></a><span class="lineno"> 647</span>  <span class="comment">// Collect ctor and dtor functions</span></div>
|
|
960
|
+
<div class="line"><a name="l00648"></a><span class="lineno"> 648</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>& global : mod.globals())</div>
|
|
961
|
+
<div class="line"><a name="l00649"></a><span class="lineno"> 649</span>  {</div>
|
|
962
|
+
<div class="line"><a name="l00650"></a><span class="lineno"> 650</span>  <span class="keywordflow">if</span> (global.getName().equals(<a class="code" href="LLVMModule_8cpp.html#aa18802f2f60ef8030c66a42f20f285af">SVF_GLOBAL_CTORS</a>) && global.hasInitializer())</div>
|
|
963
|
+
<div class="line"><a name="l00651"></a><span class="lineno"> 651</span>  {</div>
|
|
964
|
+
<div class="line"><a name="l00652"></a><span class="lineno"> 652</span>  ctor_funcs = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a0b46a2a5ff2165d17993a071d9cc82c1">getLLVMGlobalFunctions</a>(&global);</div>
|
|
965
|
+
<div class="line"><a name="l00653"></a><span class="lineno"> 653</span>  }</div>
|
|
966
|
+
<div class="line"><a name="l00654"></a><span class="lineno"> 654</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (global.getName().equals(<a class="code" href="LLVMModule_8cpp.html#a9fd6e28e6ed93f65a20a348ab0646320">SVF_GLOBAL_DTORS</a>) && global.hasInitializer())</div>
|
|
967
|
+
<div class="line"><a name="l00655"></a><span class="lineno"> 655</span>  {</div>
|
|
968
|
+
<div class="line"><a name="l00656"></a><span class="lineno"> 656</span>  dtor_funcs = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a0b46a2a5ff2165d17993a071d9cc82c1">getLLVMGlobalFunctions</a>(&global);</div>
|
|
969
|
+
<div class="line"><a name="l00657"></a><span class="lineno"> 657</span>  }</div>
|
|
970
|
+
<div class="line"><a name="l00658"></a><span class="lineno"> 658</span>  }</div>
|
|
971
|
+
<div class="line"><a name="l00659"></a><span class="lineno"> 659</span>  </div>
|
|
972
|
+
<div class="line"><a name="l00660"></a><span class="lineno"> 660</span>  <span class="comment">// Find main function</span></div>
|
|
973
|
+
<div class="line"><a name="l00661"></a><span class="lineno"> 661</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> &func : mod)</div>
|
|
974
|
+
<div class="line"><a name="l00662"></a><span class="lineno"> 662</span>  {</div>
|
|
975
|
+
<div class="line"><a name="l00663"></a><span class="lineno"> 663</span>  <span class="keyword">auto</span> funName = func.getName();</div>
|
|
976
|
+
<div class="line"><a name="l00664"></a><span class="lineno"> 664</span>  </div>
|
|
977
|
+
<div class="line"><a name="l00665"></a><span class="lineno"> 665</span>  assert(!funName.equals(<a class="code" href="LLVMModule_8cpp.html#a10ab7c7da3a458495d8528b9e90d714b">SVF_MAIN_FUNC_NAME</a>) && <a class="code" href="LLVMModule_8cpp.html#a10ab7c7da3a458495d8528b9e90d714b">SVF_MAIN_FUNC_NAME</a> <span class="stringliteral">" already defined"</span>);</div>
|
|
986
978
|
<div class="line"><a name="l00666"></a><span class="lineno"> 666</span>  </div>
|
|
987
|
-
<div class="line"><a name="l00667"></a><span class="lineno"> 667</span> 
|
|
988
|
-
<div class="line"><a name="l00668"></a><span class="lineno"> 668</span> 
|
|
989
|
-
<div class="line"><a name="l00669"></a><span class="lineno"> 669</span> 
|
|
990
|
-
<div class="line"><a name="l00670"></a><span class="lineno"> 670</span> 
|
|
991
|
-
<div class="line"><a name="l00671"></a><span class="lineno"> 671</span> 
|
|
992
|
-
<div class="line"><a name="l00672"></a><span class="lineno"> 672</span> 
|
|
993
|
-
<div class="line"><a name="l00673"></a><span class="lineno"> 673</span> 
|
|
994
|
-
<div class="line"><a name="l00674"></a><span class="lineno"> 674</span> 
|
|
995
|
-
<div class="line"><a name="l00675"></a><span class="lineno"> 675</span> 
|
|
996
|
-
<div class="line"><a name="l00676"></a><span class="lineno"> 676</span> 
|
|
997
|
-
<div class="line"><a name="l00677"></a><span class="lineno"> 677</span> 
|
|
998
|
-
<div class="line"><a name="l00678"></a><span class="lineno"> 678</span> 
|
|
999
|
-
<div class="line"><a name="l00679"></a><span class="lineno"> 679</span> 
|
|
1000
|
-
<div class="line"><a name="l00680"></a><span class="lineno"> 680</span> 
|
|
1001
|
-
<div class="line"><a name="l00681"></a><span class="lineno"> 681</span> 
|
|
1002
|
-
<div class="line"><a name="l00682"></a><span class="lineno"> 682</span> 
|
|
1003
|
-
<div class="line"><a name="l00683"></a><span class="lineno"> 683</span> 
|
|
1004
|
-
<div class="line"><a name="l00684"></a><span class="lineno"> 684</span>  <a class="code" href="namespaceSVF.html#
|
|
1005
|
-
<div class="line"><a name="l00685"></a><span class="lineno"> 685</span> 
|
|
1006
|
-
<div class="line"><a name="l00686"></a><span class="lineno"> 686</span> 
|
|
1007
|
-
<div class="line"><a name="l00687"></a><span class="lineno"> 687</span> 
|
|
1008
|
-
<div class="line"><a name="l00688"></a><span class="lineno"> 688</span> 
|
|
1009
|
-
<div class="line"><a name="l00689"></a><span class="lineno"> 689</span> 
|
|
1010
|
-
<div class="line"><a name="l00690"></a><span class="lineno"> 690</span> 
|
|
1011
|
-
<div class="line"><a name="l00691"></a><span class="lineno"> 691</span> 
|
|
1012
|
-
<div class="line"><a name="l00692"></a><span class="lineno"> 692</span>  svfmain
|
|
1013
|
-
<div class="line"><a name="l00693"></a><span class="lineno"> 693</span> 
|
|
1014
|
-
<div class="line"><a name="l00694"></a><span class="lineno"> 694</span>  <a class="code" href="namespaceSVF.html#
|
|
1015
|
-
<div class="line"><a name="l00695"></a><span class="lineno"> 695</span> 
|
|
1016
|
-
<div class="line"><a name="l00696"></a><span class="lineno"> 696</span> 
|
|
1017
|
-
<div class="line"><a name="l00697"></a><span class="lineno"> 697</span> 
|
|
1018
|
-
<div class="line"><a name="l00698"></a><span class="lineno"> 698</span> 
|
|
1019
|
-
<div class="line"><a name="l00699"></a><span class="lineno"> 699</span> 
|
|
1020
|
-
<div class="line"><a name="l00700"></a><span class="lineno"> 700</span> 
|
|
1021
|
-
<div class="line"><a name="l00701"></a><span class="lineno"> 701</span> 
|
|
1022
|
-
<div class="line"><a name="l00702"></a><span class="lineno"> 702</span> 
|
|
1023
|
-
<div class="line"><a name="l00703"></a><span class="lineno"> 703</span> 
|
|
1024
|
-
<div class="line"><a name="l00704"></a><span class="lineno"> 704</span> 
|
|
1025
|
-
<div class="line"><a name="l00705"></a><span class="lineno"> 705</span>  <span class="
|
|
1026
|
-
<div class="line"><a name="l00706"></a><span class="lineno"> 706</span> 
|
|
1027
|
-
<div class="line"><a name="l00707"></a><span class="lineno"> 707</span> 
|
|
1028
|
-
<div class="line"><a name="l00708"></a><span class="lineno"> 708</span> 
|
|
1029
|
-
<div class="line"><a name="l00709"></a><span class="lineno"> 709</span> 
|
|
1030
|
-
<div class="line"><a name="l00710"></a><span class="lineno"> 710</span> 
|
|
1031
|
-
<div class="line"><a name="l00711"></a><span class="lineno"> 711</span> 
|
|
1032
|
-
<div class="line"><a name="l00712"></a><span class="lineno"> 712</span> 
|
|
1033
|
-
<div class="line"><a name="l00713"></a><span class="lineno"> 713</span>  <span class="comment">//
|
|
1034
|
-
<div class="line"><a name="l00714"></a><span class="lineno"> 714</span>  <span class="
|
|
1035
|
-
<div class="line"><a name="l00715"></a><span class="lineno"> 715</span> 
|
|
1036
|
-
<div class="line"><a name="l00716"></a><span class="lineno"> 716</span> 
|
|
1037
|
-
<div class="line"><a name="l00717"></a><span class="lineno"> 717</span> 
|
|
1038
|
-
<div class="line"><a name="l00718"></a><span class="lineno"> 718</span> 
|
|
1039
|
-
<div class="line"><a name="l00719"></a><span class="lineno"> 719</span> 
|
|
1040
|
-
<div class="line"><a name="l00720"></a><span class="lineno"> 720</span> 
|
|
1041
|
-
<div class="line"><a name="l00721"></a><span class="lineno"> 721</span> 
|
|
1042
|
-
<div class="line"><a name="l00722"></a><span class="lineno"> 722</span> 
|
|
979
|
+
<div class="line"><a name="l00667"></a><span class="lineno"> 667</span>  <span class="keywordflow">if</span> (funName.equals(<span class="stringliteral">"main"</span>))</div>
|
|
980
|
+
<div class="line"><a name="l00668"></a><span class="lineno"> 668</span>  {</div>
|
|
981
|
+
<div class="line"><a name="l00669"></a><span class="lineno"> 669</span>  orgMain = &func;</div>
|
|
982
|
+
<div class="line"><a name="l00670"></a><span class="lineno"> 670</span>  mainMod = &mod;</div>
|
|
983
|
+
<div class="line"><a name="l00671"></a><span class="lineno"> 671</span>  }</div>
|
|
984
|
+
<div class="line"><a name="l00672"></a><span class="lineno"> 672</span>  }</div>
|
|
985
|
+
<div class="line"><a name="l00673"></a><span class="lineno"> 673</span>  }</div>
|
|
986
|
+
<div class="line"><a name="l00674"></a><span class="lineno"> 674</span>  </div>
|
|
987
|
+
<div class="line"><a name="l00675"></a><span class="lineno"> 675</span>  <span class="comment">// Only create svf.main when the original main function is found, and also</span></div>
|
|
988
|
+
<div class="line"><a name="l00676"></a><span class="lineno"> 676</span>  <span class="comment">// there are global constructor or destructor functions.</span></div>
|
|
989
|
+
<div class="line"><a name="l00677"></a><span class="lineno"> 677</span>  <span class="keywordflow">if</span> (orgMain && <a class="code" href="classSVF_1_1LLVMModuleSet.html#ae265a7f3cc7367d62013e0f15cf3d233">getModuleNum</a>() > 0 &&</div>
|
|
990
|
+
<div class="line"><a name="l00678"></a><span class="lineno"> 678</span>  (ctor_funcs.size() > 0 || dtor_funcs.size() > 0))</div>
|
|
991
|
+
<div class="line"><a name="l00679"></a><span class="lineno"> 679</span>  {</div>
|
|
992
|
+
<div class="line"><a name="l00680"></a><span class="lineno"> 680</span>  assert(mainMod && <span class="stringliteral">"Module with main function not found."</span>);</div>
|
|
993
|
+
<div class="line"><a name="l00681"></a><span class="lineno"> 681</span>  <a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>& M = *mainMod;</div>
|
|
994
|
+
<div class="line"><a name="l00682"></a><span class="lineno"> 682</span>  <span class="comment">// char **</span></div>
|
|
995
|
+
<div class="line"><a name="l00683"></a><span class="lineno"> 683</span>  <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* i8ptr2 = PointerType::getInt8PtrTy(M.getContext())->getPointerTo();</div>
|
|
996
|
+
<div class="line"><a name="l00684"></a><span class="lineno"> 684</span>  <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* i32 = IntegerType::getInt32Ty(M.getContext());</div>
|
|
997
|
+
<div class="line"><a name="l00685"></a><span class="lineno"> 685</span>  <span class="comment">// define void @svf.main(i32, i8**, i8**)</span></div>
|
|
998
|
+
<div class="line"><a name="l00686"></a><span class="lineno"> 686</span> <span class="preprocessor">#if (LLVM_VERSION_MAJOR >= 9)</span></div>
|
|
999
|
+
<div class="line"><a name="l00687"></a><span class="lineno"> 687</span>  FunctionCallee svfmainFn = M.getOrInsertFunction(</div>
|
|
1000
|
+
<div class="line"><a name="l00688"></a><span class="lineno"> 688</span>  <a class="code" href="LLVMModule_8cpp.html#a10ab7c7da3a458495d8528b9e90d714b">SVF_MAIN_FUNC_NAME</a>,</div>
|
|
1001
|
+
<div class="line"><a name="l00689"></a><span class="lineno"> 689</span>  Type::getVoidTy(M.getContext()),</div>
|
|
1002
|
+
<div class="line"><a name="l00690"></a><span class="lineno"> 690</span>  i32,i8ptr2,i8ptr2</div>
|
|
1003
|
+
<div class="line"><a name="l00691"></a><span class="lineno"> 691</span>  );</div>
|
|
1004
|
+
<div class="line"><a name="l00692"></a><span class="lineno"> 692</span>  <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* svfmain = SVFUtil::dyn_cast<Function>(svfmainFn.getCallee());</div>
|
|
1005
|
+
<div class="line"><a name="l00693"></a><span class="lineno"> 693</span> <span class="preprocessor">#else</span></div>
|
|
1006
|
+
<div class="line"><a name="l00694"></a><span class="lineno"> 694</span>  <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* svfmain = SVFUtil::dyn_cast<Function>(M.getOrInsertFunction(</div>
|
|
1007
|
+
<div class="line"><a name="l00695"></a><span class="lineno"> 695</span>  <a class="code" href="LLVMModule_8cpp.html#a10ab7c7da3a458495d8528b9e90d714b">SVF_MAIN_FUNC_NAME</a>,</div>
|
|
1008
|
+
<div class="line"><a name="l00696"></a><span class="lineno"> 696</span>  Type::getVoidTy(M.getContext()),</div>
|
|
1009
|
+
<div class="line"><a name="l00697"></a><span class="lineno"> 697</span>  i32,i8ptr2,i8ptr2</div>
|
|
1010
|
+
<div class="line"><a name="l00698"></a><span class="lineno"> 698</span>  ));</div>
|
|
1011
|
+
<div class="line"><a name="l00699"></a><span class="lineno"> 699</span> <span class="preprocessor">#endif</span></div>
|
|
1012
|
+
<div class="line"><a name="l00700"></a><span class="lineno"> 700</span>  svfmain->setCallingConv(llvm::CallingConv::C);</div>
|
|
1013
|
+
<div class="line"><a name="l00701"></a><span class="lineno"> 701</span>  <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* block = BasicBlock::Create(M.getContext(), <span class="stringliteral">"entry"</span>, svfmain);</div>
|
|
1014
|
+
<div class="line"><a name="l00702"></a><span class="lineno"> 702</span>  <a class="code" href="namespaceSVF.html#a94824519e439aeef1568d415b6f7331c">IRBuilder</a> Builder(block);</div>
|
|
1015
|
+
<div class="line"><a name="l00703"></a><span class="lineno"> 703</span>  <span class="comment">// emit "call void @ctor()". ctor_funcs is sorted so the functions are</span></div>
|
|
1016
|
+
<div class="line"><a name="l00704"></a><span class="lineno"> 704</span>  <span class="comment">// emitted in the order of priority</span></div>
|
|
1017
|
+
<div class="line"><a name="l00705"></a><span class="lineno"> 705</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span>& ctor : ctor_funcs)</div>
|
|
1018
|
+
<div class="line"><a name="l00706"></a><span class="lineno"> 706</span>  {</div>
|
|
1019
|
+
<div class="line"><a name="l00707"></a><span class="lineno"> 707</span>  <span class="keyword">auto</span> target = M.getOrInsertFunction(</div>
|
|
1020
|
+
<div class="line"><a name="l00708"></a><span class="lineno"> 708</span>  ctor->getName(),</div>
|
|
1021
|
+
<div class="line"><a name="l00709"></a><span class="lineno"> 709</span>  Type::getVoidTy(M.getContext())</div>
|
|
1022
|
+
<div class="line"><a name="l00710"></a><span class="lineno"> 710</span>  );</div>
|
|
1023
|
+
<div class="line"><a name="l00711"></a><span class="lineno"> 711</span>  Builder.CreateCall(target);</div>
|
|
1024
|
+
<div class="line"><a name="l00712"></a><span class="lineno"> 712</span>  }</div>
|
|
1025
|
+
<div class="line"><a name="l00713"></a><span class="lineno"> 713</span>  <span class="comment">// main() should be called after all ctor functions and before dtor</span></div>
|
|
1026
|
+
<div class="line"><a name="l00714"></a><span class="lineno"> 714</span>  <span class="comment">// functions.</span></div>
|
|
1027
|
+
<div class="line"><a name="l00715"></a><span class="lineno"> 715</span>  Function::arg_iterator arg_it = svfmain->arg_begin();</div>
|
|
1028
|
+
<div class="line"><a name="l00716"></a><span class="lineno"> 716</span>  <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* args[] = {arg_it, arg_it + 1, arg_it + 2};</div>
|
|
1029
|
+
<div class="line"><a name="l00717"></a><span class="lineno"> 717</span>  <span class="keywordtype">size_t</span> cnt = orgMain->arg_size();</div>
|
|
1030
|
+
<div class="line"><a name="l00718"></a><span class="lineno"> 718</span>  assert(cnt <= 3 && <span class="stringliteral">"Too many arguments for main()"</span>);</div>
|
|
1031
|
+
<div class="line"><a name="l00719"></a><span class="lineno"> 719</span>  Builder.CreateCall(orgMain, llvm::ArrayRef<Value*>(args, args + cnt));</div>
|
|
1032
|
+
<div class="line"><a name="l00720"></a><span class="lineno"> 720</span>  <span class="comment">// emit "call void @dtor()". dtor_funcs is sorted so the functions are</span></div>
|
|
1033
|
+
<div class="line"><a name="l00721"></a><span class="lineno"> 721</span>  <span class="comment">// emitted in the order of priority</span></div>
|
|
1034
|
+
<div class="line"><a name="l00722"></a><span class="lineno"> 722</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span>& dtor : dtor_funcs)</div>
|
|
1035
|
+
<div class="line"><a name="l00723"></a><span class="lineno"> 723</span>  {</div>
|
|
1036
|
+
<div class="line"><a name="l00724"></a><span class="lineno"> 724</span>  <span class="keyword">auto</span> target = M.getOrInsertFunction(dtor->getName(), Type::getVoidTy(M.getContext()));</div>
|
|
1037
|
+
<div class="line"><a name="l00725"></a><span class="lineno"> 725</span>  Builder.CreateCall(target);</div>
|
|
1038
|
+
<div class="line"><a name="l00726"></a><span class="lineno"> 726</span>  }</div>
|
|
1039
|
+
<div class="line"><a name="l00727"></a><span class="lineno"> 727</span>  <span class="comment">// return;</span></div>
|
|
1040
|
+
<div class="line"><a name="l00728"></a><span class="lineno"> 728</span>  Builder.CreateRetVoid();</div>
|
|
1041
|
+
<div class="line"><a name="l00729"></a><span class="lineno"> 729</span>  }</div>
|
|
1042
|
+
<div class="line"><a name="l00730"></a><span class="lineno"> 730</span> }</div>
|
|
1043
1043
|
</div><!-- fragment -->
|
|
1044
1044
|
</div>
|
|
1045
1045
|
</div>
|
|
@@ -1069,51 +1069,51 @@ Friends</h2></td></tr>
|
|
|
1069
1069
|
|
|
1070
1070
|
<p>Create SVFTypes. </p>
|
|
1071
1071
|
|
|
1072
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#
|
|
1073
|
-
<div class="fragment"><div class="line"><a name="
|
|
1074
|
-
<div class="line"><a name="
|
|
1075
|
-
<div class="line"><a name="
|
|
1076
|
-
<div class="line"><a name="
|
|
1077
|
-
<div class="line"><a name="
|
|
1078
|
-
<div class="line"><a name="
|
|
1079
|
-
<div class="line"><a name="
|
|
1080
|
-
<div class="line"><a name="
|
|
1081
|
-
<div class="line"><a name="
|
|
1082
|
-
<div class="line"><a name="
|
|
1083
|
-
<div class="line"><a name="
|
|
1084
|
-
<div class="line"><a name="
|
|
1085
|
-
<div class="line"><a name="
|
|
1086
|
-
<div class="line"><a name="
|
|
1087
|
-
<div class="line"><a name="
|
|
1088
|
-
<div class="line"><a name="
|
|
1089
|
-
<div class="line"><a name="
|
|
1090
|
-
<div class="line"><a name="
|
|
1091
|
-
<div class="line"><a name="
|
|
1092
|
-
<div class="line"><a name="
|
|
1093
|
-
<div class="line"><a name="
|
|
1094
|
-
<div class="line"><a name="
|
|
1095
|
-
<div class="line"><a name="
|
|
1096
|
-
<div class="line"><a name="
|
|
1097
|
-
<div class="line"><a name="
|
|
1098
|
-
<div class="line"><a name="
|
|
1099
|
-
<div class="line"><a name="
|
|
1100
|
-
<div class="line"><a name="
|
|
1101
|
-
<div class="line"><a name="
|
|
1102
|
-
<div class="line"><a name="
|
|
1103
|
-
<div class="line"><a name="
|
|
1104
|
-
<div class="line"><a name="
|
|
1105
|
-
<div class="line"><a name="
|
|
1106
|
-
<div class="line"><a name="
|
|
1107
|
-
<div class="line"><a name="
|
|
1108
|
-
<div class="line"><a name="
|
|
1109
|
-
<div class="line"><a name="
|
|
1110
|
-
<div class="line"><a name="
|
|
1111
|
-
<div class="line"><a name="
|
|
1112
|
-
<div class="line"><a name="
|
|
1113
|
-
<div class="line"><a name="
|
|
1114
|
-
<div class="line"><a name="
|
|
1115
|
-
<div class="line"><a name="
|
|
1116
|
-
<div class="line"><a name="
|
|
1072
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01230">1230</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
|
|
1073
|
+
<div class="fragment"><div class="line"><a name="l01231"></a><span class="lineno"> 1231</span> {</div>
|
|
1074
|
+
<div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>  assert(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">LLVMType2SVFType</a>.find(T) == <a class="code" href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">LLVMType2SVFType</a>.end() &&</div>
|
|
1075
|
+
<div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>  <span class="stringliteral">"SVFType has been added before"</span>);</div>
|
|
1076
|
+
<div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>  </div>
|
|
1077
|
+
<div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>  <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* svftype;</div>
|
|
1078
|
+
<div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>* pt = SVFUtil::dyn_cast<PointerType>(T))</div>
|
|
1079
|
+
<div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>  svftype = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFPointerType.html">SVFPointerType</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#abba4111230f6009bbf50518ee36a9870">LLVMUtil::getPtrElementType</a>(pt)));</div>
|
|
1080
|
+
<div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a3d9e7f32dc17fe8d40f8d6a011403b91">IntegerType</a>* intT = SVFUtil::dyn_cast<IntegerType>(T))</div>
|
|
1081
|
+
<div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>  {</div>
|
|
1082
|
+
<div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>  <span class="keyword">auto</span> svfIntT = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFIntegerType.html">SVFIntegerType</a>();</div>
|
|
1083
|
+
<div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>  <span class="keywordtype">unsigned</span> signWidth = intT->getBitWidth();</div>
|
|
1084
|
+
<div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>  assert(signWidth < INT16_MAX && <span class="stringliteral">"Integer width too big"</span>);</div>
|
|
1085
|
+
<div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>  svfIntT->setSignAndWidth(intT->getSignBit() ? -signWidth : signWidth);</div>
|
|
1086
|
+
<div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>  svftype = svfIntT;</div>
|
|
1087
|
+
<div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>  }</div>
|
|
1088
|
+
<div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a6ec0236303089a01fd9da36a8bb84e0a">FunctionType</a>* ft = SVFUtil::dyn_cast<FunctionType>(T))</div>
|
|
1089
|
+
<div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>  svftype = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFFunctionType.html">SVFFunctionType</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(ft->getReturnType()));</div>
|
|
1090
|
+
<div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a2bf58575ac7d068e0f1a4cf953b9e6cb">StructType</a>* st = SVFUtil::dyn_cast<StructType>(T))</div>
|
|
1091
|
+
<div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>  {</div>
|
|
1092
|
+
<div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>  <span class="keyword">auto</span> svfst = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFStructType.html">SVFStructType</a>();</div>
|
|
1093
|
+
<div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>  <span class="keywordflow">if</span> (st->hasName())</div>
|
|
1094
|
+
<div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>  svfst->setName(st->getName().str());</div>
|
|
1095
|
+
<div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>  svftype = svfst;</div>
|
|
1096
|
+
<div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>  }</div>
|
|
1097
|
+
<div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <span class="keyword">auto</span> at = SVFUtil::dyn_cast<ArrayType>(T))</div>
|
|
1098
|
+
<div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>  {</div>
|
|
1099
|
+
<div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>  <span class="keyword">auto</span> svfat = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFArrayType.html">SVFArrayType</a>();</div>
|
|
1100
|
+
<div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>  svfat->setNumOfElement(at->getNumElements());</div>
|
|
1101
|
+
<div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>  svfat->setTypeOfElement(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(at->getElementType()));</div>
|
|
1102
|
+
<div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>  svftype = svfat;</div>
|
|
1103
|
+
<div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>  }</div>
|
|
1104
|
+
<div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>  <span class="keywordflow">else</span></div>
|
|
1105
|
+
<div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>  {</div>
|
|
1106
|
+
<div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="cJSON_8h.html#a503753140aa27b00f99a3501280b2746">buffer</a>;</div>
|
|
1107
|
+
<div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>  <span class="keyword">auto</span> ot = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFOtherType.html">SVFOtherType</a>(T->isSingleValueType());</div>
|
|
1108
|
+
<div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>  llvm::raw_string_ostream(<a class="code" href="cJSON_8h.html#a503753140aa27b00f99a3501280b2746">buffer</a>) << *T;</div>
|
|
1109
|
+
<div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>  ot->setRepr(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a72502f7f536418621485e90ab98c2016">std::move</a>(<a class="code" href="cJSON_8h.html#a503753140aa27b00f99a3501280b2746">buffer</a>));</div>
|
|
1110
|
+
<div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>  svftype = ot;</div>
|
|
1111
|
+
<div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>  }</div>
|
|
1112
|
+
<div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>  </div>
|
|
1113
|
+
<div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5552135a27684cbe4d2a5ed346f64644">symInfo</a>-><a class="code" href="classSVF_1_1SymbolTableInfo.html#a91083d9504ae5d220b28e0b3e461d4aa">addTypeInfo</a>(svftype);</div>
|
|
1114
|
+
<div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">LLVMType2SVFType</a>[T] = svftype;</div>
|
|
1115
|
+
<div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>  <span class="keywordflow">return</span> svftype;</div>
|
|
1116
|
+
<div class="line"><a name="l01274"></a><span class="lineno"> 1274</span> }</div>
|
|
1117
1117
|
</div><!-- fragment -->
|
|
1118
1118
|
</div>
|
|
1119
1119
|
</div>
|
|
@@ -1185,156 +1185,167 @@ Friends</h2></td></tr>
|
|
|
1185
1185
|
<p>App Func decl -> <a class="el" href="namespaceSVF.html" title="for isBitcode">SVF</a> extern Func def</p>
|
|
1186
1186
|
<p>Overwrite App Func def -> <a class="el" href="namespaceSVF.html" title="for isBitcode">SVF</a> extern Func def</p>
|
|
1187
1187
|
|
|
1188
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#
|
|
1189
|
-
<div class="fragment"><div class="line"><a name="
|
|
1190
|
-
<div class="line"><a name="
|
|
1191
|
-
<div class="line"><a name="
|
|
1192
|
-
<div class="line"><a name="
|
|
1193
|
-
<div class="line"><a name="
|
|
1194
|
-
<div class="line"><a name="
|
|
1195
|
-
<div class="line"><a name="
|
|
1196
|
-
<div class="line"><a name="
|
|
1197
|
-
<div class="line"><a name="
|
|
1198
|
-
<div class="line"><a name="
|
|
1199
|
-
<div class="line"><a name="
|
|
1200
|
-
<div class="line"><a name="
|
|
1201
|
-
<div class="line"><a name="
|
|
1202
|
-
<div class="line"><a name="
|
|
1203
|
-
<div class="line"><a name="
|
|
1204
|
-
<div class="line"><a name="
|
|
1205
|
-
<div class="line"><a name="
|
|
1206
|
-
<div class="line"><a name="
|
|
1207
|
-
<div class="line"><a name="
|
|
1208
|
-
<div class="line"><a name="
|
|
1209
|
-
<div class="line"><a name="
|
|
1210
|
-
<div class="line"><a name="
|
|
1211
|
-
<div class="line"><a name="
|
|
1212
|
-
<div class="line"><a name="
|
|
1213
|
-
<div class="line"><a name="
|
|
1214
|
-
<div class="line"><a name="
|
|
1215
|
-
<div class="line"><a name="
|
|
1216
|
-
<div class="line"><a name="
|
|
1217
|
-
<div class="line"><a name="
|
|
1218
|
-
<div class="line"><a name="
|
|
1219
|
-
<div class="line"><a name="
|
|
1220
|
-
<div class="line"><a name="
|
|
1221
|
-
<div class="line"><a name="
|
|
1222
|
-
<div class="line"><a name="
|
|
1223
|
-
<div class="line"><a name="
|
|
1224
|
-
<div class="line"><a name="
|
|
1225
|
-
<div class="line"><a name="
|
|
1226
|
-
<div class="line"><a name="
|
|
1227
|
-
<div class="line"><a name="
|
|
1228
|
-
<div class="line"><a name="
|
|
1229
|
-
<div class="line"><a name="
|
|
1230
|
-
<div class="line"><a name="
|
|
1231
|
-
<div class="line"><a name="
|
|
1232
|
-
<div class="line"><a name="
|
|
1233
|
-
<div class="line"><a name="
|
|
1234
|
-
<div class="line"><a name="
|
|
1235
|
-
<div class="line"><a name="
|
|
1236
|
-
<div class="line"><a name="
|
|
1237
|
-
<div class="line"><a name="
|
|
1238
|
-
<div class="line"><a name="
|
|
1239
|
-
<div class="line"><a name="
|
|
1240
|
-
<div class="line"><a name="
|
|
1241
|
-
<div class="line"><a name="
|
|
1242
|
-
<div class="line"><a name="
|
|
1243
|
-
<div class="line"><a name="
|
|
1244
|
-
<div class="line"><a name="
|
|
1245
|
-
<div class="line"><a name="
|
|
1246
|
-
<div class="line"><a name="
|
|
1247
|
-
<div class="line"><a name="
|
|
1248
|
-
<div class="line"><a name="
|
|
1249
|
-
<div class="line"><a name="
|
|
1250
|
-
<div class="line"><a name="
|
|
1251
|
-
<div class="line"><a name="
|
|
1252
|
-
<div class="line"><a name="
|
|
1253
|
-
<div class="line"><a name="
|
|
1254
|
-
<div class="line"><a name="
|
|
1255
|
-
<div class="line"><a name="
|
|
1256
|
-
<div class="line"><a name="
|
|
1257
|
-
<div class="line"><a name="
|
|
1258
|
-
<div class="line"><a name="
|
|
1259
|
-
<div class="line"><a name="
|
|
1260
|
-
<div class="line"><a name="
|
|
1261
|
-
<div class="line"><a name="
|
|
1262
|
-
<div class="line"><a name="
|
|
1263
|
-
<div class="line"><a name="
|
|
1264
|
-
<div class="line"><a name="
|
|
1265
|
-
<div class="line"><a name="
|
|
1266
|
-
<div class="line"><a name="
|
|
1267
|
-
<div class="line"><a name="
|
|
1268
|
-
<div class="line"><a name="
|
|
1269
|
-
<div class="line"><a name="
|
|
1270
|
-
<div class="line"><a name="
|
|
1271
|
-
<div class="line"><a name="
|
|
1272
|
-
<div class="line"><a name="
|
|
1273
|
-
<div class="line"><a name="
|
|
1274
|
-
<div class="line"><a name="
|
|
1275
|
-
<div class="line"><a name="
|
|
1276
|
-
<div class="line"><a name="
|
|
1277
|
-
<div class="line"><a name="
|
|
1278
|
-
<div class="line"><a name="
|
|
1279
|
-
<div class="line"><a name="
|
|
1280
|
-
<div class="line"><a name="
|
|
1281
|
-
<div class="line"><a name="
|
|
1282
|
-
<div class="line"><a name="
|
|
1283
|
-
<div class="line"><a name="
|
|
1284
|
-
<div class="line"><a name="
|
|
1285
|
-
<div class="line"><a name="
|
|
1286
|
-
<div class="line"><a name="
|
|
1287
|
-
<div class="line"><a name="
|
|
1288
|
-
<div class="line"><a name="
|
|
1289
|
-
<div class="line"><a name="
|
|
1290
|
-
<div class="line"><a name="
|
|
1291
|
-
<div class="line"><a name="
|
|
1292
|
-
<div class="line"><a name="
|
|
1293
|
-
<div class="line"><a name="
|
|
1294
|
-
<div class="line"><a name="
|
|
1295
|
-
<div class="line"><a name="
|
|
1296
|
-
<div class="line"><a name="
|
|
1297
|
-
<div class="line"><a name="
|
|
1298
|
-
<div class="line"><a name="
|
|
1299
|
-
<div class="line"><a name="
|
|
1300
|
-
<div class="line"><a name="
|
|
1301
|
-
<div class="line"><a name="
|
|
1302
|
-
<div class="line"><a name="
|
|
1303
|
-
<div class="line"><a name="
|
|
1304
|
-
<div class="line"><a name="
|
|
1305
|
-
<div class="line"><a name="
|
|
1306
|
-
<div class="line"><a name="
|
|
1307
|
-
<div class="line"><a name="
|
|
1308
|
-
<div class="line"><a name="
|
|
1309
|
-
<div class="line"><a name="
|
|
1310
|
-
<div class="line"><a name="
|
|
1311
|
-
<div class="line"><a name="
|
|
1312
|
-
<div class="line"><a name="
|
|
1313
|
-
<div class="line"><a name="
|
|
1314
|
-
<div class="line"><a name="
|
|
1315
|
-
<div class="line"><a name="
|
|
1316
|
-
<div class="line"><a name="
|
|
1317
|
-
<div class="line"><a name="
|
|
1318
|
-
<div class="line"><a name="
|
|
1319
|
-
<div class="line"><a name="
|
|
1320
|
-
<div class="line"><a name="
|
|
1321
|
-
<div class="line"><a name="
|
|
1322
|
-
<div class="line"><a name="
|
|
1323
|
-
<div class="line"><a name="
|
|
1324
|
-
<div class="line"><a name="
|
|
1325
|
-
<div class="line"><a name="
|
|
1326
|
-
<div class="line"><a name="
|
|
1327
|
-
<div class="line"><a name="
|
|
1328
|
-
<div class="line"><a name="
|
|
1329
|
-
<div class="line"><a name="
|
|
1330
|
-
<div class="line"><a name="
|
|
1331
|
-
<div class="line"><a name="
|
|
1332
|
-
<div class="line"><a name="
|
|
1333
|
-
<div class="line"><a name="
|
|
1334
|
-
<div class="line"><a name="
|
|
1335
|
-
<div class="line"><a name="
|
|
1336
|
-
<div class="line"><a name="
|
|
1337
|
-
<div class="line"><a name="
|
|
1188
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00795">795</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
|
|
1189
|
+
<div class="fragment"><div class="line"><a name="l00796"></a><span class="lineno"> 796</span> {</div>
|
|
1190
|
+
<div class="line"><a name="l00797"></a><span class="lineno"> 797</span>  <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<const Function*></a> funDecls, funDefs, extFuncs, overwriteExtFuncs;</div>
|
|
1191
|
+
<div class="line"><a name="l00798"></a><span class="lineno"> 798</span>  <a class="code" href="namespaceSVF.html#a4f21e91ff8eaea5207afe5c60dbd78d7">OrderedSet<string></a> declNames, defNames, intersectNames;</div>
|
|
1192
|
+
<div class="line"><a name="l00799"></a><span class="lineno"> 799</span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<string, const Function*></a> NameToFunDefMapTy;</div>
|
|
1193
|
+
<div class="line"><a name="l00800"></a><span class="lineno"> 800</span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<string, Set<const Function*></a>> NameToFunDeclsMapTy;</div>
|
|
1194
|
+
<div class="line"><a name="l00801"></a><span class="lineno"> 801</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* main_ext = <span class="keyword">nullptr</span>;</div>
|
|
1195
|
+
<div class="line"><a name="l00802"></a><span class="lineno"> 802</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* main_app = <span class="keyword">nullptr</span>;</div>
|
|
1196
|
+
<div class="line"><a name="l00803"></a><span class="lineno"> 803</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>& mod : <a class="code" href="classSVF_1_1LLVMModuleSet.html#acde6292e719c80f93d3d1c344ab442cd">modules</a>)</div>
|
|
1197
|
+
<div class="line"><a name="l00804"></a><span class="lineno"> 804</span>  {</div>
|
|
1198
|
+
<div class="line"><a name="l00805"></a><span class="lineno"> 805</span>  <span class="comment">// extapi.bc functions</span></div>
|
|
1199
|
+
<div class="line"><a name="l00806"></a><span class="lineno"> 806</span>  <span class="keywordflow">if</span> (mod.getName().str() == <a class="code" href="classSVF_1_1Options.html#a2ed1e6f7911ae5cfbf79213e4d07531e">Options::ExtAPIInput</a>())</div>
|
|
1200
|
+
<div class="line"><a name="l00807"></a><span class="lineno"> 807</span>  {</div>
|
|
1201
|
+
<div class="line"><a name="l00808"></a><span class="lineno"> 808</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>& fun : mod.functions())</div>
|
|
1202
|
+
<div class="line"><a name="l00809"></a><span class="lineno"> 809</span>  {</div>
|
|
1203
|
+
<div class="line"><a name="l00810"></a><span class="lineno"> 810</span>  extFuncs.insert(&fun);</div>
|
|
1204
|
+
<div class="line"><a name="l00811"></a><span class="lineno"> 811</span>  <span class="comment">// Find overwrite functions in extapi.bc</span></div>
|
|
1205
|
+
<div class="line"><a name="l00812"></a><span class="lineno"> 812</span>  std::vector<std::string> annotations = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a8cd4d6410017b9e5f47f2f88450b78d8">LLVMUtil::getFunAnnotations</a>(&fun);</div>
|
|
1206
|
+
<div class="line"><a name="l00813"></a><span class="lineno"> 813</span>  <span class="keyword">auto</span> it = std::find_if(annotations.begin(), annotations.end(), [&](<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a>& annotation)</div>
|
|
1207
|
+
<div class="line"><a name="l00814"></a><span class="lineno"> 814</span>  {</div>
|
|
1208
|
+
<div class="line"><a name="l00815"></a><span class="lineno"> 815</span>  return annotation.find(<span class="stringliteral">"OVERWRITE"</span>) != std::string::npos;</div>
|
|
1209
|
+
<div class="line"><a name="l00816"></a><span class="lineno"> 816</span>  });</div>
|
|
1210
|
+
<div class="line"><a name="l00817"></a><span class="lineno"> 817</span>  <span class="keywordflow">if</span> (it != annotations.end())</div>
|
|
1211
|
+
<div class="line"><a name="l00818"></a><span class="lineno"> 818</span>  {</div>
|
|
1212
|
+
<div class="line"><a name="l00819"></a><span class="lineno"> 819</span>  overwriteExtFuncs.insert(&fun);</div>
|
|
1213
|
+
<div class="line"><a name="l00820"></a><span class="lineno"> 820</span>  }</div>
|
|
1214
|
+
<div class="line"><a name="l00821"></a><span class="lineno"> 821</span>  <span class="keywordflow">if</span> (fun.getName().str() == <span class="stringliteral">"main"</span>)</div>
|
|
1215
|
+
<div class="line"><a name="l00822"></a><span class="lineno"> 822</span>  {</div>
|
|
1216
|
+
<div class="line"><a name="l00823"></a><span class="lineno"> 823</span>  main_ext = &fun;</div>
|
|
1217
|
+
<div class="line"><a name="l00824"></a><span class="lineno"> 824</span>  }</div>
|
|
1218
|
+
<div class="line"><a name="l00825"></a><span class="lineno"> 825</span>  }</div>
|
|
1219
|
+
<div class="line"><a name="l00826"></a><span class="lineno"> 826</span>  }</div>
|
|
1220
|
+
<div class="line"><a name="l00827"></a><span class="lineno"> 827</span>  <span class="keywordflow">else</span></div>
|
|
1221
|
+
<div class="line"><a name="l00828"></a><span class="lineno"> 828</span>  {</div>
|
|
1222
|
+
<div class="line"><a name="l00830"></a><span class="lineno"> 830</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>& fun : mod.functions())</div>
|
|
1223
|
+
<div class="line"><a name="l00831"></a><span class="lineno"> 831</span>  {</div>
|
|
1224
|
+
<div class="line"><a name="l00832"></a><span class="lineno"> 832</span>  <span class="keywordflow">if</span> (fun.isDeclaration())</div>
|
|
1225
|
+
<div class="line"><a name="l00833"></a><span class="lineno"> 833</span>  {</div>
|
|
1226
|
+
<div class="line"><a name="l00834"></a><span class="lineno"> 834</span>  funDecls.insert(&fun);</div>
|
|
1227
|
+
<div class="line"><a name="l00835"></a><span class="lineno"> 835</span>  declNames.insert(fun.getName().str());</div>
|
|
1228
|
+
<div class="line"><a name="l00836"></a><span class="lineno"> 836</span>  }</div>
|
|
1229
|
+
<div class="line"><a name="l00837"></a><span class="lineno"> 837</span>  <span class="keywordflow">else</span></div>
|
|
1230
|
+
<div class="line"><a name="l00838"></a><span class="lineno"> 838</span>  {</div>
|
|
1231
|
+
<div class="line"><a name="l00839"></a><span class="lineno"> 839</span>  funDefs.insert(&fun);</div>
|
|
1232
|
+
<div class="line"><a name="l00840"></a><span class="lineno"> 840</span>  defNames.insert(fun.getName().str());</div>
|
|
1233
|
+
<div class="line"><a name="l00841"></a><span class="lineno"> 841</span>  }</div>
|
|
1234
|
+
<div class="line"><a name="l00842"></a><span class="lineno"> 842</span>  <span class="keywordflow">if</span> (fun.getName().str() == <span class="stringliteral">"main"</span>)</div>
|
|
1235
|
+
<div class="line"><a name="l00843"></a><span class="lineno"> 843</span>  {</div>
|
|
1236
|
+
<div class="line"><a name="l00844"></a><span class="lineno"> 844</span>  main_app = &fun;</div>
|
|
1237
|
+
<div class="line"><a name="l00845"></a><span class="lineno"> 845</span>  }</div>
|
|
1238
|
+
<div class="line"><a name="l00846"></a><span class="lineno"> 846</span>  }</div>
|
|
1239
|
+
<div class="line"><a name="l00847"></a><span class="lineno"> 847</span>  }</div>
|
|
1240
|
+
<div class="line"><a name="l00848"></a><span class="lineno"> 848</span>  }</div>
|
|
1241
|
+
<div class="line"><a name="l00849"></a><span class="lineno"> 849</span>  <span class="comment">// Find the intersectNames</span></div>
|
|
1242
|
+
<div class="line"><a name="l00850"></a><span class="lineno"> 850</span>  std::set_intersection(</div>
|
|
1243
|
+
<div class="line"><a name="l00851"></a><span class="lineno"> 851</span>  declNames.begin(), declNames.end(), defNames.begin(), defNames.end(),</div>
|
|
1244
|
+
<div class="line"><a name="l00852"></a><span class="lineno"> 852</span>  std::inserter(intersectNames, intersectNames.end()));</div>
|
|
1245
|
+
<div class="line"><a name="l00853"></a><span class="lineno"> 853</span>  </div>
|
|
1246
|
+
<div class="line"><a name="l00855"></a><span class="lineno"> 855</span>  NameToFunDefMapTy nameToFunDefMap;</div>
|
|
1247
|
+
<div class="line"><a name="l00856"></a><span class="lineno"> 856</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fdef : funDefs)</div>
|
|
1248
|
+
<div class="line"><a name="l00857"></a><span class="lineno"> 857</span>  {</div>
|
|
1249
|
+
<div class="line"><a name="l00858"></a><span class="lineno"> 858</span>  <span class="keywordtype">string</span> funName = fdef->getName().str();</div>
|
|
1250
|
+
<div class="line"><a name="l00859"></a><span class="lineno"> 859</span>  <span class="keywordflow">if</span> (intersectNames.find(funName) != intersectNames.end())</div>
|
|
1251
|
+
<div class="line"><a name="l00860"></a><span class="lineno"> 860</span>  {</div>
|
|
1252
|
+
<div class="line"><a name="l00861"></a><span class="lineno"> 861</span>  nameToFunDefMap.emplace(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a72502f7f536418621485e90ab98c2016">std::move</a>(funName), fdef);</div>
|
|
1253
|
+
<div class="line"><a name="l00862"></a><span class="lineno"> 862</span>  }</div>
|
|
1254
|
+
<div class="line"><a name="l00863"></a><span class="lineno"> 863</span>  }</div>
|
|
1255
|
+
<div class="line"><a name="l00864"></a><span class="lineno"> 864</span>  </div>
|
|
1256
|
+
<div class="line"><a name="l00866"></a><span class="lineno"> 866</span>  NameToFunDeclsMapTy nameToFunDeclsMap;</div>
|
|
1257
|
+
<div class="line"><a name="l00867"></a><span class="lineno"> 867</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fdecl : funDecls)</div>
|
|
1258
|
+
<div class="line"><a name="l00868"></a><span class="lineno"> 868</span>  {</div>
|
|
1259
|
+
<div class="line"><a name="l00869"></a><span class="lineno"> 869</span>  <span class="keywordtype">string</span> funName = fdecl->getName().str();</div>
|
|
1260
|
+
<div class="line"><a name="l00870"></a><span class="lineno"> 870</span>  <span class="keywordflow">if</span> (intersectNames.find(funName) != intersectNames.end())</div>
|
|
1261
|
+
<div class="line"><a name="l00871"></a><span class="lineno"> 871</span>  {</div>
|
|
1262
|
+
<div class="line"><a name="l00872"></a><span class="lineno"> 872</span>  <span class="comment">// pair with key funName will be created automatically if it does</span></div>
|
|
1263
|
+
<div class="line"><a name="l00873"></a><span class="lineno"> 873</span>  <span class="comment">// not exist</span></div>
|
|
1264
|
+
<div class="line"><a name="l00874"></a><span class="lineno"> 874</span>  nameToFunDeclsMap[<a class="code" href="namespaceSVF_1_1SVFUtil.html#a72502f7f536418621485e90ab98c2016">std::move</a>(funName)].insert(fdecl);</div>
|
|
1265
|
+
<div class="line"><a name="l00875"></a><span class="lineno"> 875</span>  }</div>
|
|
1266
|
+
<div class="line"><a name="l00876"></a><span class="lineno"> 876</span>  }</div>
|
|
1267
|
+
<div class="line"><a name="l00877"></a><span class="lineno"> 877</span>  </div>
|
|
1268
|
+
<div class="line"><a name="l00879"></a><span class="lineno"> 879</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fdecl : funDecls)</div>
|
|
1269
|
+
<div class="line"><a name="l00880"></a><span class="lineno"> 880</span>  {</div>
|
|
1270
|
+
<div class="line"><a name="l00881"></a><span class="lineno"> 881</span>  <span class="keywordtype">string</span> funName = fdecl->getName().str();</div>
|
|
1271
|
+
<div class="line"><a name="l00882"></a><span class="lineno"> 882</span>  NameToFunDefMapTy::iterator mit;</div>
|
|
1272
|
+
<div class="line"><a name="l00883"></a><span class="lineno"> 883</span>  <span class="keywordflow">if</span> (intersectNames.find(funName) != intersectNames.end() &&</div>
|
|
1273
|
+
<div class="line"><a name="l00884"></a><span class="lineno"> 884</span>  (mit = nameToFunDefMap.find(funName)) != nameToFunDefMap.end())</div>
|
|
1274
|
+
<div class="line"><a name="l00885"></a><span class="lineno"> 885</span>  {</div>
|
|
1275
|
+
<div class="line"><a name="l00886"></a><span class="lineno"> 886</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#aee80b29e5246e3eaa0e30e165346101f">FunDeclToDefMap</a>[fdecl] = mit->second;</div>
|
|
1276
|
+
<div class="line"><a name="l00887"></a><span class="lineno"> 887</span>  }</div>
|
|
1277
|
+
<div class="line"><a name="l00888"></a><span class="lineno"> 888</span>  }</div>
|
|
1278
|
+
<div class="line"><a name="l00889"></a><span class="lineno"> 889</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#aee80b29e5246e3eaa0e30e165346101f">FunDeclToDefMap</a>[main_ext] = main_app;</div>
|
|
1279
|
+
<div class="line"><a name="l00890"></a><span class="lineno"> 890</span>  </div>
|
|
1280
|
+
<div class="line"><a name="l00892"></a><span class="lineno"> 892</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fdef : funDefs)</div>
|
|
1281
|
+
<div class="line"><a name="l00893"></a><span class="lineno"> 893</span>  {</div>
|
|
1282
|
+
<div class="line"><a name="l00894"></a><span class="lineno"> 894</span>  <span class="keywordtype">string</span> funName = fdef->getName().str();</div>
|
|
1283
|
+
<div class="line"><a name="l00895"></a><span class="lineno"> 895</span>  <span class="keywordflow">if</span> (intersectNames.find(funName) == intersectNames.end())</div>
|
|
1284
|
+
<div class="line"><a name="l00896"></a><span class="lineno"> 896</span>  <span class="keywordflow">continue</span>;</div>
|
|
1285
|
+
<div class="line"><a name="l00897"></a><span class="lineno"> 897</span>  NameToFunDeclsMapTy::iterator mit = nameToFunDeclsMap.find(funName);</div>
|
|
1286
|
+
<div class="line"><a name="l00898"></a><span class="lineno"> 898</span>  <span class="keywordflow">if</span> (mit == nameToFunDeclsMap.end())</div>
|
|
1287
|
+
<div class="line"><a name="l00899"></a><span class="lineno"> 899</span>  <span class="keywordflow">continue</span>;</div>
|
|
1288
|
+
<div class="line"><a name="l00900"></a><span class="lineno"> 900</span>  </div>
|
|
1289
|
+
<div class="line"><a name="l00901"></a><span class="lineno"> 901</span>  std::vector<const Function*>& decls = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a377cefaad4b688ab6edf94ba4abe00ee">FunDefToDeclsMap</a>[fdef];</div>
|
|
1290
|
+
<div class="line"><a name="l00902"></a><span class="lineno"> 902</span>  <span class="keyword">const</span> <span class="keyword">auto</span>& declsSet = mit->second;</div>
|
|
1291
|
+
<div class="line"><a name="l00903"></a><span class="lineno"> 903</span>  <span class="comment">// Reserve space for decls to avoid more than 1 reallocation</span></div>
|
|
1292
|
+
<div class="line"><a name="l00904"></a><span class="lineno"> 904</span>  decls.reserve(decls.size() + declsSet.size());</div>
|
|
1293
|
+
<div class="line"><a name="l00905"></a><span class="lineno"> 905</span>  </div>
|
|
1294
|
+
<div class="line"><a name="l00906"></a><span class="lineno"> 906</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* decl : declsSet)</div>
|
|
1295
|
+
<div class="line"><a name="l00907"></a><span class="lineno"> 907</span>  {</div>
|
|
1296
|
+
<div class="line"><a name="l00908"></a><span class="lineno"> 908</span>  decls.push_back(decl);</div>
|
|
1297
|
+
<div class="line"><a name="l00909"></a><span class="lineno"> 909</span>  }</div>
|
|
1298
|
+
<div class="line"><a name="l00910"></a><span class="lineno"> 910</span>  }</div>
|
|
1299
|
+
<div class="line"><a name="l00911"></a><span class="lineno"> 911</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a377cefaad4b688ab6edf94ba4abe00ee">FunDefToDeclsMap</a>[main_app] = {main_ext};</div>
|
|
1300
|
+
<div class="line"><a name="l00912"></a><span class="lineno"> 912</span>  </div>
|
|
1301
|
+
<div class="line"><a name="l00914"></a><span class="lineno"> 914</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fdecl : funDecls)</div>
|
|
1302
|
+
<div class="line"><a name="l00915"></a><span class="lineno"> 915</span>  {</div>
|
|
1303
|
+
<div class="line"><a name="l00916"></a><span class="lineno"> 916</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* extfun : extFuncs)</div>
|
|
1304
|
+
<div class="line"><a name="l00917"></a><span class="lineno"> 917</span>  {</div>
|
|
1305
|
+
<div class="line"><a name="l00918"></a><span class="lineno"> 918</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> declName = fdecl->getName().str();</div>
|
|
1306
|
+
<div class="line"><a name="l00919"></a><span class="lineno"> 919</span>  <span class="comment">// Since C function names cannot include '.', change the function name from llvm.memcpy.p0i8.p0i8.i64 to llvm_memcpy_p0i8_p0i8_i64."</span></div>
|
|
1307
|
+
<div class="line"><a name="l00920"></a><span class="lineno"> 920</span>  std::replace(declName.begin(), declName.end(), <span class="charliteral">'.'</span>, <span class="charliteral">'_'</span>);</div>
|
|
1308
|
+
<div class="line"><a name="l00921"></a><span class="lineno"> 921</span>  <span class="keywordflow">if</span> (extfun->getName().str().compare(declName) == 0)</div>
|
|
1309
|
+
<div class="line"><a name="l00922"></a><span class="lineno"> 922</span>  {</div>
|
|
1310
|
+
<div class="line"><a name="l00923"></a><span class="lineno"> 923</span>  <span class="comment">// AppDecl -> ExtDef in Table 1</span></div>
|
|
1311
|
+
<div class="line"><a name="l00924"></a><span class="lineno"> 924</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#aee80b29e5246e3eaa0e30e165346101f">FunDeclToDefMap</a>[fdecl] = extfun;</div>
|
|
1312
|
+
<div class="line"><a name="l00925"></a><span class="lineno"> 925</span>  <span class="comment">// ExtDef -> AppDecl in Table 1</span></div>
|
|
1313
|
+
<div class="line"><a name="l00926"></a><span class="lineno"> 926</span>  std::vector<const Function*>& decls = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a377cefaad4b688ab6edf94ba4abe00ee">FunDefToDeclsMap</a>[extfun];</div>
|
|
1314
|
+
<div class="line"><a name="l00927"></a><span class="lineno"> 927</span>  decls.push_back(fdecl);</div>
|
|
1315
|
+
<div class="line"><a name="l00928"></a><span class="lineno"> 928</span>  <span class="comment">// Keep all called functions in extfun</span></div>
|
|
1316
|
+
<div class="line"><a name="l00929"></a><span class="lineno"> 929</span>  <span class="comment">// ExtDecl -> ExtDecl in Table 1</span></div>
|
|
1317
|
+
<div class="line"><a name="l00930"></a><span class="lineno"> 930</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab932917041e1b1d8b461bfef464330fd">ExtFuncsVec</a> = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a47d2af43ff12d9e1014fa19256619466">LLVMUtil::getCalledFunctions</a>(extfun);</div>
|
|
1318
|
+
<div class="line"><a name="l00931"></a><span class="lineno"> 931</span>  }</div>
|
|
1319
|
+
<div class="line"><a name="l00932"></a><span class="lineno"> 932</span>  }</div>
|
|
1320
|
+
<div class="line"><a name="l00933"></a><span class="lineno"> 933</span>  }</div>
|
|
1321
|
+
<div class="line"><a name="l00934"></a><span class="lineno"> 934</span>  </div>
|
|
1322
|
+
<div class="line"><a name="l00937"></a><span class="lineno"> 937</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* appfunc : funDefs)</div>
|
|
1323
|
+
<div class="line"><a name="l00938"></a><span class="lineno"> 938</span>  {</div>
|
|
1324
|
+
<div class="line"><a name="l00939"></a><span class="lineno"> 939</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* owfunc : overwriteExtFuncs)</div>
|
|
1325
|
+
<div class="line"><a name="l00940"></a><span class="lineno"> 940</span>  {</div>
|
|
1326
|
+
<div class="line"><a name="l00941"></a><span class="lineno"> 941</span>  <span class="keywordflow">if</span> (appfunc->getName().str().compare(owfunc->getName().str()) == 0)</div>
|
|
1327
|
+
<div class="line"><a name="l00942"></a><span class="lineno"> 942</span>  {</div>
|
|
1328
|
+
<div class="line"><a name="l00943"></a><span class="lineno"> 943</span>  <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun = <span class="keyword">const_cast<</span><a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>*<span class="keyword">></span>(appfunc);</div>
|
|
1329
|
+
<div class="line"><a name="l00944"></a><span class="lineno"> 944</span>  <a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>* mod = fun->getParent();</div>
|
|
1330
|
+
<div class="line"><a name="l00945"></a><span class="lineno"> 945</span>  <a class="code" href="namespaceSVF.html#a6ec0236303089a01fd9da36a8bb84e0a">FunctionType</a>* funType = fun->getFunctionType();</div>
|
|
1331
|
+
<div class="line"><a name="l00946"></a><span class="lineno"> 946</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> funName = fun->getName().str();</div>
|
|
1332
|
+
<div class="line"><a name="l00947"></a><span class="lineno"> 947</span>  <span class="comment">// Replace app function definition with declaration</span></div>
|
|
1333
|
+
<div class="line"><a name="l00948"></a><span class="lineno"> 948</span>  <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* declaration = Function::Create(funType, GlobalValue::ExternalLinkage, funName, mod);</div>
|
|
1334
|
+
<div class="line"><a name="l00949"></a><span class="lineno"> 949</span>  fun->replaceAllUsesWith(declaration);</div>
|
|
1335
|
+
<div class="line"><a name="l00950"></a><span class="lineno"> 950</span>  fun->eraseFromParent();</div>
|
|
1336
|
+
<div class="line"><a name="l00951"></a><span class="lineno"> 951</span>  declaration->setName(funName);</div>
|
|
1337
|
+
<div class="line"><a name="l00952"></a><span class="lineno"> 952</span>  <span class="comment">// AppDef -> ExtDef in Table 1, AppDef has been changed to AppDecl</span></div>
|
|
1338
|
+
<div class="line"><a name="l00953"></a><span class="lineno"> 953</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#aee80b29e5246e3eaa0e30e165346101f">FunDeclToDefMap</a>[declaration] = owfunc;</div>
|
|
1339
|
+
<div class="line"><a name="l00954"></a><span class="lineno"> 954</span>  <span class="comment">// ExtDef -> AppDef in Table 1</span></div>
|
|
1340
|
+
<div class="line"><a name="l00955"></a><span class="lineno"> 955</span>  std::vector<const Function*>& decls = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a377cefaad4b688ab6edf94ba4abe00ee">FunDefToDeclsMap</a>[owfunc];</div>
|
|
1341
|
+
<div class="line"><a name="l00956"></a><span class="lineno"> 956</span>  decls.push_back(declaration);</div>
|
|
1342
|
+
<div class="line"><a name="l00957"></a><span class="lineno"> 957</span>  <span class="comment">// Keep all called functions in owfunc</span></div>
|
|
1343
|
+
<div class="line"><a name="l00958"></a><span class="lineno"> 958</span>  <span class="comment">// ExtDecl -> ExtDecl in Table 1</span></div>
|
|
1344
|
+
<div class="line"><a name="l00959"></a><span class="lineno"> 959</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab932917041e1b1d8b461bfef464330fd">ExtFuncsVec</a> = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a47d2af43ff12d9e1014fa19256619466">LLVMUtil::getCalledFunctions</a>(owfunc);</div>
|
|
1345
|
+
<div class="line"><a name="l00960"></a><span class="lineno"> 960</span>  }</div>
|
|
1346
|
+
<div class="line"><a name="l00961"></a><span class="lineno"> 961</span>  }</div>
|
|
1347
|
+
<div class="line"><a name="l00962"></a><span class="lineno"> 962</span>  }</div>
|
|
1348
|
+
<div class="line"><a name="l00963"></a><span class="lineno"> 963</span> }</div>
|
|
1338
1349
|
</div><!-- fragment -->
|
|
1339
1350
|
</div>
|
|
1340
1351
|
</div>
|
|
@@ -1361,47 +1372,47 @@ Friends</h2></td></tr>
|
|
|
1361
1372
|
</table>
|
|
1362
1373
|
</div><div class="memdoc">
|
|
1363
1374
|
|
|
1364
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#
|
|
1365
|
-
<div class="fragment"><div class="line"><a name="
|
|
1366
|
-
<div class="line"><a name="
|
|
1367
|
-
<div class="line"><a name="
|
|
1368
|
-
<div class="line"><a name="
|
|
1369
|
-
<div class="line"><a name="
|
|
1370
|
-
<div class="line"><a name="
|
|
1371
|
-
<div class="line"><a name="
|
|
1372
|
-
<div class="line"><a name="
|
|
1373
|
-
<div class="line"><a name="
|
|
1374
|
-
<div class="line"><a name="
|
|
1375
|
-
<div class="line"><a name="
|
|
1376
|
-
<div class="line"><a name="
|
|
1377
|
-
<div class="line"><a name="
|
|
1378
|
-
<div class="line"><a name="
|
|
1379
|
-
<div class="line"><a name="
|
|
1380
|
-
<div class="line"><a name="
|
|
1381
|
-
<div class="line"><a name="
|
|
1382
|
-
<div class="line"><a name="
|
|
1383
|
-
<div class="line"><a name="
|
|
1384
|
-
<div class="line"><a name="
|
|
1385
|
-
<div class="line"><a name="
|
|
1386
|
-
<div class="line"><a name="
|
|
1387
|
-
<div class="line"><a name="
|
|
1388
|
-
<div class="line"><a name="
|
|
1389
|
-
<div class="line"><a name="
|
|
1390
|
-
<div class="line"><a name="
|
|
1391
|
-
<div class="line"><a name="
|
|
1392
|
-
<div class="line"><a name="
|
|
1393
|
-
<div class="line"><a name="
|
|
1394
|
-
<div class="line"><a name="
|
|
1395
|
-
<div class="line"><a name="
|
|
1396
|
-
<div class="line"><a name="
|
|
1397
|
-
<div class="line"><a name="
|
|
1398
|
-
<div class="line"><a name="
|
|
1399
|
-
<div class="line"><a name="
|
|
1400
|
-
<div class="line"><a name="
|
|
1401
|
-
<div class="line"><a name="
|
|
1402
|
-
<div class="line"><a name="
|
|
1403
|
-
<div class="line"><a name="
|
|
1404
|
-
<div class="line"><a name="
|
|
1375
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00965">965</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
|
|
1376
|
+
<div class="fragment"><div class="line"><a name="l00966"></a><span class="lineno"> 966</span> {</div>
|
|
1377
|
+
<div class="line"><a name="l00967"></a><span class="lineno"> 967</span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<string, Set<GlobalVariable*></a>> NameToGlobalsMapTy;</div>
|
|
1378
|
+
<div class="line"><a name="l00968"></a><span class="lineno"> 968</span>  NameToGlobalsMapTy nameToGlobalsMap;</div>
|
|
1379
|
+
<div class="line"><a name="l00969"></a><span class="lineno"> 969</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a> &mod : <a class="code" href="classSVF_1_1LLVMModuleSet.html#acde6292e719c80f93d3d1c344ab442cd">modules</a>)</div>
|
|
1380
|
+
<div class="line"><a name="l00970"></a><span class="lineno"> 970</span>  {</div>
|
|
1381
|
+
<div class="line"><a name="l00971"></a><span class="lineno"> 971</span>  <span class="comment">// Collect ctor and dtor functions</span></div>
|
|
1382
|
+
<div class="line"><a name="l00972"></a><span class="lineno"> 972</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>& global : mod.globals())</div>
|
|
1383
|
+
<div class="line"><a name="l00973"></a><span class="lineno"> 973</span>  {</div>
|
|
1384
|
+
<div class="line"><a name="l00974"></a><span class="lineno"> 974</span>  <span class="keywordflow">if</span> (global.hasPrivateLinkage())</div>
|
|
1385
|
+
<div class="line"><a name="l00975"></a><span class="lineno"> 975</span>  <span class="keywordflow">continue</span>;</div>
|
|
1386
|
+
<div class="line"><a name="l00976"></a><span class="lineno"> 976</span>  <span class="keywordtype">string</span> <a class="code" href="cJSON_8h.html#a25d22ecc7e656d2c59332072684e8766">name</a> = global.getName().str();</div>
|
|
1387
|
+
<div class="line"><a name="l00977"></a><span class="lineno"> 977</span>  <span class="keywordflow">if</span> (<a class="code" href="cJSON_8h.html#a25d22ecc7e656d2c59332072684e8766">name</a>.empty())</div>
|
|
1388
|
+
<div class="line"><a name="l00978"></a><span class="lineno"> 978</span>  <span class="keywordflow">continue</span>;</div>
|
|
1389
|
+
<div class="line"><a name="l00979"></a><span class="lineno"> 979</span>  nameToGlobalsMap[<a class="code" href="namespaceSVF_1_1SVFUtil.html#a72502f7f536418621485e90ab98c2016">std::move</a>(<a class="code" href="cJSON_8h.html#a25d22ecc7e656d2c59332072684e8766">name</a>)].insert(&global);</div>
|
|
1390
|
+
<div class="line"><a name="l00980"></a><span class="lineno"> 980</span>  }</div>
|
|
1391
|
+
<div class="line"><a name="l00981"></a><span class="lineno"> 981</span>  }</div>
|
|
1392
|
+
<div class="line"><a name="l00982"></a><span class="lineno"> 982</span>  </div>
|
|
1393
|
+
<div class="line"><a name="l00983"></a><span class="lineno"> 983</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>& pair : nameToGlobalsMap)</div>
|
|
1394
|
+
<div class="line"><a name="l00984"></a><span class="lineno"> 984</span>  {</div>
|
|
1395
|
+
<div class="line"><a name="l00985"></a><span class="lineno"> 985</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<GlobalVariable*></a> &globals = pair.second;</div>
|
|
1396
|
+
<div class="line"><a name="l00986"></a><span class="lineno"> 986</span>  </div>
|
|
1397
|
+
<div class="line"><a name="l00987"></a><span class="lineno"> 987</span>  <span class="keyword">const</span> <span class="keyword">auto</span> repIt =</div>
|
|
1398
|
+
<div class="line"><a name="l00988"></a><span class="lineno"> 988</span>  std::find_if(globals.begin(), globals.end(),</div>
|
|
1399
|
+
<div class="line"><a name="l00989"></a><span class="lineno"> 989</span>  [](<a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* g)</div>
|
|
1400
|
+
<div class="line"><a name="l00990"></a><span class="lineno"> 990</span>  {</div>
|
|
1401
|
+
<div class="line"><a name="l00991"></a><span class="lineno"> 991</span>  return g->hasInitializer();</div>
|
|
1402
|
+
<div class="line"><a name="l00992"></a><span class="lineno"> 992</span>  });</div>
|
|
1403
|
+
<div class="line"><a name="l00993"></a><span class="lineno"> 993</span>  <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* rep =</div>
|
|
1404
|
+
<div class="line"><a name="l00994"></a><span class="lineno"> 994</span>  repIt != globals.end()</div>
|
|
1405
|
+
<div class="line"><a name="l00995"></a><span class="lineno"> 995</span>  ? *repIt</div>
|
|
1406
|
+
<div class="line"><a name="l00996"></a><span class="lineno"> 996</span>  <span class="comment">// When there is no initializer, just pick the first one.</span></div>
|
|
1407
|
+
<div class="line"><a name="l00997"></a><span class="lineno"> 997</span>  : (assert(!globals.empty() && <span class="stringliteral">"Empty global set"</span>),</div>
|
|
1408
|
+
<div class="line"><a name="l00998"></a><span class="lineno"> 998</span>  *globals.begin());</div>
|
|
1409
|
+
<div class="line"><a name="l00999"></a><span class="lineno"> 999</span>  </div>
|
|
1410
|
+
<div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* cur : globals)</div>
|
|
1411
|
+
<div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>  {</div>
|
|
1412
|
+
<div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#ae2a1fa0b908cf372c50af90e62c4bf2b">GlobalDefToRepMap</a>[cur] = rep;</div>
|
|
1413
|
+
<div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>  }</div>
|
|
1414
|
+
<div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>  }</div>
|
|
1415
|
+
<div class="line"><a name="l01005"></a><span class="lineno"> 1005</span> }</div>
|
|
1405
1416
|
</div><!-- fragment -->
|
|
1406
1417
|
</div>
|
|
1407
1418
|
</div>
|
|
@@ -1569,59 +1580,59 @@ Friends</h2></td></tr>
|
|
|
1569
1580
|
<p>Array's flatten field infor is the same as its element's flatten infor.</p>
|
|
1570
1581
|
<p>Flatten arrays, map each array element index <code>i</code> to flattened index <code>(i * nfE * totalElemNum)/outArrayElemNum</code> nfE>1 if the array element is a struct with more than one field.</p>
|
|
1571
1582
|
|
|
1572
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#
|
|
1573
|
-
<div class="fragment"><div class="line"><a name="
|
|
1574
|
-
<div class="line"><a name="
|
|
1575
|
-
<div class="line"><a name="
|
|
1576
|
-
<div class="line"><a name="
|
|
1577
|
-
<div class="line"><a name="
|
|
1578
|
-
<div class="line"><a name="
|
|
1579
|
-
<div class="line"><a name="
|
|
1580
|
-
<div class="line"><a name="
|
|
1581
|
-
<div class="line"><a name="
|
|
1582
|
-
<div class="line"><a name="
|
|
1583
|
-
<div class="line"><a name="
|
|
1584
|
-
<div class="line"><a name="
|
|
1585
|
-
<div class="line"><a name="
|
|
1586
|
-
<div class="line"><a name="
|
|
1587
|
-
<div class="line"><a name="
|
|
1588
|
-
<div class="line"><a name="
|
|
1589
|
-
<div class="line"><a name="
|
|
1590
|
-
<div class="line"><a name="
|
|
1591
|
-
<div class="line"><a name="
|
|
1592
|
-
<div class="line"><a name="
|
|
1593
|
-
<div class="line"><a name="
|
|
1594
|
-
<div class="line"><a name="
|
|
1595
|
-
<div class="line"><a name="
|
|
1596
|
-
<div class="line"><a name="
|
|
1597
|
-
<div class="line"><a name="
|
|
1598
|
-
<div class="line"><a name="
|
|
1599
|
-
<div class="line"><a name="
|
|
1600
|
-
<div class="line"><a name="
|
|
1601
|
-
<div class="line"><a name="
|
|
1602
|
-
<div class="line"><a name="
|
|
1603
|
-
<div class="line"><a name="
|
|
1604
|
-
<div class="line"><a name="
|
|
1605
|
-
<div class="line"><a name="
|
|
1606
|
-
<div class="line"><a name="
|
|
1607
|
-
<div class="line"><a name="
|
|
1608
|
-
<div class="line"><a name="
|
|
1609
|
-
<div class="line"><a name="
|
|
1610
|
-
<div class="line"><a name="
|
|
1611
|
-
<div class="line"><a name="
|
|
1612
|
-
<div class="line"><a name="
|
|
1613
|
-
<div class="line"><a name="
|
|
1614
|
-
<div class="line"><a name="
|
|
1615
|
-
<div class="line"><a name="
|
|
1616
|
-
<div class="line"><a name="
|
|
1617
|
-
<div class="line"><a name="
|
|
1618
|
-
<div class="line"><a name="
|
|
1619
|
-
<div class="line"><a name="
|
|
1620
|
-
<div class="line"><a name="
|
|
1621
|
-
<div class="line"><a name="
|
|
1622
|
-
<div class="line"><a name="
|
|
1623
|
-
<div class="line"><a name="
|
|
1624
|
-
<div class="line"><a name="
|
|
1583
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01279">1279</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
|
|
1584
|
+
<div class="fragment"><div class="line"><a name="l01280"></a><span class="lineno"> 1280</span> {</div>
|
|
1585
|
+
<div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>  <a class="code" href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">u64_t</a> totalElemNum = ty->getNumElements();</div>
|
|
1586
|
+
<div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* elemTy = ty->getElementType();</div>
|
|
1587
|
+
<div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>  <span class="keywordflow">while</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a146d286041987860388da3d8bc85cee3">ArrayType</a>* aty = SVFUtil::dyn_cast<ArrayType>(elemTy))</div>
|
|
1588
|
+
<div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>  {</div>
|
|
1589
|
+
<div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>  totalElemNum *= aty->getNumElements();</div>
|
|
1590
|
+
<div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>  elemTy = aty->getElementType();</div>
|
|
1591
|
+
<div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>  }</div>
|
|
1592
|
+
<div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>  </div>
|
|
1593
|
+
<div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>  <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* stInfo = <span class="keyword">new</span> <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>(totalElemNum);</div>
|
|
1594
|
+
<div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* elemSvfType = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(elemTy);</div>
|
|
1595
|
+
<div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>  </div>
|
|
1596
|
+
<div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>  <span class="keywordflow">if</span> (totalElemNum == 0)</div>
|
|
1597
|
+
<div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>  {</div>
|
|
1598
|
+
<div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>  stInfo-><a class="code" href="classSVF_1_1StInfo.html#aae0736a5e99b11571af52e28500a6f9c">addFldWithType</a>(0, elemSvfType, 0);</div>
|
|
1599
|
+
<div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>  stInfo-><a class="code" href="classSVF_1_1StInfo.html#a1a07c2b1415c29d7d70791c6dfe602a3">setNumOfFieldsAndElems</a>(1, 1);</div>
|
|
1600
|
+
<div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>  stInfo-><a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>().push_back(elemSvfType);</div>
|
|
1601
|
+
<div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>  stInfo-><a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().push_back(elemSvfType);</div>
|
|
1602
|
+
<div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>  <span class="keywordflow">return</span> stInfo;</div>
|
|
1603
|
+
<div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>  }</div>
|
|
1604
|
+
<div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>  </div>
|
|
1605
|
+
<div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>  <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* elemStInfo = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a1f6cc76c996a0577b20b8cedd83fff92">collectTypeInfo</a>(elemTy);</div>
|
|
1606
|
+
<div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> nfF = elemStInfo-><a class="code" href="classSVF_1_1StInfo.html#ae5fad367673315da57a604e64b5889f0">getNumOfFlattenFields</a>();</div>
|
|
1607
|
+
<div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> nfE = elemStInfo-><a class="code" href="classSVF_1_1StInfo.html#a518c82138fcadc6634980566c1c0f762">getNumOfFlattenElements</a>();</div>
|
|
1608
|
+
<div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> j = 0; j < nfF; j++)</div>
|
|
1609
|
+
<div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>  {</div>
|
|
1610
|
+
<div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* fieldTy = elemStInfo-><a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>()[j];</div>
|
|
1611
|
+
<div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>  stInfo-><a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>().push_back(fieldTy);</div>
|
|
1612
|
+
<div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>  }</div>
|
|
1613
|
+
<div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>  </div>
|
|
1614
|
+
<div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> outArrayElemNum = ty->getNumElements();</div>
|
|
1615
|
+
<div class="line"><a name="l01316"></a><span class="lineno"> 1316</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i < outArrayElemNum; ++i)</div>
|
|
1616
|
+
<div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>  {</div>
|
|
1617
|
+
<div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>  <span class="keyword">auto</span> idx = (i * nfE * totalElemNum) / outArrayElemNum;</div>
|
|
1618
|
+
<div class="line"><a name="l01319"></a><span class="lineno"> 1319</span>  stInfo-><a class="code" href="classSVF_1_1StInfo.html#aae0736a5e99b11571af52e28500a6f9c">addFldWithType</a>(0, elemSvfType, idx);</div>
|
|
1619
|
+
<div class="line"><a name="l01320"></a><span class="lineno"> 1320</span>  }</div>
|
|
1620
|
+
<div class="line"><a name="l01321"></a><span class="lineno"> 1321</span>  </div>
|
|
1621
|
+
<div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i < totalElemNum; ++i)</div>
|
|
1622
|
+
<div class="line"><a name="l01323"></a><span class="lineno"> 1323</span>  {</div>
|
|
1623
|
+
<div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> j = 0; j < nfE; ++j)</div>
|
|
1624
|
+
<div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>  {</div>
|
|
1625
|
+
<div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* et = elemStInfo-><a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>()[j];</div>
|
|
1626
|
+
<div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>  stInfo-><a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().push_back(et);</div>
|
|
1627
|
+
<div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>  }</div>
|
|
1628
|
+
<div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>  }</div>
|
|
1629
|
+
<div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>  </div>
|
|
1630
|
+
<div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>  assert(stInfo-><a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().size() == nfE * totalElemNum &&</div>
|
|
1631
|
+
<div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>  <span class="stringliteral">"typeForArray size incorrect!!!"</span>);</div>
|
|
1632
|
+
<div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>  stInfo-><a class="code" href="classSVF_1_1StInfo.html#a1a07c2b1415c29d7d70791c6dfe602a3">setNumOfFieldsAndElems</a>(nfF, nfE * totalElemNum);</div>
|
|
1633
|
+
<div class="line"><a name="l01334"></a><span class="lineno"> 1334</span>  </div>
|
|
1634
|
+
<div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>  <span class="keywordflow">return</span> stInfo;</div>
|
|
1635
|
+
<div class="line"><a name="l01336"></a><span class="lineno"> 1336</span> }</div>
|
|
1625
1636
|
</div><!-- fragment -->
|
|
1626
1637
|
</div>
|
|
1627
1638
|
</div>
|
|
@@ -1653,18 +1664,18 @@ Friends</h2></td></tr>
|
|
|
1653
1664
|
<p>Collect simple type (non-aggregate) info </p>
|
|
1654
1665
|
<p>Only one field</p>
|
|
1655
1666
|
|
|
1656
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#
|
|
1657
|
-
<div class="fragment"><div class="line"><a name="
|
|
1658
|
-
<div class="line"><a name="
|
|
1659
|
-
<div class="line"><a name="
|
|
1660
|
-
<div class="line"><a name="
|
|
1661
|
-
<div class="line"><a name="
|
|
1662
|
-
<div class="line"><a name="
|
|
1663
|
-
<div class="line"><a name="
|
|
1664
|
-
<div class="line"><a name="
|
|
1665
|
-
<div class="line"><a name="
|
|
1666
|
-
<div class="line"><a name="
|
|
1667
|
-
<div class="line"><a name="
|
|
1667
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01399">1399</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
|
|
1668
|
+
<div class="fragment"><div class="line"><a name="l01400"></a><span class="lineno"> 1400</span> {</div>
|
|
1669
|
+
<div class="line"><a name="l01402"></a><span class="lineno"> 1402</span>  <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* stInfo = <span class="keyword">new</span> <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>(1);</div>
|
|
1670
|
+
<div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>  <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* svfType = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(ty);</div>
|
|
1671
|
+
<div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>  stInfo-><a class="code" href="classSVF_1_1StInfo.html#aae0736a5e99b11571af52e28500a6f9c">addFldWithType</a>(0, svfType, 0);</div>
|
|
1672
|
+
<div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>  </div>
|
|
1673
|
+
<div class="line"><a name="l01406"></a><span class="lineno"> 1406</span>  stInfo-><a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>().push_back(svfType);</div>
|
|
1674
|
+
<div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>  stInfo-><a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().push_back(svfType);</div>
|
|
1675
|
+
<div class="line"><a name="l01408"></a><span class="lineno"> 1408</span>  stInfo-><a class="code" href="classSVF_1_1StInfo.html#a1a07c2b1415c29d7d70791c6dfe602a3">setNumOfFieldsAndElems</a>(1,1);</div>
|
|
1676
|
+
<div class="line"><a name="l01409"></a><span class="lineno"> 1409</span>  </div>
|
|
1677
|
+
<div class="line"><a name="l01410"></a><span class="lineno"> 1410</span>  <span class="keywordflow">return</span> stInfo;</div>
|
|
1678
|
+
<div class="line"><a name="l01411"></a><span class="lineno"> 1411</span> }</div>
|
|
1668
1679
|
</div><!-- fragment -->
|
|
1669
1680
|
</div>
|
|
1670
1681
|
</div>
|
|
@@ -1706,56 +1717,56 @@ Friends</h2></td></tr>
|
|
|
1706
1717
|
<p>Fill in struct_info for T. Given a Struct type, we recursively extend and record its fields and types. </p>
|
|
1707
1718
|
<p>The struct info should not be processed before</p>
|
|
1708
1719
|
|
|
1709
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#
|
|
1710
|
-
<div class="fragment"><div class="line"><a name="
|
|
1711
|
-
<div class="line"><a name="
|
|
1712
|
-
<div class="line"><a name="
|
|
1713
|
-
<div class="line"><a name="
|
|
1714
|
-
<div class="line"><a name="
|
|
1715
|
-
<div class="line"><a name="
|
|
1716
|
-
<div class="line"><a name="
|
|
1717
|
-
<div class="line"><a name="
|
|
1718
|
-
<div class="line"><a name="
|
|
1719
|
-
<div class="line"><a name="
|
|
1720
|
-
<div class="line"><a name="
|
|
1721
|
-
<div class="line"><a name="
|
|
1722
|
-
<div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>  </div>
|
|
1723
|
-
<div class="line"><a name="l01339"></a><span class="lineno"> 1339</span>  <span class="keywordflow">if</span> (SVFUtil::isa<StructType, ArrayType>(elemTy))</div>
|
|
1724
|
-
<div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>  {</div>
|
|
1725
|
-
<div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>  <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* subStInfo = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a1f6cc76c996a0577b20b8cedd83fff92">collectTypeInfo</a>(elemTy);</div>
|
|
1726
|
-
<div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> nfF = subStInfo-><a class="code" href="classSVF_1_1StInfo.html#ae5fad367673315da57a604e64b5889f0">getNumOfFlattenFields</a>();</div>
|
|
1727
|
-
<div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> nfE = subStInfo-><a class="code" href="classSVF_1_1StInfo.html#a518c82138fcadc6634980566c1c0f762">getNumOfFlattenElements</a>();</div>
|
|
1728
|
-
<div class="line"><a name="l01344"></a><span class="lineno"> 1344</span>  <span class="comment">// Copy ST's info, whose element 0 is the size of ST itself.</span></div>
|
|
1729
|
-
<div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> j = 0; j < nfF; ++j)</div>
|
|
1730
|
-
<div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>  {</div>
|
|
1731
|
-
<div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* elemTy = subStInfo-><a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>()[j];</div>
|
|
1732
|
-
<div class="line"><a name="l01348"></a><span class="lineno"> 1348</span>  stInfo-><a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>().push_back(elemTy);</div>
|
|
1733
|
-
<div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>  }</div>
|
|
1734
|
-
<div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>  numFields += nfF;</div>
|
|
1735
|
-
<div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>  strideOffset += nfE;</div>
|
|
1736
|
-
<div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> tpj = 0; tpj < nfE; ++tpj)</div>
|
|
1737
|
-
<div class="line"><a name="l01353"></a><span class="lineno"> 1353</span>  {</div>
|
|
1738
|
-
<div class="line"><a name="l01354"></a><span class="lineno"> 1354</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* ty = subStInfo-><a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>()[tpj];</div>
|
|
1739
|
-
<div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>  stInfo-><a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().push_back(ty);</div>
|
|
1740
|
-
<div class="line"><a name="l01356"></a><span class="lineno"> 1356</span>  }</div>
|
|
1720
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01342">1342</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
|
|
1721
|
+
<div class="fragment"><div class="line"><a name="l01344"></a><span class="lineno"> 1344</span> {</div>
|
|
1722
|
+
<div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>  <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* stInfo = <span class="keyword">new</span> <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>(1);</div>
|
|
1723
|
+
<div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>  </div>
|
|
1724
|
+
<div class="line"><a name="l01348"></a><span class="lineno"> 1348</span>  <span class="comment">// Number of fields after flattening the struct</span></div>
|
|
1725
|
+
<div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>  numFields = 0;</div>
|
|
1726
|
+
<div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>  <span class="comment">// The offset when considering array stride info</span></div>
|
|
1727
|
+
<div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> strideOffset = 0;</div>
|
|
1728
|
+
<div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* elemTy : structTy->elements())</div>
|
|
1729
|
+
<div class="line"><a name="l01353"></a><span class="lineno"> 1353</span>  {</div>
|
|
1730
|
+
<div class="line"><a name="l01354"></a><span class="lineno"> 1354</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* elemSvfTy = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(elemTy);</div>
|
|
1731
|
+
<div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>  <span class="comment">// offset with int_32 (s32_t) is large enough and won't overflow</span></div>
|
|
1732
|
+
<div class="line"><a name="l01356"></a><span class="lineno"> 1356</span>  stInfo-><a class="code" href="classSVF_1_1StInfo.html#aae0736a5e99b11571af52e28500a6f9c">addFldWithType</a>(numFields, elemSvfTy, strideOffset);</div>
|
|
1741
1733
|
<div class="line"><a name="l01357"></a><span class="lineno"> 1357</span>  </div>
|
|
1742
|
-
<div class="line"><a name="l01358"></a><span class="lineno"> 1358</span> 
|
|
1743
|
-
<div class="line"><a name="l01359"></a><span class="lineno"> 1359</span> 
|
|
1744
|
-
<div class="line"><a name="l01360"></a><span class="lineno"> 1360</span> 
|
|
1745
|
-
<div class="line"><a name="l01361"></a><span class="lineno"> 1361</span>  <
|
|
1746
|
-
<div class="line"><a name="l01362"></a><span class="lineno"> 1362</span> 
|
|
1747
|
-
<div class="line"><a name="l01363"></a><span class="lineno"> 1363</span> 
|
|
1748
|
-
<div class="line"><a name="l01364"></a><span class="lineno"> 1364</span> 
|
|
1749
|
-
<div class="line"><a name="l01365"></a><span class="lineno"> 1365</span> 
|
|
1750
|
-
<div class="line"><a name="l01366"></a><span class="lineno"> 1366</span> 
|
|
1751
|
-
<div class="line"><a name="l01367"></a><span class="lineno"> 1367</span> 
|
|
1752
|
-
<div class="line"><a name="l01368"></a><span class="lineno"> 1368</span> 
|
|
1753
|
-
<div class="line"><a name="l01369"></a><span class="lineno"> 1369</span> 
|
|
1754
|
-
<div class="line"><a name="l01370"></a><span class="lineno"> 1370</span> 
|
|
1755
|
-
<div class="line"><a name="l01371"></a><span class="lineno"> 1371</span> 
|
|
1756
|
-
<div class="line"><a name="l01372"></a><span class="lineno"> 1372</span> 
|
|
1757
|
-
<div class="line"><a name="l01373"></a><span class="lineno"> 1373</span> 
|
|
1758
|
-
<div class="line"><a name="l01374"></a><span class="lineno"> 1374</span> 
|
|
1734
|
+
<div class="line"><a name="l01358"></a><span class="lineno"> 1358</span>  <span class="keywordflow">if</span> (SVFUtil::isa<StructType, ArrayType>(elemTy))</div>
|
|
1735
|
+
<div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>  {</div>
|
|
1736
|
+
<div class="line"><a name="l01360"></a><span class="lineno"> 1360</span>  <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* subStInfo = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a1f6cc76c996a0577b20b8cedd83fff92">collectTypeInfo</a>(elemTy);</div>
|
|
1737
|
+
<div class="line"><a name="l01361"></a><span class="lineno"> 1361</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> nfF = subStInfo-><a class="code" href="classSVF_1_1StInfo.html#ae5fad367673315da57a604e64b5889f0">getNumOfFlattenFields</a>();</div>
|
|
1738
|
+
<div class="line"><a name="l01362"></a><span class="lineno"> 1362</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> nfE = subStInfo-><a class="code" href="classSVF_1_1StInfo.html#a518c82138fcadc6634980566c1c0f762">getNumOfFlattenElements</a>();</div>
|
|
1739
|
+
<div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>  <span class="comment">// Copy ST's info, whose element 0 is the size of ST itself.</span></div>
|
|
1740
|
+
<div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> j = 0; j < nfF; ++j)</div>
|
|
1741
|
+
<div class="line"><a name="l01365"></a><span class="lineno"> 1365</span>  {</div>
|
|
1742
|
+
<div class="line"><a name="l01366"></a><span class="lineno"> 1366</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* elemTy = subStInfo-><a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>()[j];</div>
|
|
1743
|
+
<div class="line"><a name="l01367"></a><span class="lineno"> 1367</span>  stInfo-><a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>().push_back(elemTy);</div>
|
|
1744
|
+
<div class="line"><a name="l01368"></a><span class="lineno"> 1368</span>  }</div>
|
|
1745
|
+
<div class="line"><a name="l01369"></a><span class="lineno"> 1369</span>  numFields += nfF;</div>
|
|
1746
|
+
<div class="line"><a name="l01370"></a><span class="lineno"> 1370</span>  strideOffset += nfE;</div>
|
|
1747
|
+
<div class="line"><a name="l01371"></a><span class="lineno"> 1371</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> tpj = 0; tpj < nfE; ++tpj)</div>
|
|
1748
|
+
<div class="line"><a name="l01372"></a><span class="lineno"> 1372</span>  {</div>
|
|
1749
|
+
<div class="line"><a name="l01373"></a><span class="lineno"> 1373</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* ty = subStInfo-><a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>()[tpj];</div>
|
|
1750
|
+
<div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>  stInfo-><a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().push_back(ty);</div>
|
|
1751
|
+
<div class="line"><a name="l01375"></a><span class="lineno"> 1375</span>  }</div>
|
|
1752
|
+
<div class="line"><a name="l01376"></a><span class="lineno"> 1376</span>  </div>
|
|
1753
|
+
<div class="line"><a name="l01377"></a><span class="lineno"> 1377</span>  }</div>
|
|
1754
|
+
<div class="line"><a name="l01378"></a><span class="lineno"> 1378</span>  <span class="keywordflow">else</span></div>
|
|
1755
|
+
<div class="line"><a name="l01379"></a><span class="lineno"> 1379</span>  {</div>
|
|
1756
|
+
<div class="line"><a name="l01380"></a><span class="lineno"> 1380</span>  <span class="comment">// Simple type</span></div>
|
|
1757
|
+
<div class="line"><a name="l01381"></a><span class="lineno"> 1381</span>  numFields += 1;</div>
|
|
1758
|
+
<div class="line"><a name="l01382"></a><span class="lineno"> 1382</span>  strideOffset += 1;</div>
|
|
1759
|
+
<div class="line"><a name="l01383"></a><span class="lineno"> 1383</span>  stInfo-><a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>().push_back(elemSvfTy);</div>
|
|
1760
|
+
<div class="line"><a name="l01384"></a><span class="lineno"> 1384</span>  stInfo-><a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().push_back(elemSvfTy);</div>
|
|
1761
|
+
<div class="line"><a name="l01385"></a><span class="lineno"> 1385</span>  }</div>
|
|
1762
|
+
<div class="line"><a name="l01386"></a><span class="lineno"> 1386</span>  }</div>
|
|
1763
|
+
<div class="line"><a name="l01387"></a><span class="lineno"> 1387</span>  </div>
|
|
1764
|
+
<div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>  assert(stInfo-><a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().size() == strideOffset &&</div>
|
|
1765
|
+
<div class="line"><a name="l01389"></a><span class="lineno"> 1389</span>  <span class="stringliteral">"typeForStruct size incorrect!"</span>);</div>
|
|
1766
|
+
<div class="line"><a name="l01390"></a><span class="lineno"> 1390</span>  stInfo-><a class="code" href="classSVF_1_1StInfo.html#a1a07c2b1415c29d7d70791c6dfe602a3">setNumOfFieldsAndElems</a>(numFields,strideOffset);</div>
|
|
1767
|
+
<div class="line"><a name="l01391"></a><span class="lineno"> 1391</span>  </div>
|
|
1768
|
+
<div class="line"><a name="l01392"></a><span class="lineno"> 1392</span>  <span class="keywordflow">return</span> stInfo;</div>
|
|
1769
|
+
<div class="line"><a name="l01393"></a><span class="lineno"> 1393</span> }</div>
|
|
1759
1770
|
</div><!-- fragment -->
|
|
1760
1771
|
</div>
|
|
1761
1772
|
</div>
|
|
@@ -1785,37 +1796,37 @@ Friends</h2></td></tr>
|
|
|
1785
1796
|
|
|
1786
1797
|
<p>Collect a type info. </p>
|
|
1787
1798
|
|
|
1788
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#
|
|
1789
|
-
<div class="fragment"><div class="line"><a name="
|
|
1790
|
-
<div class="line"><a name="
|
|
1791
|
-
<div class="line"><a name="
|
|
1792
|
-
<div class="line"><a name="
|
|
1793
|
-
<div class="line"><a name="
|
|
1794
|
-
<div class="line"><a name="
|
|
1795
|
-
<div class="line"><a name="
|
|
1796
|
-
<div class="line"><a name="
|
|
1797
|
-
<div class="line"><a name="
|
|
1798
|
-
<div class="line"><a name="
|
|
1799
|
-
<div class="line"><a name="
|
|
1800
|
-
<div class="line"><a name="
|
|
1801
|
-
<div class="line"><a name="
|
|
1802
|
-
<div class="line"><a name="
|
|
1803
|
-
<div class="line"><a name="
|
|
1804
|
-
<div class="line"><a name="
|
|
1805
|
-
<div class="line"><a name="
|
|
1806
|
-
<div class="line"><a name="
|
|
1807
|
-
<div class="line"><a name="
|
|
1808
|
-
<div class="line"><a name="
|
|
1809
|
-
<div class="line"><a name="
|
|
1810
|
-
<div class="line"><a name="
|
|
1811
|
-
<div class="line"><a name="
|
|
1812
|
-
<div class="line"><a name="
|
|
1813
|
-
<div class="line"><a name="
|
|
1814
|
-
<div class="line"><a name="
|
|
1815
|
-
<div class="line"><a name="
|
|
1816
|
-
<div class="line"><a name="
|
|
1817
|
-
<div class="line"><a name="
|
|
1818
|
-
<div class="line"><a name="
|
|
1799
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01198">1198</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
|
|
1800
|
+
<div class="fragment"><div class="line"><a name="l01199"></a><span class="lineno"> 1199</span> {</div>
|
|
1801
|
+
<div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>  Type2TypeInfoMap::iterator tit = <a class="code" href="classSVF_1_1LLVMModuleSet.html#af2c555af91679d9e6d3009547ee11486">Type2TypeInfo</a>.find(T);</div>
|
|
1802
|
+
<div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>  <span class="keywordflow">if</span> (tit != <a class="code" href="classSVF_1_1LLVMModuleSet.html#af2c555af91679d9e6d3009547ee11486">Type2TypeInfo</a>.end())</div>
|
|
1803
|
+
<div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>  {</div>
|
|
1804
|
+
<div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>  <span class="keywordflow">return</span> tit->second;</div>
|
|
1805
|
+
<div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>  }</div>
|
|
1806
|
+
<div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>  <span class="comment">// No such StInfo for T, create it now.</span></div>
|
|
1807
|
+
<div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>  <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* stInfo;</div>
|
|
1808
|
+
<div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a146d286041987860388da3d8bc85cee3">ArrayType</a>* aty = SVFUtil::dyn_cast<ArrayType>(T))</div>
|
|
1809
|
+
<div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>  {</div>
|
|
1810
|
+
<div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>  stInfo = <a class="code" href="classSVF_1_1LLVMModuleSet.html#aa8de934358332505d4805db137d8ec29">collectArrayInfo</a>(aty);</div>
|
|
1811
|
+
<div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>  }</div>
|
|
1812
|
+
<div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a2bf58575ac7d068e0f1a4cf953b9e6cb">StructType</a>* sty = SVFUtil::dyn_cast<StructType>(T))</div>
|
|
1813
|
+
<div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>  {</div>
|
|
1814
|
+
<div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> nf;</div>
|
|
1815
|
+
<div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>  stInfo = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a946d1251501c7e0e33a9210838951258">collectStructInfo</a>(sty, nf);</div>
|
|
1816
|
+
<div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>  <span class="keywordflow">if</span> (nf > <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5552135a27684cbe4d2a5ed346f64644">symInfo</a>-><a class="code" href="classSVF_1_1SymbolTableInfo.html#abb8550c9ef856e45cb7675c3796f9a35">maxStSize</a>)</div>
|
|
1817
|
+
<div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>  {</div>
|
|
1818
|
+
<div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5552135a27684cbe4d2a5ed346f64644">symInfo</a>-><a class="code" href="classSVF_1_1SymbolTableInfo.html#a0c1143eff451edf8ea47d4487a8d3a55">maxStruct</a> = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(sty);</div>
|
|
1819
|
+
<div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5552135a27684cbe4d2a5ed346f64644">symInfo</a>-><a class="code" href="classSVF_1_1SymbolTableInfo.html#abb8550c9ef856e45cb7675c3796f9a35">maxStSize</a> = nf;</div>
|
|
1820
|
+
<div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>  }</div>
|
|
1821
|
+
<div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>  }</div>
|
|
1822
|
+
<div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>  <span class="keywordflow">else</span></div>
|
|
1823
|
+
<div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>  {</div>
|
|
1824
|
+
<div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>  stInfo = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a52853bd34a394882c6fd0fc73739c9f2">collectSimpleTypeInfo</a>(T);</div>
|
|
1825
|
+
<div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>  }</div>
|
|
1826
|
+
<div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#af2c555af91679d9e6d3009547ee11486">Type2TypeInfo</a>.emplace(T, stInfo);</div>
|
|
1827
|
+
<div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5552135a27684cbe4d2a5ed346f64644">symInfo</a>-><a class="code" href="classSVF_1_1SymbolTableInfo.html#a72be32d606db86090067159de44e01ec">addStInfo</a>(stInfo);</div>
|
|
1828
|
+
<div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>  <span class="keywordflow">return</span> stInfo;</div>
|
|
1829
|
+
<div class="line"><a name="l01228"></a><span class="lineno"> 1228</span> }</div>
|
|
1819
1830
|
</div><!-- fragment -->
|
|
1820
1831
|
</div>
|
|
1821
1832
|
</div>
|
|
@@ -1852,7 +1863,7 @@ Friends</h2></td></tr>
|
|
|
1852
1863
|
<div class="fragment"><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> {</div>
|
|
1853
1864
|
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(IntegerType::getInt8Ty(<a class="code" href="classSVF_1_1LLVMModuleSet.html#ac1a9d20d62066ec4e181fad223669e32">getContext</a>()));</div>
|
|
1854
1865
|
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="comment">// Functions need to be retrieved in the order of insertion</span></div>
|
|
1855
|
-
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  std::vector<const Function*>
|
|
1866
|
+
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  std::vector<const Function*> candidateDefs, candidateDecls;</div>
|
|
1856
1867
|
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>& mod : <a class="code" href="classSVF_1_1LLVMModuleSet.html#acde6292e719c80f93d3d1c344ab442cd">modules</a>)</div>
|
|
1857
1868
|
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  {</div>
|
|
1858
1869
|
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  std::vector<Function*> removedFuncList;</div>
|
|
@@ -1862,45 +1873,53 @@ Friends</h2></td></tr>
|
|
|
1862
1873
|
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  {</div>
|
|
1863
1874
|
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  removedFuncList.push_back(&func);</div>
|
|
1864
1875
|
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  }</div>
|
|
1865
|
-
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="keywordflow">else</span
|
|
1876
|
+
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (func.isDeclaration())</div>
|
|
1866
1877
|
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  {</div>
|
|
1867
|
-
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span> 
|
|
1878
|
+
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  candidateDecls.push_back(&func);</div>
|
|
1868
1879
|
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  }</div>
|
|
1869
|
-
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span> 
|
|
1870
|
-
<div class="line"><a name="
|
|
1871
|
-
<div class="line"><a name="
|
|
1872
|
-
<div class="line"><a name="
|
|
1873
|
-
<div class="line"><a name="
|
|
1874
|
-
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <a class="code" href="
|
|
1880
|
+
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keywordflow">else</span></div>
|
|
1881
|
+
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  {</div>
|
|
1882
|
+
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  candidateDefs.push_back(&func);</div>
|
|
1883
|
+
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  }</div>
|
|
1884
|
+
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  }</div>
|
|
1885
|
+
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a74ed17168bf5946cfb3f17495ec6db99">LLVMUtil::removeUnusedFuncsAndAnnotations</a>(removedFuncList);</div>
|
|
1875
1886
|
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  }</div>
|
|
1876
|
-
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  </div>
|
|
1877
|
-
<div class="line"><a name="
|
|
1878
|
-
<div class="line"><a name="
|
|
1879
|
-
<div class="line"><a name="
|
|
1880
|
-
<div class="line"><a name="
|
|
1881
|
-
<div class="line"><a name="
|
|
1882
|
-
<div class="line"><a name="
|
|
1883
|
-
<div class="line"><a name="
|
|
1884
|
-
<div class="line"><a name="
|
|
1885
|
-
<div class="line"><a name="
|
|
1886
|
-
<div class="line"><a name="
|
|
1887
|
-
<div class="line"><a name="
|
|
1888
|
-
<div class="line"><a name="
|
|
1889
|
-
<div class="line"><a name="
|
|
1890
|
-
<div class="line"><a name="
|
|
1891
|
-
<div class="line"><a name="
|
|
1892
|
-
<div class="line"><a name="
|
|
1893
|
-
<div class="line"><a name="
|
|
1894
|
-
<div class="line"><a name="
|
|
1895
|
-
<div class="line"><a name="
|
|
1896
|
-
<div class="line"><a name="
|
|
1897
|
-
<div class="line"><a name="
|
|
1898
|
-
<div class="line"><a name="
|
|
1899
|
-
<div class="line"><a name="
|
|
1900
|
-
<div class="line"><a name="
|
|
1901
|
-
<div class="line"><a name="
|
|
1902
|
-
<div class="line"><a name="
|
|
1903
|
-
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span> 
|
|
1887
|
+
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func: candidateDefs)</div>
|
|
1888
|
+
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  {</div>
|
|
1889
|
+
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a024f5de163fde6f63cb2d762b4b28d8a">createSVFFunction</a>(func);</div>
|
|
1890
|
+
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  }</div>
|
|
1891
|
+
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func: candidateDecls)</div>
|
|
1892
|
+
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  {</div>
|
|
1893
|
+
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a024f5de163fde6f63cb2d762b4b28d8a">createSVFFunction</a>(func);</div>
|
|
1894
|
+
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  }</div>
|
|
1895
|
+
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  </div>
|
|
1896
|
+
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>& mod : <a class="code" href="classSVF_1_1LLVMModuleSet.html#acde6292e719c80f93d3d1c344ab442cd">modules</a>)</div>
|
|
1897
|
+
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  {</div>
|
|
1898
|
+
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>& global : mod.globals())</div>
|
|
1899
|
+
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  {</div>
|
|
1900
|
+
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <a class="code" href="classSVF_1_1SVFGlobalValue.html">SVFGlobalValue</a>* svfglobal = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFGlobalValue.html">SVFGlobalValue</a>(</div>
|
|
1901
|
+
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  global.getName().str(), <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(global.getType()));</div>
|
|
1902
|
+
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a43832e93a42ae43d44b0cc160981678f">svfModule</a>-><a class="code" href="classSVF_1_1SVFModule.html#a0bc5a63d8c10da51766007cf40b095e5">addGlobalSet</a>(svfglobal);</div>
|
|
1903
|
+
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a7de84e7817406867b173e1591e0681ac">addGlobalValueMap</a>(&global, svfglobal);</div>
|
|
1904
|
+
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  }</div>
|
|
1905
|
+
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  </div>
|
|
1906
|
+
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a0fd33072b099f61eaa642e94ed0c03fc">GlobalAlias</a>& alias : mod.aliases())</div>
|
|
1907
|
+
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  {</div>
|
|
1908
|
+
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <a class="code" href="classSVF_1_1SVFGlobalValue.html">SVFGlobalValue</a>* svfalias = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFGlobalValue.html">SVFGlobalValue</a>(</div>
|
|
1909
|
+
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  alias.getName().str(), <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(alias.getType()));</div>
|
|
1910
|
+
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a43832e93a42ae43d44b0cc160981678f">svfModule</a>-><a class="code" href="classSVF_1_1SVFModule.html#aa6627399cf4d30d576f76f681d83449d">addAliasSet</a>(svfalias);</div>
|
|
1911
|
+
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a7de84e7817406867b173e1591e0681ac">addGlobalValueMap</a>(&alias, svfalias);</div>
|
|
1912
|
+
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  }</div>
|
|
1913
|
+
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  </div>
|
|
1914
|
+
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aacffd97ab4cb45aeae2e67ec479889aa">GlobalIFunc</a>& ifunc : mod.ifuncs())</div>
|
|
1915
|
+
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  {</div>
|
|
1916
|
+
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <a class="code" href="classSVF_1_1SVFGlobalValue.html">SVFGlobalValue</a>* svfifunc = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFGlobalValue.html">SVFGlobalValue</a>(</div>
|
|
1917
|
+
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  ifunc.getName().str(), <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(ifunc.getType()));</div>
|
|
1918
|
+
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a43832e93a42ae43d44b0cc160981678f">svfModule</a>-><a class="code" href="classSVF_1_1SVFModule.html#aa6627399cf4d30d576f76f681d83449d">addAliasSet</a>(svfifunc);</div>
|
|
1919
|
+
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a7de84e7817406867b173e1591e0681ac">addGlobalValueMap</a>(&ifunc, svfifunc);</div>
|
|
1920
|
+
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  }</div>
|
|
1921
|
+
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  }</div>
|
|
1922
|
+
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span> }</div>
|
|
1904
1923
|
</div><!-- fragment -->
|
|
1905
1924
|
</div>
|
|
1906
1925
|
</div>
|
|
@@ -1928,70 +1947,70 @@ Friends</h2></td></tr>
|
|
|
1928
1947
|
</table>
|
|
1929
1948
|
</div><div class="memdoc">
|
|
1930
1949
|
|
|
1931
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#
|
|
1932
|
-
<div class="fragment"><div class="line"><a name="
|
|
1933
|
-
<div class="line"><a name="
|
|
1934
|
-
<div class="line"><a name="
|
|
1935
|
-
<div class="line"><a name="
|
|
1936
|
-
<div class="line"><a name="
|
|
1937
|
-
<div class="line"><a name="
|
|
1938
|
-
<div class="line"><a name="
|
|
1939
|
-
<div class="line"><a name="
|
|
1940
|
-
<div class="line"><a name="
|
|
1941
|
-
<div class="line"><a name="
|
|
1942
|
-
<div class="line"><a name="
|
|
1943
|
-
<div class="line"><a name="
|
|
1944
|
-
<div class="line"><a name="
|
|
1945
|
-
<div class="line"><a name="
|
|
1946
|
-
<div class="line"><a name="
|
|
1947
|
-
<div class="line"><a name="
|
|
1948
|
-
<div class="line"><a name="
|
|
1949
|
-
<div class="line"><a name="
|
|
1950
|
-
<div class="line"><a name="
|
|
1951
|
-
<div class="line"><a name="
|
|
1952
|
-
<div class="line"><a name="
|
|
1953
|
-
<div class="line"><a name="
|
|
1954
|
-
<div class="line"><a name="
|
|
1955
|
-
<div class="line"><a name="
|
|
1956
|
-
<div class="line"><a name="
|
|
1957
|
-
<div class="line"><a name="
|
|
1958
|
-
<div class="line"><a name="
|
|
1959
|
-
<div class="line"><a name="
|
|
1960
|
-
<div class="line"><a name="
|
|
1961
|
-
<div class="line"><a name="
|
|
1962
|
-
<div class="line"><a name="
|
|
1963
|
-
<div class="line"><a name="
|
|
1964
|
-
<div class="line"><a name="
|
|
1965
|
-
<div class="line"><a name="
|
|
1966
|
-
<div class="line"><a name="
|
|
1967
|
-
<div class="line"><a name="
|
|
1968
|
-
<div class="line"><a name="
|
|
1969
|
-
<div class="line"><a name="
|
|
1970
|
-
<div class="line"><a name="
|
|
1971
|
-
<div class="line"><a name="
|
|
1972
|
-
<div class="line"><a name="
|
|
1973
|
-
<div class="line"><a name="
|
|
1974
|
-
<div class="line"><a name="
|
|
1975
|
-
<div class="line"><a name="
|
|
1976
|
-
<div class="line"><a name="
|
|
1977
|
-
<div class="line"><a name="
|
|
1978
|
-
<div class="line"><a name="
|
|
1979
|
-
<div class="line"><a name="
|
|
1980
|
-
<div class="line"><a name="
|
|
1981
|
-
<div class="line"><a name="
|
|
1982
|
-
<div class="line"><a name="
|
|
1983
|
-
<div class="line"><a name="
|
|
1984
|
-
<div class="line"><a name="
|
|
1985
|
-
<div class="line"><a name="
|
|
1986
|
-
<div class="line"><a name="
|
|
1987
|
-
<div class="line"><a name="
|
|
1988
|
-
<div class="line"><a name="
|
|
1989
|
-
<div class="line"><a name="
|
|
1990
|
-
<div class="line"><a name="
|
|
1991
|
-
<div class="line"><a name="
|
|
1992
|
-
<div class="line"><a name="
|
|
1993
|
-
<div class="line"><a name="
|
|
1994
|
-
<div class="line"><a name="
|
|
1950
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00220">220</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
|
|
1951
|
+
<div class="fragment"><div class="line"><a name="l00221"></a><span class="lineno"> 221</span> {</div>
|
|
1952
|
+
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svfFunc = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>(</div>
|
|
1953
|
+
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(func->getType()),</div>
|
|
1954
|
+
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  SVFUtil::cast<SVFFunctionType>(</div>
|
|
1955
|
+
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(func->getFunctionType())),</div>
|
|
1956
|
+
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  func->isDeclaration(), <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a4638a12f5481dff947b59cf8353e619b">LLVMUtil::isIntrinsicFun</a>(func),</div>
|
|
1957
|
+
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  func->hasAddressTaken(), func->isVarArg(), <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html">SVFLoopAndDomInfo</a>, <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a8cd4d6410017b9e5f47f2f88450b78d8">LLVMUtil::getFunAnnotations</a>(func));</div>
|
|
1958
|
+
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  svfFunc-><a class="code" href="classSVF_1_1SVFValue.html#a8325774df9d65d78ef6a66fef59b9a97">setName</a>(func->getName().str());</div>
|
|
1959
|
+
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a43832e93a42ae43d44b0cc160981678f">svfModule</a>-><a class="code" href="classSVF_1_1SVFModule.html#a8a0fe93cc13b799fc28540fb312573c6">addFunctionSet</a>(svfFunc);</div>
|
|
1960
|
+
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab671d5bb9ca5761e2b438a4d4da229cf">addFunctionMap</a>(func, svfFunc);</div>
|
|
1961
|
+
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  </div>
|
|
1962
|
+
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a58cdfbc4160cae08745b67844ac29801">Argument</a>& arg : func->args())</div>
|
|
1963
|
+
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  {</div>
|
|
1964
|
+
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <a class="code" href="classSVF_1_1SVFArgument.html">SVFArgument</a>* svfarg = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFArgument.html">SVFArgument</a>(</div>
|
|
1965
|
+
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(arg.getType()), svfFunc, arg.getArgNo(),</div>
|
|
1966
|
+
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a428bd75b33fab60988d8758090712f29">LLVMUtil::isArgOfUncalledFunction</a>(&arg));</div>
|
|
1967
|
+
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <span class="comment">// Setting up arg name</span></div>
|
|
1968
|
+
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <span class="keywordflow">if</span> (arg.hasName())</div>
|
|
1969
|
+
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  svfarg-><a class="code" href="classSVF_1_1SVFValue.html#a8325774df9d65d78ef6a66fef59b9a97">setName</a>(arg.getName().str());</div>
|
|
1970
|
+
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <span class="keywordflow">else</span></div>
|
|
1971
|
+
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  svfarg-><a class="code" href="classSVF_1_1SVFValue.html#a8325774df9d65d78ef6a66fef59b9a97">setName</a>(std::to_string(arg.getArgNo()));</div>
|
|
1972
|
+
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  </div>
|
|
1973
|
+
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  svfFunc-><a class="code" href="classSVF_1_1SVFFunction.html#ad865b8440a6e0d5d212798d2213e1e9c">addArgument</a>(svfarg);</div>
|
|
1974
|
+
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5595ec3f7582934dc499770825bf5373">addArgumentMap</a>(&arg, svfarg);</div>
|
|
1975
|
+
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  }</div>
|
|
1976
|
+
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  </div>
|
|
1977
|
+
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>& bb : *func)</div>
|
|
1978
|
+
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  {</div>
|
|
1979
|
+
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* svfBB =</div>
|
|
1980
|
+
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(bb.getType()), svfFunc);</div>
|
|
1981
|
+
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <span class="keywordflow">if</span> (bb.hasName())</div>
|
|
1982
|
+
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  svfBB-><a class="code" href="classSVF_1_1SVFValue.html#a8325774df9d65d78ef6a66fef59b9a97">setName</a>(bb.getName().str());</div>
|
|
1983
|
+
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  svfFunc-><a class="code" href="classSVF_1_1SVFFunction.html#a0d5031bd11b6372803082111ec2cb4f6">addBasicBlock</a>(svfBB);</div>
|
|
1984
|
+
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a3eaadb33cd21d0bd868526b5ddb051d9">addBasicBlockMap</a>(&bb, svfBB);</div>
|
|
1985
|
+
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>& inst : bb)</div>
|
|
1986
|
+
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  {</div>
|
|
1987
|
+
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfInst = <span class="keyword">nullptr</span>;</div>
|
|
1988
|
+
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a>* call = SVFUtil::dyn_cast<CallBase>(&inst))</div>
|
|
1989
|
+
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  {</div>
|
|
1990
|
+
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#ab1b4c565ae6be788b934defc21a5cfaf">LLVMUtil::isVirtualCallSite</a>(call))</div>
|
|
1991
|
+
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  svfInst = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFVirtualCallInst.html">SVFVirtualCallInst</a>(</div>
|
|
1992
|
+
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(call->getType()), svfBB,</div>
|
|
1993
|
+
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  call->getFunctionType()->isVarArg(),</div>
|
|
1994
|
+
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  inst.isTerminator());</div>
|
|
1995
|
+
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  <span class="keywordflow">else</span></div>
|
|
1996
|
+
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  svfInst = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFCallInst.html">SVFCallInst</a>(</div>
|
|
1997
|
+
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(call->getType()), svfBB,</div>
|
|
1998
|
+
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  call->getFunctionType()->isVarArg(),</div>
|
|
1999
|
+
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  inst.isTerminator());</div>
|
|
2000
|
+
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  }</div>
|
|
2001
|
+
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  <span class="keywordflow">else</span></div>
|
|
2002
|
+
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  {</div>
|
|
2003
|
+
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  svfInst =</div>
|
|
2004
|
+
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(inst.getType()),</div>
|
|
2005
|
+
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  svfBB, inst.isTerminator(),</div>
|
|
2006
|
+
<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  SVFUtil::isa<ReturnInst>(inst));</div>
|
|
2007
|
+
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  }</div>
|
|
2008
|
+
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  </div>
|
|
2009
|
+
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  svfBB-><a class="code" href="classSVF_1_1SVFBasicBlock.html#ac1b15d8f9c2499add8dbc889ae5cab65">addInstruction</a>(svfInst);</div>
|
|
2010
|
+
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a172084437a8450314a17f7085a32b5d2">addInstructionMap</a>(&inst, svfInst);</div>
|
|
2011
|
+
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  }</div>
|
|
2012
|
+
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  }</div>
|
|
2013
|
+
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span> }</div>
|
|
1995
2014
|
</div><!-- fragment -->
|
|
1996
2015
|
</div>
|
|
1997
2016
|
</div>
|
|
@@ -2011,30 +2030,30 @@ Friends</h2></td></tr>
|
|
|
2011
2030
|
</table>
|
|
2012
2031
|
</div><div class="memdoc">
|
|
2013
2032
|
|
|
2014
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#
|
|
2015
|
-
<div class="fragment"><div class="line"><a name="
|
|
2016
|
-
<div class="line"><a name="
|
|
2017
|
-
<div class="line"><a name="
|
|
2018
|
-
<div class="line"><a name="
|
|
2019
|
-
<div class="line"><a name="
|
|
2020
|
-
<div class="line"><a name="
|
|
2021
|
-
<div class="line"><a name="
|
|
2022
|
-
<div class="line"><a name="
|
|
2023
|
-
<div class="line"><a name="
|
|
2024
|
-
<div class="line"><a name="
|
|
2025
|
-
<div class="line"><a name="
|
|
2026
|
-
<div class="line"><a name="
|
|
2027
|
-
<div class="line"><a name="
|
|
2028
|
-
<div class="line"><a name="
|
|
2029
|
-
<div class="line"><a name="
|
|
2030
|
-
<div class="line"><a name="
|
|
2031
|
-
<div class="line"><a name="
|
|
2032
|
-
<div class="line"><a name="
|
|
2033
|
-
<div class="line"><a name="
|
|
2034
|
-
<div class="line"><a name="
|
|
2035
|
-
<div class="line"><a name="
|
|
2036
|
-
<div class="line"><a name="
|
|
2037
|
-
<div class="line"><a name="
|
|
2033
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01008">1008</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
|
|
2034
|
+
<div class="fragment"><div class="line"><a name="l01009"></a><span class="lineno"> 1009</span> {</div>
|
|
2035
|
+
<div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>& mod : <a class="code" href="classSVF_1_1LLVMModuleSet.html#acde6292e719c80f93d3d1c344ab442cd">modules</a>)</div>
|
|
2036
|
+
<div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>  {</div>
|
|
2037
|
+
<div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> moduleName = mod.getName().str();</div>
|
|
2038
|
+
<div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> OutputFilename;</div>
|
|
2039
|
+
<div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>  std::size_t pos = moduleName.rfind(<span class="charliteral">'.'</span>);</div>
|
|
2040
|
+
<div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>  <span class="keywordflow">if</span> (pos != std::string::npos)</div>
|
|
2041
|
+
<div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>  OutputFilename = moduleName.substr(0, pos) + suffix;</div>
|
|
2042
|
+
<div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>  <span class="keywordflow">else</span></div>
|
|
2043
|
+
<div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>  OutputFilename = moduleName + suffix;</div>
|
|
2044
|
+
<div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>  </div>
|
|
2045
|
+
<div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>  std::error_code EC;</div>
|
|
2046
|
+
<div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>  <a class="code" href="namespaceSVF.html#a1c7c7ac12791c0ae386283c0a4f127ba">raw_fd_ostream</a> OS(OutputFilename.c_str(), EC, llvm::sys::fs::OF_None);</div>
|
|
2047
|
+
<div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>  </div>
|
|
2048
|
+
<div class="line"><a name="l01023"></a><span class="lineno"> 1023</span> <span class="preprocessor">#if (LLVM_VERSION_MAJOR >= 7)</span></div>
|
|
2049
|
+
<div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>  WriteBitcodeToFile(mod, OS);</div>
|
|
2050
|
+
<div class="line"><a name="l01025"></a><span class="lineno"> 1025</span> <span class="preprocessor">#else</span></div>
|
|
2051
|
+
<div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>  WriteBitcodeToFile(&mod, OS);</div>
|
|
2052
|
+
<div class="line"><a name="l01027"></a><span class="lineno"> 1027</span> <span class="preprocessor">#endif</span></div>
|
|
2053
|
+
<div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>  </div>
|
|
2054
|
+
<div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>  OS.flush();</div>
|
|
2055
|
+
<div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>  }</div>
|
|
2056
|
+
<div class="line"><a name="l01031"></a><span class="lineno"> 1031</span> }</div>
|
|
2038
2057
|
</div><!-- fragment -->
|
|
2039
2058
|
</div>
|
|
2040
2059
|
</div>
|
|
@@ -2061,10 +2080,10 @@ Friends</h2></td></tr>
|
|
|
2061
2080
|
</table>
|
|
2062
2081
|
</div><div class="memdoc">
|
|
2063
2082
|
|
|
2064
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#
|
|
2065
|
-
<div class="fragment"><div class="line"><a name="
|
|
2066
|
-
<div class="line"><a name="
|
|
2067
|
-
<div class="line"><a name="
|
|
2083
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#l00338">338</a> of file <a class="el" href="LLVMModule_8h_source.html">LLVMModule.h</a>.</p>
|
|
2084
|
+
<div class="fragment"><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  {</div>
|
|
2085
|
+
<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#ae265a7f3cc7367d62013e0f15cf3d233">getModuleNum</a>() == 0;</div>
|
|
2086
|
+
<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  }</div>
|
|
2068
2087
|
</div><!-- fragment -->
|
|
2069
2088
|
</div>
|
|
2070
2089
|
</div>
|
|
@@ -2091,11 +2110,11 @@ Friends</h2></td></tr>
|
|
|
2091
2110
|
</table>
|
|
2092
2111
|
</div><div class="memdoc">
|
|
2093
2112
|
|
|
2094
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#
|
|
2095
|
-
<div class="fragment"><div class="line"><a name="
|
|
2096
|
-
<div class="line"><a name="
|
|
2097
|
-
<div class="line"><a name="
|
|
2098
|
-
<div class="line"><a name="
|
|
2113
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#l00332">332</a> of file <a class="el" href="LLVMModule_8h_source.html">LLVMModule.h</a>.</p>
|
|
2114
|
+
<div class="fragment"><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  {</div>
|
|
2115
|
+
<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  assert(!<a class="code" href="classSVF_1_1LLVMModuleSet.html#ae19e38054c55d5822dfc83a12f12aa60">empty</a>() && <span class="stringliteral">"empty LLVM module!!"</span>);</div>
|
|
2116
|
+
<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a9fe3fa15a6a0ec25864cb8439a45596e">getMainLLVMModule</a>()->getContext();</div>
|
|
2117
|
+
<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  }</div>
|
|
2099
2118
|
</div><!-- fragment -->
|
|
2100
2119
|
</div>
|
|
2101
2120
|
</div>
|
|
@@ -2123,16 +2142,16 @@ Friends</h2></td></tr>
|
|
|
2123
2142
|
</table>
|
|
2124
2143
|
</div><div class="memdoc">
|
|
2125
2144
|
|
|
2126
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#
|
|
2127
|
-
<div class="fragment"><div class="line"><a name="
|
|
2128
|
-
<div class="line"><a name="
|
|
2129
|
-
<div class="line"><a name="
|
|
2130
|
-
<div class="line"><a name="
|
|
2131
|
-
<div class="line"><a name="
|
|
2132
|
-
<div class="line"><a name="
|
|
2133
|
-
<div class="line"><a name="
|
|
2134
|
-
<div class="line"><a name="
|
|
2135
|
-
<div class="line"><a name="
|
|
2145
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#l00301">301</a> of file <a class="el" href="LLVMModule_8h_source.html">LLVMModule.h</a>.</p>
|
|
2146
|
+
<div class="fragment"><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  {</div>
|
|
2147
|
+
<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* funDef = fun;</div>
|
|
2148
|
+
<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <span class="keywordflow">if</span>(fun->isDeclaration() && <a class="code" href="classSVF_1_1LLVMModuleSet.html#a32558da64f03452c502ec57d1e106427">hasDefinition</a>(fun))</div>
|
|
2149
|
+
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  funDef = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a6e670254385050b9a5e612f881b07b9c">getDefinition</a>(fun);</div>
|
|
2150
|
+
<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  </div>
|
|
2151
|
+
<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  FunDefToDeclsMapTy::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a377cefaad4b688ab6edf94ba4abe00ee">FunDefToDeclsMap</a>.find(funDef);</div>
|
|
2152
|
+
<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  assert(it != <a class="code" href="classSVF_1_1LLVMModuleSet.html#a377cefaad4b688ab6edf94ba4abe00ee">FunDefToDeclsMap</a>.end() && <span class="stringliteral">"does not have a function definition (body)?"</span>);</div>
|
|
2153
|
+
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  <span class="keywordflow">return</span> it->second;</div>
|
|
2154
|
+
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  }</div>
|
|
2136
2155
|
</div><!-- fragment -->
|
|
2137
2156
|
</div>
|
|
2138
2157
|
</div>
|
|
@@ -2160,13 +2179,13 @@ Friends</h2></td></tr>
|
|
|
2160
2179
|
</table>
|
|
2161
2180
|
</div><div class="memdoc">
|
|
2162
2181
|
|
|
2163
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#
|
|
2164
|
-
<div class="fragment"><div class="line"><a name="
|
|
2165
|
-
<div class="line"><a name="
|
|
2166
|
-
<div class="line"><a name="
|
|
2167
|
-
<div class="line"><a name="
|
|
2168
|
-
<div class="line"><a name="
|
|
2169
|
-
<div class="line"><a name="
|
|
2182
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#l00280">280</a> of file <a class="el" href="LLVMModule_8h_source.html">LLVMModule.h</a>.</p>
|
|
2183
|
+
<div class="fragment"><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  {</div>
|
|
2184
|
+
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  assert(fun->isDeclaration() && <span class="stringliteral">"not a function declaration?"</span>);</div>
|
|
2185
|
+
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  FunDeclToDefMapTy::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#aee80b29e5246e3eaa0e30e165346101f">FunDeclToDefMap</a>.find(fun);</div>
|
|
2186
|
+
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  assert(it != <a class="code" href="classSVF_1_1LLVMModuleSet.html#aee80b29e5246e3eaa0e30e165346101f">FunDeclToDefMap</a>.end() && <span class="stringliteral">"has no definition?"</span>);</div>
|
|
2187
|
+
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <span class="keywordflow">return</span> it->second;</div>
|
|
2188
|
+
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  }</div>
|
|
2170
2189
|
</div><!-- fragment -->
|
|
2171
2190
|
</div>
|
|
2172
2191
|
</div>
|
|
@@ -2194,12 +2213,12 @@ Friends</h2></td></tr>
|
|
|
2194
2213
|
</table>
|
|
2195
2214
|
</div><div class="memdoc">
|
|
2196
2215
|
|
|
2197
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#
|
|
2198
|
-
<div class="fragment"><div class="line"><a name="
|
|
2199
|
-
<div class="line"><a name="
|
|
2200
|
-
<div class="line"><a name="
|
|
2201
|
-
<div class="line"><a name="
|
|
2202
|
-
<div class="line"><a name="
|
|
2216
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#l00319">319</a> of file <a class="el" href="LLVMModule_8h_source.html">LLVMModule.h</a>.</p>
|
|
2217
|
+
<div class="fragment"><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  {</div>
|
|
2218
|
+
<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  GlobalDefToRepMapTy::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#ae2a1fa0b908cf372c50af90e62c4bf2b">GlobalDefToRepMap</a>.find(val);</div>
|
|
2219
|
+
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  assert(it != <a class="code" href="classSVF_1_1LLVMModuleSet.html#ae2a1fa0b908cf372c50af90e62c4bf2b">GlobalDefToRepMap</a>.end() && <span class="stringliteral">"has no rep?"</span>);</div>
|
|
2220
|
+
<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <span class="keywordflow">return</span> it->second;</div>
|
|
2221
|
+
<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  }</div>
|
|
2203
2222
|
</div><!-- fragment -->
|
|
2204
2223
|
</div>
|
|
2205
2224
|
</div>
|
|
@@ -2227,94 +2246,94 @@ Friends</h2></td></tr>
|
|
|
2227
2246
|
</table>
|
|
2228
2247
|
</div><div class="memdoc">
|
|
2229
2248
|
|
|
2230
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#
|
|
2231
|
-
<div class="fragment"><div class="line"><a name="
|
|
2232
|
-
<div class="line"><a name="
|
|
2233
|
-
<div class="line"><a name="
|
|
2234
|
-
<div class="line"><a name="
|
|
2235
|
-
<div class="line"><a name="
|
|
2236
|
-
<div class="line"><a name="
|
|
2237
|
-
<div class="line"><a name="
|
|
2238
|
-
<div class="line"><a name="
|
|
2239
|
-
<div class="line"><a name="
|
|
2240
|
-
<div class="line"><a name="
|
|
2241
|
-
<div class="line"><a name="
|
|
2242
|
-
<div class="line"><a name="
|
|
2243
|
-
<div class="line"><a name="
|
|
2244
|
-
<div class="line"><a name="
|
|
2245
|
-
<div class="line"><a name="
|
|
2246
|
-
<div class="line"><a name="
|
|
2247
|
-
<div class="line"><a name="
|
|
2248
|
-
<div class="line"><a name="
|
|
2249
|
-
<div class="line"><a name="
|
|
2250
|
-
<div class="line"><a name="
|
|
2251
|
-
<div class="line"><a name="
|
|
2252
|
-
<div class="line"><a name="
|
|
2253
|
-
<div class="line"><a name="
|
|
2254
|
-
<div class="line"><a name="
|
|
2255
|
-
<div class="line"><a name="
|
|
2256
|
-
<div class="line"><a name="
|
|
2257
|
-
<div class="line"><a name="
|
|
2258
|
-
<div class="line"><a name="
|
|
2259
|
-
<div class="line"><a name="
|
|
2260
|
-
<div class="line"><a name="
|
|
2261
|
-
<div class="line"><a name="
|
|
2262
|
-
<div class="line"><a name="
|
|
2263
|
-
<div class="line"><a name="
|
|
2264
|
-
<div class="line"><a name="
|
|
2265
|
-
<div class="line"><a name="
|
|
2266
|
-
<div class="line"><a name="
|
|
2267
|
-
<div class="line"><a name="
|
|
2268
|
-
<div class="line"><a name="
|
|
2269
|
-
<div class="line"><a name="
|
|
2270
|
-
<div class="line"><a name="
|
|
2271
|
-
<div class="line"><a name="
|
|
2272
|
-
<div class="line"><a name="
|
|
2273
|
-
<div class="line"><a name="
|
|
2274
|
-
<div class="line"><a name="
|
|
2275
|
-
<div class="line"><a name="
|
|
2276
|
-
<div class="line"><a name="
|
|
2277
|
-
<div class="line"><a name="
|
|
2278
|
-
<div class="line"><a name="
|
|
2279
|
-
<div class="line"><a name="
|
|
2280
|
-
<div class="line"><a name="
|
|
2281
|
-
<div class="line"><a name="
|
|
2282
|
-
<div class="line"><a name="
|
|
2283
|
-
<div class="line"><a name="
|
|
2284
|
-
<div class="line"><a name="
|
|
2285
|
-
<div class="line"><a name="
|
|
2286
|
-
<div class="line"><a name="
|
|
2287
|
-
<div class="line"><a name="
|
|
2288
|
-
<div class="line"><a name="
|
|
2289
|
-
<div class="line"><a name="
|
|
2290
|
-
<div class="line"><a name="
|
|
2291
|
-
<div class="line"><a name="
|
|
2292
|
-
<div class="line"><a name="
|
|
2293
|
-
<div class="line"><a name="
|
|
2294
|
-
<div class="line"><a name="
|
|
2295
|
-
<div class="line"><a name="
|
|
2296
|
-
<div class="line"><a name="
|
|
2297
|
-
<div class="line"><a name="
|
|
2298
|
-
<div class="line"><a name="
|
|
2299
|
-
<div class="line"><a name="
|
|
2300
|
-
<div class="line"><a name="
|
|
2301
|
-
<div class="line"><a name="
|
|
2302
|
-
<div class="line"><a name="
|
|
2303
|
-
<div class="line"><a name="
|
|
2304
|
-
<div class="line"><a name="
|
|
2305
|
-
<div class="line"><a name="
|
|
2306
|
-
<div class="line"><a name="
|
|
2307
|
-
<div class="line"><a name="
|
|
2308
|
-
<div class="line"><a name="
|
|
2309
|
-
<div class="line"><a name="
|
|
2310
|
-
<div class="line"><a name="
|
|
2311
|
-
<div class="line"><a name="
|
|
2312
|
-
<div class="line"><a name="
|
|
2313
|
-
<div class="line"><a name="
|
|
2314
|
-
<div class="line"><a name="
|
|
2315
|
-
<div class="line"><a name="
|
|
2316
|
-
<div class="line"><a name="
|
|
2317
|
-
<div class="line"><a name="
|
|
2249
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00549">549</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
|
|
2250
|
+
<div class="fragment"><div class="line"><a name="l00550"></a><span class="lineno"> 550</span> {</div>
|
|
2251
|
+
<div class="line"><a name="l00551"></a><span class="lineno"> 551</span>  <span class="comment">// This function is used to extract constructor and destructor functions</span></div>
|
|
2252
|
+
<div class="line"><a name="l00552"></a><span class="lineno"> 552</span>  <span class="comment">// sorted by their priority from @llvm.global_ctors or @llvm.global_dtors.</span></div>
|
|
2253
|
+
<div class="line"><a name="l00553"></a><span class="lineno"> 553</span>  <span class="comment">// For example, given following @llvm.global_ctors, the returning sorted</span></div>
|
|
2254
|
+
<div class="line"><a name="l00554"></a><span class="lineno"> 554</span>  <span class="comment">// function list should be [ctor3, ctor1, ctor2].</span></div>
|
|
2255
|
+
<div class="line"><a name="l00555"></a><span class="lineno"> 555</span>  <span class="comment">// ------------------------------------------------------------------</span></div>
|
|
2256
|
+
<div class="line"><a name="l00556"></a><span class="lineno"> 556</span>  <span class="comment">// ; Each struct in the array is {priority, function, associated data}</span></div>
|
|
2257
|
+
<div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  <span class="comment">//</span></div>
|
|
2258
|
+
<div class="line"><a name="l00558"></a><span class="lineno"> 558</span>  <span class="comment">// @llvm.global_ctors = appending global [2 x { i32, void ()*, i8* }]</span></div>
|
|
2259
|
+
<div class="line"><a name="l00559"></a><span class="lineno"> 559</span>  <span class="comment">// [{ i32, void ()*, i8* } { i32 1234, void ()* @ctor1.cpp, i8* null },</span></div>
|
|
2260
|
+
<div class="line"><a name="l00560"></a><span class="lineno"> 560</span>  <span class="comment">// { i32, void ()*, i8* } { i32 2345, void ()* @ctor2.cpp, i8* null },</span></div>
|
|
2261
|
+
<div class="line"><a name="l00561"></a><span class="lineno"> 561</span>  <span class="comment">// { i32, void ()*, i8* } { i32 345, void ()* @ctor3.cpp, i8* null }]</span></div>
|
|
2262
|
+
<div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  <span class="comment">// ------------------------------------------------------------------</span></div>
|
|
2263
|
+
<div class="line"><a name="l00563"></a><span class="lineno"> 563</span>  <span class="comment">// TODO: According to LLVM language reference, if the third field is</span></div>
|
|
2264
|
+
<div class="line"><a name="l00564"></a><span class="lineno"> 564</span>  <span class="comment">// non-null, and points to a global variable or function, the initializer</span></div>
|
|
2265
|
+
<div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  <span class="comment">// function will only run if the associated data from the current module is</span></div>
|
|
2266
|
+
<div class="line"><a name="l00566"></a><span class="lineno"> 566</span>  <span class="comment">// not discarded. However the associated data is currently ignored.</span></div>
|
|
2267
|
+
<div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  </div>
|
|
2268
|
+
<div class="line"><a name="l00568"></a><span class="lineno"> 568</span>  </div>
|
|
2269
|
+
<div class="line"><a name="l00569"></a><span class="lineno"> 569</span>  <span class="comment">// This class is used for the priority queue that sorts the functions by</span></div>
|
|
2270
|
+
<div class="line"><a name="l00570"></a><span class="lineno"> 570</span>  <span class="comment">// their priority. Each object of this class stands for an item in the</span></div>
|
|
2271
|
+
<div class="line"><a name="l00571"></a><span class="lineno"> 571</span>  <span class="comment">// function array.</span></div>
|
|
2272
|
+
<div class="line"><a name="l00572"></a><span class="lineno"> 572</span>  <span class="keyword">class </span>LLVMGlobalFunction</div>
|
|
2273
|
+
<div class="line"><a name="l00573"></a><span class="lineno"> 573</span>  {</div>
|
|
2274
|
+
<div class="line"><a name="l00574"></a><span class="lineno"> 574</span>  <span class="keyword">public</span>:</div>
|
|
2275
|
+
<div class="line"><a name="l00575"></a><span class="lineno"> 575</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> priority;</div>
|
|
2276
|
+
<div class="line"><a name="l00576"></a><span class="lineno"> 576</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func;</div>
|
|
2277
|
+
<div class="line"><a name="l00577"></a><span class="lineno"> 577</span>  LLVMGlobalFunction() {};</div>
|
|
2278
|
+
<div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  LLVMGlobalFunction(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> _priority, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* _func)</div>
|
|
2279
|
+
<div class="line"><a name="l00579"></a><span class="lineno"> 579</span>  : priority(_priority), func(_func) {};</div>
|
|
2280
|
+
<div class="line"><a name="l00580"></a><span class="lineno"> 580</span>  <span class="keywordtype">bool</span> <a class="code" href="namespaceSVF.html#aedd9d023a68dddd66314be63bb8e48d2">operator></a>(<span class="keyword">const</span> LLVMGlobalFunction &other)<span class="keyword"> const</span></div>
|
|
2281
|
+
<div class="line"><a name="l00581"></a><span class="lineno"> 581</span> <span class="keyword"> </span>{</div>
|
|
2282
|
+
<div class="line"><a name="l00582"></a><span class="lineno"> 582</span>  <span class="keywordflow">if</span> (priority != other.priority)</div>
|
|
2283
|
+
<div class="line"><a name="l00583"></a><span class="lineno"> 583</span>  {</div>
|
|
2284
|
+
<div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  <span class="keywordflow">return</span> priority > other.priority;</div>
|
|
2285
|
+
<div class="line"><a name="l00585"></a><span class="lineno"> 585</span>  }</div>
|
|
2286
|
+
<div class="line"><a name="l00586"></a><span class="lineno"> 586</span>  <span class="keywordflow">else</span></div>
|
|
2287
|
+
<div class="line"><a name="l00587"></a><span class="lineno"> 587</span>  {</div>
|
|
2288
|
+
<div class="line"><a name="l00588"></a><span class="lineno"> 588</span>  <span class="keywordflow">return</span> func > other.func;</div>
|
|
2289
|
+
<div class="line"><a name="l00589"></a><span class="lineno"> 589</span>  }</div>
|
|
2290
|
+
<div class="line"><a name="l00590"></a><span class="lineno"> 590</span>  }</div>
|
|
2291
|
+
<div class="line"><a name="l00591"></a><span class="lineno"> 591</span>  };</div>
|
|
2292
|
+
<div class="line"><a name="l00592"></a><span class="lineno"> 592</span>  </div>
|
|
2293
|
+
<div class="line"><a name="l00593"></a><span class="lineno"> 593</span>  std::priority_queue<LLVMGlobalFunction, std::vector<LLVMGlobalFunction>,</div>
|
|
2294
|
+
<div class="line"><a name="l00594"></a><span class="lineno"> 594</span>  greater<LLVMGlobalFunction>></div>
|
|
2295
|
+
<div class="line"><a name="l00595"></a><span class="lineno"> 595</span>  queue;</div>
|
|
2296
|
+
<div class="line"><a name="l00596"></a><span class="lineno"> 596</span>  std::vector<const Function* > result;</div>
|
|
2297
|
+
<div class="line"><a name="l00597"></a><span class="lineno"> 597</span>  </div>
|
|
2298
|
+
<div class="line"><a name="l00598"></a><span class="lineno"> 598</span>  <span class="comment">// The @llvm.global_ctors/dtors global variable is an array of struct. Each</span></div>
|
|
2299
|
+
<div class="line"><a name="l00599"></a><span class="lineno"> 599</span>  <span class="comment">// struct has three fields: {i32 priority, void ()* @ctor/dtor, i8* @data}.</span></div>
|
|
2300
|
+
<div class="line"><a name="l00600"></a><span class="lineno"> 600</span>  <span class="comment">// First get the array here.</span></div>
|
|
2301
|
+
<div class="line"><a name="l00601"></a><span class="lineno"> 601</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5ae718cba37d8e34d2946530dc098c8e">ConstantArray</a> *globalFuncArray =</div>
|
|
2302
|
+
<div class="line"><a name="l00602"></a><span class="lineno"> 602</span>  SVFUtil::dyn_cast<ConstantArray>(global->getInitializer()))</div>
|
|
2303
|
+
<div class="line"><a name="l00603"></a><span class="lineno"> 603</span>  {</div>
|
|
2304
|
+
<div class="line"><a name="l00604"></a><span class="lineno"> 604</span>  <span class="comment">// Get each struct in the array.</span></div>
|
|
2305
|
+
<div class="line"><a name="l00605"></a><span class="lineno"> 605</span>  <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < globalFuncArray->getNumOperands(); ++i)</div>
|
|
2306
|
+
<div class="line"><a name="l00606"></a><span class="lineno"> 606</span>  {</div>
|
|
2307
|
+
<div class="line"><a name="l00607"></a><span class="lineno"> 607</span>  <span class="keywordflow">if</span> (</div>
|
|
2308
|
+
<div class="line"><a name="l00608"></a><span class="lineno"> 608</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a2b28f48dde0a9a91d251e654ce1f9477">ConstantStruct</a> *globalFuncItem =</div>
|
|
2309
|
+
<div class="line"><a name="l00609"></a><span class="lineno"> 609</span>  SVFUtil::dyn_cast<ConstantStruct>(</div>
|
|
2310
|
+
<div class="line"><a name="l00610"></a><span class="lineno"> 610</span>  globalFuncArray->getOperand(i)))</div>
|
|
2311
|
+
<div class="line"><a name="l00611"></a><span class="lineno"> 611</span>  {</div>
|
|
2312
|
+
<div class="line"><a name="l00612"></a><span class="lineno"> 612</span>  </div>
|
|
2313
|
+
<div class="line"><a name="l00613"></a><span class="lineno"> 613</span>  <span class="comment">// Extract priority and function from the struct</span></div>
|
|
2314
|
+
<div class="line"><a name="l00614"></a><span class="lineno"> 614</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a>* priority = SVFUtil::dyn_cast<ConstantInt>(</div>
|
|
2315
|
+
<div class="line"><a name="l00615"></a><span class="lineno"> 615</span>  globalFuncItem->getOperand(0));</div>
|
|
2316
|
+
<div class="line"><a name="l00616"></a><span class="lineno"> 616</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func = SVFUtil::dyn_cast<Function>(</div>
|
|
2317
|
+
<div class="line"><a name="l00617"></a><span class="lineno"> 617</span>  globalFuncItem->getOperand(1));</div>
|
|
2318
|
+
<div class="line"><a name="l00618"></a><span class="lineno"> 618</span>  </div>
|
|
2319
|
+
<div class="line"><a name="l00619"></a><span class="lineno"> 619</span>  <span class="keywordflow">if</span> (priority && func)</div>
|
|
2320
|
+
<div class="line"><a name="l00620"></a><span class="lineno"> 620</span>  {</div>
|
|
2321
|
+
<div class="line"><a name="l00621"></a><span class="lineno"> 621</span>  queue.push(LLVMGlobalFunction(priority</div>
|
|
2322
|
+
<div class="line"><a name="l00622"></a><span class="lineno"> 622</span>  ->getZExtValue(),</div>
|
|
2323
|
+
<div class="line"><a name="l00623"></a><span class="lineno"> 623</span>  func));</div>
|
|
2324
|
+
<div class="line"><a name="l00624"></a><span class="lineno"> 624</span>  }</div>
|
|
2325
|
+
<div class="line"><a name="l00625"></a><span class="lineno"> 625</span>  }</div>
|
|
2326
|
+
<div class="line"><a name="l00626"></a><span class="lineno"> 626</span>  }</div>
|
|
2327
|
+
<div class="line"><a name="l00627"></a><span class="lineno"> 627</span>  }</div>
|
|
2328
|
+
<div class="line"><a name="l00628"></a><span class="lineno"> 628</span>  </div>
|
|
2329
|
+
<div class="line"><a name="l00629"></a><span class="lineno"> 629</span>  <span class="comment">// Generate a sorted vector of functions from the priority queue.</span></div>
|
|
2330
|
+
<div class="line"><a name="l00630"></a><span class="lineno"> 630</span>  <span class="keywordflow">while</span> (!queue.empty())</div>
|
|
2331
|
+
<div class="line"><a name="l00631"></a><span class="lineno"> 631</span>  {</div>
|
|
2332
|
+
<div class="line"><a name="l00632"></a><span class="lineno"> 632</span>  result.push_back(queue.top().func);</div>
|
|
2333
|
+
<div class="line"><a name="l00633"></a><span class="lineno"> 633</span>  queue.pop();</div>
|
|
2334
|
+
<div class="line"><a name="l00634"></a><span class="lineno"> 634</span>  }</div>
|
|
2335
|
+
<div class="line"><a name="l00635"></a><span class="lineno"> 635</span>  <span class="keywordflow">return</span> result;</div>
|
|
2336
|
+
<div class="line"><a name="l00636"></a><span class="lineno"> 636</span> }</div>
|
|
2318
2337
|
</div><!-- fragment -->
|
|
2319
2338
|
</div>
|
|
2320
2339
|
</div>
|
|
@@ -2398,16 +2417,16 @@ Friends</h2></td></tr>
|
|
|
2398
2417
|
|
|
2399
2418
|
<p>Get LLVM Type. </p>
|
|
2400
2419
|
|
|
2401
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#
|
|
2402
|
-
<div class="fragment"><div class="line"><a name="
|
|
2403
|
-
<div class="line"><a name="
|
|
2404
|
-
<div class="line"><a name="
|
|
2405
|
-
<div class="line"><a name="
|
|
2406
|
-
<div class="line"><a name="
|
|
2407
|
-
<div class="line"><a name="
|
|
2408
|
-
<div class="line"><a name="
|
|
2409
|
-
<div class="line"><a name="
|
|
2410
|
-
<div class="line"><a name="
|
|
2420
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01164">1164</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
|
|
2421
|
+
<div class="fragment"><div class="line"><a name="l01165"></a><span class="lineno"> 1165</span> {</div>
|
|
2422
|
+
<div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>  <span class="keywordflow">for</span>(LLVMType2SVFTypeMap::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">LLVMType2SVFType</a>.begin(), eit = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">LLVMType2SVFType</a>.end(); it!=eit; ++it)</div>
|
|
2423
|
+
<div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>  {</div>
|
|
2424
|
+
<div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>  <span class="keywordflow">if</span> (it->second == T)</div>
|
|
2425
|
+
<div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>  <span class="keywordflow">return</span> it->first;</div>
|
|
2426
|
+
<div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>  }</div>
|
|
2427
|
+
<div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>  assert(<span class="keyword">false</span> && <span class="stringliteral">"can't find the corresponding LLVM Type"</span>);</div>
|
|
2428
|
+
<div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>  abort();</div>
|
|
2429
|
+
<div class="line"><a name="l01173"></a><span class="lineno"> 1173</span> }</div>
|
|
2411
2430
|
</div><!-- fragment -->
|
|
2412
2431
|
</div>
|
|
2413
2432
|
</div>
|
|
@@ -2467,10 +2486,10 @@ Friends</h2></td></tr>
|
|
|
2467
2486
|
</table>
|
|
2468
2487
|
</div><div class="memdoc">
|
|
2469
2488
|
|
|
2470
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#
|
|
2471
|
-
<div class="fragment"><div class="line"><a name="
|
|
2472
|
-
<div class="line"><a name="
|
|
2473
|
-
<div class="line"><a name="
|
|
2489
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#l00327">327</a> of file <a class="el" href="LLVMModule_8h_source.html">LLVMModule.h</a>.</p>
|
|
2490
|
+
<div class="fragment"><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  {</div>
|
|
2491
|
+
<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a8afb7ab3ee4632e78d546e549110e74c">getModule</a>(0);</div>
|
|
2492
|
+
<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  }</div>
|
|
2474
2493
|
</div><!-- fragment -->
|
|
2475
2494
|
</div>
|
|
2476
2495
|
</div>
|
|
@@ -2583,21 +2602,21 @@ Friends</h2></td></tr>
|
|
|
2583
2602
|
</table>
|
|
2584
2603
|
</div><div class="memdoc">
|
|
2585
2604
|
|
|
2586
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#
|
|
2587
|
-
<div class="fragment"><div class="line"><a name="
|
|
2588
|
-
<div class="line"><a name="
|
|
2589
|
-
<div class="line"><a name="
|
|
2590
|
-
<div class="line"><a name="
|
|
2591
|
-
<div class="line"><a name="
|
|
2592
|
-
<div class="line"><a name="
|
|
2593
|
-
<div class="line"><a name="
|
|
2594
|
-
<div class="line"><a name="
|
|
2595
|
-
<div class="line"><a name="
|
|
2596
|
-
<div class="line"><a name="
|
|
2597
|
-
<div class="line"><a name="
|
|
2598
|
-
<div class="line"><a name="
|
|
2599
|
-
<div class="line"><a name="
|
|
2600
|
-
<div class="line"><a name="
|
|
2605
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01106">1106</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
|
|
2606
|
+
<div class="fragment"><div class="line"><a name="l01107"></a><span class="lineno"> 1107</span> {</div>
|
|
2607
|
+
<div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>  LLVMConst2SVFConstMap::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a4b94c96898dbbc71bc1cee04786cf3dc">LLVMConst2SVFConst</a>.find(oc);</div>
|
|
2608
|
+
<div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>  <span class="keywordflow">if</span>(it!=<a class="code" href="classSVF_1_1LLVMModuleSet.html#a4b94c96898dbbc71bc1cee04786cf3dc">LLVMConst2SVFConst</a>.end())</div>
|
|
2609
|
+
<div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>  {</div>
|
|
2610
|
+
<div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>  <span class="keywordflow">return</span> it->second;</div>
|
|
2611
|
+
<div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>  }</div>
|
|
2612
|
+
<div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>  <span class="keywordflow">else</span></div>
|
|
2613
|
+
<div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>  {</div>
|
|
2614
|
+
<div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>  <a class="code" href="classSVF_1_1SVFConstant.html">SVFConstant</a>* svfoc = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFConstant.html">SVFConstant</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(oc->getType()));</div>
|
|
2615
|
+
<div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a43832e93a42ae43d44b0cc160981678f">svfModule</a>-><a class="code" href="classSVF_1_1SVFModule.html#ae64d24569942d7c4b18d2198be4839f3">addConstant</a>(svfoc);</div>
|
|
2616
|
+
<div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5badf03aeb1ebda02bc186bbb58a892a">addOtherConstantMap</a>(oc,svfoc);</div>
|
|
2617
|
+
<div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>  <span class="keywordflow">return</span> svfoc;</div>
|
|
2618
|
+
<div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>  }</div>
|
|
2619
|
+
<div class="line"><a name="l01120"></a><span class="lineno"> 1120</span> }</div>
|
|
2601
2620
|
</div><!-- fragment -->
|
|
2602
2621
|
</div>
|
|
2603
2622
|
</div>
|
|
@@ -2684,49 +2703,49 @@ Friends</h2></td></tr>
|
|
|
2684
2703
|
</div><div class="memdoc">
|
|
2685
2704
|
<p>bitwidth == 1 : cint has value from getZExtValue() because <code>bool true</code> will be translated to -1 using sign extension (i.e., getSExtValue). bitwidth <=64 1 : cint has value from getSExtValue() bitwidth >64 1 : cint has value 0 because it represents an invalid int</p>
|
|
2686
2705
|
|
|
2687
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#
|
|
2688
|
-
<div class="fragment"><div class="line"><a name="
|
|
2689
|
-
<div class="line"><a name="
|
|
2690
|
-
<div class="line"><a name="
|
|
2691
|
-
<div class="line"><a name="
|
|
2692
|
-
<div class="line"><a name="
|
|
2693
|
-
<div class="line"><a name="
|
|
2694
|
-
<div class="line"><a name="
|
|
2695
|
-
<div class="line"><a name="
|
|
2696
|
-
<div class="line"><a name="
|
|
2697
|
-
<div class="line"><a name="
|
|
2698
|
-
<div class="line"><a name="
|
|
2699
|
-
<div class="line"><a name="
|
|
2700
|
-
<div class="line"><a name="
|
|
2701
|
-
<div class="line"><a name="
|
|
2702
|
-
<div class="line"><a name="
|
|
2703
|
-
<div class="line"><a name="
|
|
2704
|
-
<div class="line"><a name="
|
|
2705
|
-
<div class="line"><a name="
|
|
2706
|
-
<div class="line"><a name="
|
|
2707
|
-
<div class="line"><a name="
|
|
2708
|
-
<div class="line"><a name="
|
|
2709
|
-
<div class="line"><a name="
|
|
2710
|
-
<div class="line"><a name="
|
|
2711
|
-
<div class="line"><a name="
|
|
2712
|
-
<div class="line"><a name="
|
|
2713
|
-
<div class="line"><a name="
|
|
2714
|
-
<div class="line"><a name="
|
|
2715
|
-
<div class="line"><a name="
|
|
2716
|
-
<div class="line"><a name="
|
|
2717
|
-
<div class="line"><a name="
|
|
2718
|
-
<div class="line"><a name="
|
|
2719
|
-
<div class="line"><a name="
|
|
2720
|
-
<div class="line"><a name="
|
|
2721
|
-
<div class="line"><a name="
|
|
2722
|
-
<div class="line"><a name="
|
|
2723
|
-
<div class="line"><a name="
|
|
2724
|
-
<div class="line"><a name="
|
|
2725
|
-
<div class="line"><a name="
|
|
2726
|
-
<div class="line"><a name="
|
|
2727
|
-
<div class="line"><a name="
|
|
2728
|
-
<div class="line"><a name="
|
|
2729
|
-
<div class="line"><a name="
|
|
2706
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01059">1059</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
|
|
2707
|
+
<div class="fragment"><div class="line"><a name="l01060"></a><span class="lineno"> 1060</span> {</div>
|
|
2708
|
+
<div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>  LLVMConst2SVFConstMap::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a4b94c96898dbbc71bc1cee04786cf3dc">LLVMConst2SVFConst</a>.find(cd);</div>
|
|
2709
|
+
<div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>  <span class="keywordflow">if</span>(it!=<a class="code" href="classSVF_1_1LLVMModuleSet.html#a4b94c96898dbbc71bc1cee04786cf3dc">LLVMConst2SVFConst</a>.end())</div>
|
|
2710
|
+
<div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>  {</div>
|
|
2711
|
+
<div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>  assert(SVFUtil::isa<SVFConstantData>(it->second) && <span class="stringliteral">"not a SVFConstantData type!"</span>);</div>
|
|
2712
|
+
<div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>  <span class="keywordflow">return</span> SVFUtil::cast<SVFConstantData>(it->second);</div>
|
|
2713
|
+
<div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>  }</div>
|
|
2714
|
+
<div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>  <span class="keywordflow">else</span></div>
|
|
2715
|
+
<div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>  {</div>
|
|
2716
|
+
<div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>  <a class="code" href="classSVF_1_1SVFConstantData.html">SVFConstantData</a>* svfcd = <span class="keyword">nullptr</span>;</div>
|
|
2717
|
+
<div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a>* cint = SVFUtil::dyn_cast<ConstantInt>(cd))</div>
|
|
2718
|
+
<div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>  {</div>
|
|
2719
|
+
<div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>  <span class="keywordflow">if</span>(cint->getBitWidth() == 1)</div>
|
|
2720
|
+
<div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>  svfcd = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFConstantInt.html">SVFConstantInt</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(cint->getType()), cint->getZExtValue(), cint->getZExtValue());</div>
|
|
2721
|
+
<div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(cint->getBitWidth() <= 64 && cint->getBitWidth() > 1)</div>
|
|
2722
|
+
<div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>  svfcd = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFConstantInt.html">SVFConstantInt</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(cint->getType()), cint->getZExtValue(), cint->getSExtValue());</div>
|
|
2723
|
+
<div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>  <span class="keywordflow">else</span></div>
|
|
2724
|
+
<div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>  svfcd = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFConstantInt.html">SVFConstantInt</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(cint->getType()), 0, 0);</div>
|
|
2725
|
+
<div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>  }</div>
|
|
2726
|
+
<div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ad49e4222ba46d9490b87a80df8b46800">ConstantFP</a>* cfp = SVFUtil::dyn_cast<ConstantFP>(cd))</div>
|
|
2727
|
+
<div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>  {</div>
|
|
2728
|
+
<div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>  <span class="keywordtype">double</span> dval = 0;</div>
|
|
2729
|
+
<div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>  <span class="comment">// TODO: Why only double is considered? What about float?</span></div>
|
|
2730
|
+
<div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>  <span class="keywordflow">if</span>(cfp->isNormalFP() && (&cfp->getValueAPF().getSemantics()== &llvm::APFloatBase::IEEEdouble()))</div>
|
|
2731
|
+
<div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>  dval = cfp->getValueAPF().convertToDouble();</div>
|
|
2732
|
+
<div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>  svfcd = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFConstantFP.html">SVFConstantFP</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(cd->getType()), dval);</div>
|
|
2733
|
+
<div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>  }</div>
|
|
2734
|
+
<div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa<ConstantPointerNull>(cd))</div>
|
|
2735
|
+
<div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>  svfcd = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFConstantNullPtr.html">SVFConstantNullPtr</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(cd->getType()));</div>
|
|
2736
|
+
<div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<UndefValue>(cd))</div>
|
|
2737
|
+
<div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>  svfcd = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFBlackHoleValue.html">SVFBlackHoleValue</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(cd->getType()));</div>
|
|
2738
|
+
<div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>  <span class="keywordflow">else</span></div>
|
|
2739
|
+
<div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>  svfcd = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFConstantData.html">SVFConstantData</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(cd->getType()));</div>
|
|
2740
|
+
<div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>  </div>
|
|
2741
|
+
<div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>  <span class="keywordflow">if</span> (cd->hasName())</div>
|
|
2742
|
+
<div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>  svfcd-><a class="code" href="classSVF_1_1SVFValue.html#a8325774df9d65d78ef6a66fef59b9a97">setName</a>(cd->getName().str());</div>
|
|
2743
|
+
<div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>  </div>
|
|
2744
|
+
<div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a43832e93a42ae43d44b0cc160981678f">svfModule</a>-><a class="code" href="classSVF_1_1SVFModule.html#ae64d24569942d7c4b18d2198be4839f3">addConstant</a>(svfcd);</div>
|
|
2745
|
+
<div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#af4bd487b3b6efe55bf869b869f5e8a80">addConstantDataMap</a>(cd,svfcd);</div>
|
|
2746
|
+
<div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>  <span class="keywordflow">return</span> svfcd;</div>
|
|
2747
|
+
<div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>  }</div>
|
|
2748
|
+
<div class="line"><a name="l01104"></a><span class="lineno"> 1104</span> }</div>
|
|
2730
2749
|
</div><!-- fragment -->
|
|
2731
2750
|
</div>
|
|
2732
2751
|
</div>
|
|
@@ -2789,21 +2808,21 @@ Friends</h2></td></tr>
|
|
|
2789
2808
|
|
|
2790
2809
|
<p>Get the corresponding Function based on its name. </p>
|
|
2791
2810
|
|
|
2792
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#
|
|
2793
|
-
<div class="fragment"><div class="line"><a name="
|
|
2794
|
-
<div class="line"><a name="
|
|
2795
|
-
<div class="line"><a name="
|
|
2796
|
-
<div class="line"><a name="
|
|
2797
|
-
<div class="line"><a name="
|
|
2798
|
-
<div class="line"><a name="
|
|
2799
|
-
<div class="line"><a name="
|
|
2800
|
-
<div class="line"><a name="
|
|
2801
|
-
<div class="line"><a name="
|
|
2802
|
-
<div class="line"><a name="
|
|
2803
|
-
<div class="line"><a name="
|
|
2804
|
-
<div class="line"><a name="
|
|
2805
|
-
<div class="line"><a name="
|
|
2806
|
-
<div class="line"><a name="
|
|
2811
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#l00257">257</a> of file <a class="el" href="LLVMModule_8h_source.html">LLVMModule.h</a>.</p>
|
|
2812
|
+
<div class="fragment"><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  {</div>
|
|
2813
|
+
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun = <span class="keyword">nullptr</span>;</div>
|
|
2814
|
+
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  </div>
|
|
2815
|
+
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <span class="keywordflow">for</span> (<a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> i = 0; i < <a class="code" href="classSVF_1_1LLVMModuleSet.html#ac59b07cafcbacc950eefea4082425b63">llvmModuleSet</a>-><a class="code" href="classSVF_1_1LLVMModuleSet.html#ae265a7f3cc7367d62013e0f15cf3d233">getModuleNum</a>(); ++i)</div>
|
|
2816
|
+
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  {</div>
|
|
2817
|
+
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>* mod = <a class="code" href="classSVF_1_1LLVMModuleSet.html#ac59b07cafcbacc950eefea4082425b63">llvmModuleSet</a>-><a class="code" href="classSVF_1_1LLVMModuleSet.html#a8afb7ab3ee4632e78d546e549110e74c">getModule</a>(i);</div>
|
|
2818
|
+
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  fun = mod->getFunction(<a class="code" href="cJSON_8h.html#a25d22ecc7e656d2c59332072684e8766">name</a>);</div>
|
|
2819
|
+
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  <span class="keywordflow">if</span> (fun)</div>
|
|
2820
|
+
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  {</div>
|
|
2821
|
+
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#ac59b07cafcbacc950eefea4082425b63">llvmModuleSet</a>-><a class="code" href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">getSVFFunction</a>(fun);</div>
|
|
2822
|
+
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  }</div>
|
|
2823
|
+
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  }</div>
|
|
2824
|
+
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
|
|
2825
|
+
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  }</div>
|
|
2807
2826
|
</div><!-- fragment -->
|
|
2808
2827
|
</div>
|
|
2809
2828
|
</div>
|
|
@@ -2920,24 +2939,24 @@ Friends</h2></td></tr>
|
|
|
2920
2939
|
</table>
|
|
2921
2940
|
</div><div class="memdoc">
|
|
2922
2941
|
|
|
2923
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#
|
|
2924
|
-
<div class="fragment"><div class="line"><a name="
|
|
2925
|
-
<div class="line"><a name="
|
|
2926
|
-
<div class="line"><a name="
|
|
2927
|
-
<div class="line"><a name="
|
|
2928
|
-
<div class="line"><a name="
|
|
2929
|
-
<div class="line"><a name="
|
|
2930
|
-
<div class="line"><a name="
|
|
2931
|
-
<div class="line"><a name="
|
|
2932
|
-
<div class="line"><a name="
|
|
2933
|
-
<div class="line"><a name="
|
|
2934
|
-
<div class="line"><a name="
|
|
2935
|
-
<div class="line"><a name="
|
|
2936
|
-
<div class="line"><a name="
|
|
2937
|
-
<div class="line"><a name="
|
|
2938
|
-
<div class="line"><a name="
|
|
2939
|
-
<div class="line"><a name="
|
|
2940
|
-
<div class="line"><a name="
|
|
2942
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01122">1122</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
|
|
2943
|
+
<div class="fragment"><div class="line"><a name="l01123"></a><span class="lineno"> 1123</span> {</div>
|
|
2944
|
+
<div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>  LLVMValue2SVFOtherValueMap::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#ac3e70bd338be3a54330be5dc10321eb3">LLVMValue2SVFOtherValue</a>.find(ov);</div>
|
|
2945
|
+
<div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>  <span class="keywordflow">if</span>(it!=<a class="code" href="classSVF_1_1LLVMModuleSet.html#ac3e70bd338be3a54330be5dc10321eb3">LLVMValue2SVFOtherValue</a>.end())</div>
|
|
2946
|
+
<div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>  {</div>
|
|
2947
|
+
<div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>  <span class="keywordflow">return</span> it->second;</div>
|
|
2948
|
+
<div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>  }</div>
|
|
2949
|
+
<div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>  <span class="keywordflow">else</span></div>
|
|
2950
|
+
<div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>  {</div>
|
|
2951
|
+
<div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>  <a class="code" href="classSVF_1_1SVFOtherValue.html">SVFOtherValue</a>* svfov =</div>
|
|
2952
|
+
<div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>  SVFUtil::isa<MetadataAsValue>(ov)</div>
|
|
2953
|
+
<div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>  ? <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFMetadataAsValue.html">SVFMetadataAsValue</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(ov->getType()))</div>
|
|
2954
|
+
<div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>  : new <a class="code" href="classSVF_1_1SVFOtherValue.html">SVFOtherValue</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(ov->getType()));</div>
|
|
2955
|
+
<div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a43832e93a42ae43d44b0cc160981678f">svfModule</a>-><a class="code" href="classSVF_1_1SVFModule.html#a48d7f0643bb228701dcabb88ef541fca">addOtherValue</a>(svfov);</div>
|
|
2956
|
+
<div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a023ea6f179433fa4d007c98ddc38e3c5">addOtherValueMap</a>(ov,svfov);</div>
|
|
2957
|
+
<div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>  <span class="keywordflow">return</span> svfov;</div>
|
|
2958
|
+
<div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>  }</div>
|
|
2959
|
+
<div class="line"><a name="l01139"></a><span class="lineno"> 1139</span> }</div>
|
|
2941
2960
|
</div><!-- fragment -->
|
|
2942
2961
|
</div>
|
|
2943
2962
|
</div>
|
|
@@ -2961,20 +2980,20 @@ Friends</h2></td></tr>
|
|
|
2961
2980
|
<p>Get or create <a class="el" href="classSVF_1_1SVFType.html">SVFType</a> and typeinfo </p>
|
|
2962
2981
|
<p>TODO: set the void* to every element for now (imprecise) For example, [getPointerTo(): char -—> i8*] [getPointerTo(): int -—> i8*] [getPointerTo(): struct -—> i8*]</p>
|
|
2963
2982
|
|
|
2964
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#
|
|
2965
|
-
<div class="fragment"><div class="line"><a name="
|
|
2966
|
-
<div class="line"><a name="
|
|
2967
|
-
<div class="line"><a name="
|
|
2968
|
-
<div class="line"><a name="
|
|
2969
|
-
<div class="line"><a name="
|
|
2970
|
-
<div class="line"><a name="
|
|
2971
|
-
<div class="line"><a name="
|
|
2972
|
-
<div class="line"><a name="
|
|
2973
|
-
<div class="line"><a name="
|
|
2974
|
-
<div class="line"><a name="
|
|
2975
|
-
<div class="line"><a name="
|
|
2976
|
-
<div class="line"><a name="
|
|
2977
|
-
<div class="line"><a name="
|
|
2983
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01178">1178</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
|
|
2984
|
+
<div class="fragment"><div class="line"><a name="l01179"></a><span class="lineno"> 1179</span> {</div>
|
|
2985
|
+
<div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>  assert(T && <span class="stringliteral">"SVFType should not be null"</span>);</div>
|
|
2986
|
+
<div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>  LLVMType2SVFTypeMap::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">LLVMType2SVFType</a>.find(T);</div>
|
|
2987
|
+
<div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>  <span class="keywordflow">if</span> (it != <a class="code" href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">LLVMType2SVFType</a>.end())</div>
|
|
2988
|
+
<div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>  <span class="keywordflow">return</span> it->second;</div>
|
|
2989
|
+
<div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>  </div>
|
|
2990
|
+
<div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>  <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* svfType = <a class="code" href="classSVF_1_1LLVMModuleSet.html#aab7b08db9252ef7e21e54d019f44b073">addSVFTypeInfo</a>(T);</div>
|
|
2991
|
+
<div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>  <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* stinfo = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a1f6cc76c996a0577b20b8cedd83fff92">collectTypeInfo</a>(T);</div>
|
|
2992
|
+
<div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>  svfType-><a class="code" href="classSVF_1_1SVFType.html#aef5999ada62dac3cc946d832ac66948c">setTypeInfo</a>(stinfo);</div>
|
|
2993
|
+
<div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>  <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>* ptrTy = PointerType::getInt8PtrTy(<a class="code" href="classSVF_1_1LLVMModuleSet.html#ac1a9d20d62066ec4e181fad223669e32">getContext</a>());</div>
|
|
2994
|
+
<div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>  svfType-><a class="code" href="classSVF_1_1SVFType.html#a3ddabbd763acaaca28cacbabe5bc7f3b">setPointerTo</a>(SVFUtil::cast<SVFPointerType>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(ptrTy)));</div>
|
|
2995
|
+
<div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>  <span class="keywordflow">return</span> svfType;</div>
|
|
2996
|
+
<div class="line"><a name="l01196"></a><span class="lineno"> 1196</span> }</div>
|
|
2978
2997
|
</div><!-- fragment -->
|
|
2979
2998
|
</div>
|
|
2980
2999
|
</div>
|
|
@@ -2994,28 +3013,28 @@ Friends</h2></td></tr>
|
|
|
2994
3013
|
</table>
|
|
2995
3014
|
</div><div class="memdoc">
|
|
2996
3015
|
|
|
2997
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#
|
|
2998
|
-
<div class="fragment"><div class="line"><a name="
|
|
2999
|
-
<div class="line"><a name="
|
|
3000
|
-
<div class="line"><a name="
|
|
3001
|
-
<div class="line"><a name="
|
|
3002
|
-
<div class="line"><a name="
|
|
3003
|
-
<div class="line"><a name="
|
|
3004
|
-
<div class="line"><a name="
|
|
3005
|
-
<div class="line"><a name="
|
|
3006
|
-
<div class="line"><a name="
|
|
3007
|
-
<div class="line"><a name="
|
|
3008
|
-
<div class="line"><a name="
|
|
3009
|
-
<div class="line"><a name="
|
|
3010
|
-
<div class="line"><a name="
|
|
3011
|
-
<div class="line"><a name="
|
|
3012
|
-
<div class="line"><a name="
|
|
3013
|
-
<div class="line"><a name="
|
|
3014
|
-
<div class="line"><a name="
|
|
3015
|
-
<div class="line"><a name="
|
|
3016
|
-
<div class="line"><a name="
|
|
3017
|
-
<div class="line"><a name="
|
|
3018
|
-
<div class="line"><a name="
|
|
3016
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01141">1141</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
|
|
3017
|
+
<div class="fragment"><div class="line"><a name="l01142"></a><span class="lineno"> 1142</span> {</div>
|
|
3018
|
+
<div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun = SVFUtil::dyn_cast<Function>(value))</div>
|
|
3019
|
+
<div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">getSVFFunction</a>(fun);</div>
|
|
3020
|
+
<div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb = SVFUtil::dyn_cast<BasicBlock>(value))</div>
|
|
3021
|
+
<div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">getSVFBasicBlock</a>(bb);</div>
|
|
3022
|
+
<div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst = SVFUtil::dyn_cast<Instruction>(value))</div>
|
|
3023
|
+
<div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(inst);</div>
|
|
3024
|
+
<div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a58cdfbc4160cae08745b67844ac29801">Argument</a>* arg = SVFUtil::dyn_cast<Argument>(value))</div>
|
|
3025
|
+
<div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#ad3f66b40ad360003845253f452d6a711">getSVFArgument</a>(arg);</div>
|
|
3026
|
+
<div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">Constant</a>* cons = SVFUtil::dyn_cast<Constant>(value))</div>
|
|
3027
|
+
<div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>  {</div>
|
|
3028
|
+
<div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7332f8059ea95472dcc231de884a5768">ConstantData</a>* cd = SVFUtil::dyn_cast<ConstantData>(cons))</div>
|
|
3029
|
+
<div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a25821b0feeb3b08e00ec9d444520b727">getSVFConstantData</a>(cd);</div>
|
|
3030
|
+
<div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a67f3f86344f028cacfbeb08caaf7bb0f">GlobalValue</a>* glob = SVFUtil::dyn_cast<GlobalValue>(cons))</div>
|
|
3031
|
+
<div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a3cbba2eb702a3481478b2590dfffa352">getSVFGlobalValue</a>(glob);</div>
|
|
3032
|
+
<div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>  <span class="keywordflow">else</span></div>
|
|
3033
|
+
<div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a74256f36f0fdc242df9729906c34efbc">getOtherSVFConstant</a>(cons);</div>
|
|
3034
|
+
<div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>  }</div>
|
|
3035
|
+
<div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>  <span class="keywordflow">else</span></div>
|
|
3036
|
+
<div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a0ef17c1d5e6a95c597d2334ea577a965">getSVFOtherValue</a>(value);</div>
|
|
3037
|
+
<div class="line"><a name="l01162"></a><span class="lineno"> 1162</span> }</div>
|
|
3019
3038
|
</div><!-- fragment -->
|
|
3020
3039
|
</div>
|
|
3021
3040
|
</div>
|
|
@@ -3043,18 +3062,18 @@ Friends</h2></td></tr>
|
|
|
3043
3062
|
</table>
|
|
3044
3063
|
</div><div class="memdoc">
|
|
3045
3064
|
|
|
3046
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#
|
|
3047
|
-
<div class="fragment"><div class="line"><a name="
|
|
3048
|
-
<div class="line"><a name="
|
|
3049
|
-
<div class="line"><a name="
|
|
3050
|
-
<div class="line"><a name="
|
|
3051
|
-
<div class="line"><a name="
|
|
3052
|
-
<div class="line"><a name="
|
|
3053
|
-
<div class="line"><a name="
|
|
3054
|
-
<div class="line"><a name="
|
|
3055
|
-
<div class="line"><a name="
|
|
3056
|
-
<div class="line"><a name="
|
|
3057
|
-
<div class="line"><a name="
|
|
3065
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#l00288">288</a> of file <a class="el" href="LLVMModule_8h_source.html">LLVMModule.h</a>.</p>
|
|
3066
|
+
<div class="fragment"><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  {</div>
|
|
3067
|
+
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  <span class="keywordflow">if</span>(fun->isDeclaration() && !<a class="code" href="classSVF_1_1LLVMModuleSet.html#a32558da64f03452c502ec57d1e106427">hasDefinition</a>(fun))</div>
|
|
3068
|
+
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
3069
|
+
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  </div>
|
|
3070
|
+
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* funDef = fun;</div>
|
|
3071
|
+
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  <span class="keywordflow">if</span>(fun->isDeclaration() && <a class="code" href="classSVF_1_1LLVMModuleSet.html#a32558da64f03452c502ec57d1e106427">hasDefinition</a>(fun))</div>
|
|
3072
|
+
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  funDef = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a6e670254385050b9a5e612f881b07b9c">getDefinition</a>(fun);</div>
|
|
3073
|
+
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  </div>
|
|
3074
|
+
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  FunDefToDeclsMapTy::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a377cefaad4b688ab6edf94ba4abe00ee">FunDefToDeclsMap</a>.find(funDef);</div>
|
|
3075
|
+
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  <span class="keywordflow">return</span> it != <a class="code" href="classSVF_1_1LLVMModuleSet.html#a377cefaad4b688ab6edf94ba4abe00ee">FunDefToDeclsMap</a>.end();</div>
|
|
3076
|
+
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  }</div>
|
|
3058
3077
|
</div><!-- fragment -->
|
|
3059
3078
|
</div>
|
|
3060
3079
|
</div>
|
|
@@ -3082,12 +3101,12 @@ Friends</h2></td></tr>
|
|
|
3082
3101
|
</table>
|
|
3083
3102
|
</div><div class="memdoc">
|
|
3084
3103
|
|
|
3085
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#
|
|
3086
|
-
<div class="fragment"><div class="line"><a name="
|
|
3087
|
-
<div class="line"><a name="
|
|
3088
|
-
<div class="line"><a name="
|
|
3089
|
-
<div class="line"><a name="
|
|
3090
|
-
<div class="line"><a name="
|
|
3104
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#l00273">273</a> of file <a class="el" href="LLVMModule_8h_source.html">LLVMModule.h</a>.</p>
|
|
3105
|
+
<div class="fragment"><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  {</div>
|
|
3106
|
+
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  assert(fun->isDeclaration() && <span class="stringliteral">"not a function declaration?"</span>);</div>
|
|
3107
|
+
<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  FunDeclToDefMapTy::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#aee80b29e5246e3eaa0e30e165346101f">FunDeclToDefMap</a>.find(fun);</div>
|
|
3108
|
+
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  <span class="keywordflow">return</span> it != <a class="code" href="classSVF_1_1LLVMModuleSet.html#aee80b29e5246e3eaa0e30e165346101f">FunDeclToDefMap</a>.end();</div>
|
|
3109
|
+
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  }</div>
|
|
3091
3110
|
</div><!-- fragment -->
|
|
3092
3111
|
</div>
|
|
3093
3112
|
</div>
|
|
@@ -3117,11 +3136,11 @@ Friends</h2></td></tr>
|
|
|
3117
3136
|
|
|
3118
3137
|
<p>Global to rep. </p>
|
|
3119
3138
|
|
|
3120
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#
|
|
3121
|
-
<div class="fragment"><div class="line"><a name="
|
|
3122
|
-
<div class="line"><a name="
|
|
3123
|
-
<div class="line"><a name="
|
|
3124
|
-
<div class="line"><a name="
|
|
3139
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#l00313">313</a> of file <a class="el" href="LLVMModule_8h_source.html">LLVMModule.h</a>.</p>
|
|
3140
|
+
<div class="fragment"><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  {</div>
|
|
3141
|
+
<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  GlobalDefToRepMapTy::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#ae2a1fa0b908cf372c50af90e62c4bf2b">GlobalDefToRepMap</a>.find(val);</div>
|
|
3142
|
+
<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  <span class="keywordflow">return</span> it != <a class="code" href="classSVF_1_1LLVMModuleSet.html#ae2a1fa0b908cf372c50af90e62c4bf2b">GlobalDefToRepMap</a>.end();</div>
|
|
3143
|
+
<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  }</div>
|
|
3125
3144
|
</div><!-- fragment -->
|
|
3126
3145
|
</div>
|
|
3127
3146
|
</div>
|
|
@@ -3159,68 +3178,68 @@ Friends</h2></td></tr>
|
|
|
3159
3178
|
</table>
|
|
3160
3179
|
</div><div class="memdoc">
|
|
3161
3180
|
|
|
3162
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#
|
|
3163
|
-
<div class="fragment"><div class="line"><a name="
|
|
3164
|
-
<div class="line"><a name="
|
|
3165
|
-
<div class="line"><a name="
|
|
3166
|
-
<div class="line"><a name="
|
|
3167
|
-
<div class="line"><a name="
|
|
3168
|
-
<div class="line"><a name="
|
|
3169
|
-
<div class="line"><a name="
|
|
3170
|
-
<div class="line"><a name="
|
|
3171
|
-
<div class="line"><a name="
|
|
3172
|
-
<div class="line"><a name="
|
|
3173
|
-
<div class="line"><a name="
|
|
3174
|
-
<div class="line"><a name="
|
|
3175
|
-
<div class="line"><a name="
|
|
3176
|
-
<div class="line"><a name="
|
|
3177
|
-
<div class="line"><a name="
|
|
3178
|
-
<div class="line"><a name="
|
|
3179
|
-
<div class="line"><a name="
|
|
3180
|
-
<div class="line"><a name="
|
|
3181
|
-
<div class="line"><a name="
|
|
3182
|
-
<div class="line"><a name="
|
|
3183
|
-
<div class="line"><a name="
|
|
3184
|
-
<div class="line"><a name="
|
|
3185
|
-
<div class="line"><a name="
|
|
3186
|
-
<div class="line"><a name="
|
|
3187
|
-
<div class="line"><a name="
|
|
3188
|
-
<div class="line"><a name="
|
|
3189
|
-
<div class="line"><a name="
|
|
3190
|
-
<div class="line"><a name="
|
|
3191
|
-
<div class="line"><a name="
|
|
3192
|
-
<div class="line"><a name="
|
|
3193
|
-
<div class="line"><a name="
|
|
3194
|
-
<div class="line"><a name="
|
|
3195
|
-
<div class="line"><a name="
|
|
3196
|
-
<div class="line"><a name="
|
|
3197
|
-
<div class="line"><a name="
|
|
3198
|
-
<div class="line"><a name="
|
|
3199
|
-
<div class="line"><a name="
|
|
3200
|
-
<div class="line"><a name="
|
|
3201
|
-
<div class="line"><a name="
|
|
3202
|
-
<div class="line"><a name="
|
|
3203
|
-
<div class="line"><a name="
|
|
3204
|
-
<div class="line"><a name="
|
|
3205
|
-
<div class="line"><a name="
|
|
3206
|
-
<div class="line"><a name="
|
|
3207
|
-
<div class="line"><a name="
|
|
3208
|
-
<div class="line"><a name="
|
|
3209
|
-
<div class="line"><a name="
|
|
3210
|
-
<div class="line"><a name="
|
|
3211
|
-
<div class="line"><a name="
|
|
3212
|
-
<div class="line"><a name="
|
|
3213
|
-
<div class="line"><a name="
|
|
3214
|
-
<div class="line"><a name="
|
|
3215
|
-
<div class="line"><a name="
|
|
3216
|
-
<div class="line"><a name="
|
|
3217
|
-
<div class="line"><a name="
|
|
3218
|
-
<div class="line"><a name="
|
|
3219
|
-
<div class="line"><a name="
|
|
3220
|
-
<div class="line"><a name="
|
|
3221
|
-
<div class="line"><a name="
|
|
3222
|
-
<div class="line"><a name="
|
|
3223
|
-
<div class="line"><a name="
|
|
3181
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00356">356</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
|
|
3182
|
+
<div class="fragment"><div class="line"><a name="l00357"></a><span class="lineno"> 357</span> {</div>
|
|
3183
|
+
<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  <span class="keywordflow">if</span> (fun->isDeclaration())</div>
|
|
3184
|
+
<div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  <span class="keywordflow">return</span>;</div>
|
|
3185
|
+
<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  <span class="comment">//process and stored dt & df</span></div>
|
|
3186
|
+
<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  <a class="code" href="namespaceSVF.html#aecbb42b8e9d17fa0189c50dda9fd5fdd">DominatorTree</a> dt;</div>
|
|
3187
|
+
<div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  <a class="code" href="namespaceSVF.html#ab44d20f806be99699895260b14a942d7">DominanceFrontier</a> df;</div>
|
|
3188
|
+
<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  dt.recalculate(<span class="keyword">const_cast<</span><a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>&<span class="keyword">></span>(*fun));</div>
|
|
3189
|
+
<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  df.analyze(dt);</div>
|
|
3190
|
+
<div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  <a class="code" href="namespaceSVF.html#a77e088bfe47c0b0ddcbbe0693dec6fe5">LoopInfo</a> loopInfo = <a class="code" href="namespaceSVF.html#a77e088bfe47c0b0ddcbbe0693dec6fe5">LoopInfo</a>(dt);</div>
|
|
3191
|
+
<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  <a class="code" href="namespaceSVF.html#ab34383ee87cd45eb485fa29db482ffef">PostDominatorTree</a> pdt = <a class="code" href="namespaceSVF.html#ab34383ee87cd45eb485fa29db482ffef">PostDominatorTree</a>(<span class="keyword">const_cast<</span><a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>&<span class="keyword">></span>(*fun));</div>
|
|
3192
|
+
<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  <a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html">SVFLoopAndDomInfo</a>* ld = svffun->getLoopAndDomInfo();</div>
|
|
3193
|
+
<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  </div>
|
|
3194
|
+
<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const SVFBasicBlock*,Set<const SVFBasicBlock*></a>> & dfBBsMap = ld-><a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#ae37546be7304c66b4eca2654d995eaa7">getDomFrontierMap</a>();</div>
|
|
3195
|
+
<div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  <span class="keywordflow">for</span> (DominanceFrontierBase::const_iterator dfIter = df.begin(), eDfIter = df.end(); dfIter != eDfIter; dfIter++)</div>
|
|
3196
|
+
<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  {</div>
|
|
3197
|
+
<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* keyBB = dfIter->first;</div>
|
|
3198
|
+
<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  <span class="keyword">const</span> std::set<BasicBlock* >& domSet = dfIter->second;</div>
|
|
3199
|
+
<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<const SVFBasicBlock*></a>& valueBasicBlocks = dfBBsMap[<a class="code" href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">getSVFBasicBlock</a>(keyBB)];</div>
|
|
3200
|
+
<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bbValue:domSet)</div>
|
|
3201
|
+
<div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  {</div>
|
|
3202
|
+
<div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  valueBasicBlocks.insert(<a class="code" href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">getSVFBasicBlock</a>(bbValue));</div>
|
|
3203
|
+
<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  }</div>
|
|
3204
|
+
<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  }</div>
|
|
3205
|
+
<div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  std::vector<const SVFBasicBlock*> reachableBBs;</div>
|
|
3206
|
+
<div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a9bd6f54920929e5ad35102ba2f2223da">LLVMUtil::getFunReachableBBs</a>(fun, reachableBBs);</div>
|
|
3207
|
+
<div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  ld-><a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#acc409e328f641a2c9512beeb727f58c7">setReachableBBs</a>(reachableBBs);</div>
|
|
3208
|
+
<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  </div>
|
|
3209
|
+
<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  <span class="keywordflow">for</span> (Function::const_iterator bit = fun->begin(), beit = fun->end(); bit!=beit; ++bit)</div>
|
|
3210
|
+
<div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  {</div>
|
|
3211
|
+
<div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> &bb = *bit;</div>
|
|
3212
|
+
<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* svfBB = <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">getSVFBasicBlock</a>(&bb);</div>
|
|
3213
|
+
<div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF.html#a827d09974dc7bf0849f96823cc2fee89">DomTreeNode</a>* dtNode = dt.getNode(&bb))</div>
|
|
3214
|
+
<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  {</div>
|
|
3215
|
+
<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  <a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#ad478ac88bc07cf4d6d0ad3517b2c4ab3">SVFLoopAndDomInfo::BBSet</a>& bbSet = ld-><a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#a2fc6b806a436d8fa65863f6cef99e716">getDomTreeMap</a>()[svfBB];</div>
|
|
3216
|
+
<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> domBB : *dtNode)</div>
|
|
3217
|
+
<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  {</div>
|
|
3218
|
+
<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  <span class="keyword">const</span> <span class="keyword">auto</span>* domSVFBB = <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">getSVFBasicBlock</a>(domBB->getBlock());</div>
|
|
3219
|
+
<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  bbSet.insert(domSVFBB);</div>
|
|
3220
|
+
<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  }</div>
|
|
3221
|
+
<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  }</div>
|
|
3222
|
+
<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  </div>
|
|
3223
|
+
<div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF.html#a827d09974dc7bf0849f96823cc2fee89">DomTreeNode</a>* pdtNode = pdt.getNode(&bb))</div>
|
|
3224
|
+
<div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  {</div>
|
|
3225
|
+
<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  <a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#ad478ac88bc07cf4d6d0ad3517b2c4ab3">SVFLoopAndDomInfo::BBSet</a>& bbSet = ld-><a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#ad07f95e790b5c3a50c864155aa20a083">getPostDomTreeMap</a>()[svfBB];</div>
|
|
3226
|
+
<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> domBB : *pdtNode)</div>
|
|
3227
|
+
<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  {</div>
|
|
3228
|
+
<div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  <span class="keyword">const</span> <span class="keyword">auto</span>* domSVFBB = <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">getSVFBasicBlock</a>(domBB->getBlock());</div>
|
|
3229
|
+
<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  bbSet.insert(domSVFBB);</div>
|
|
3230
|
+
<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  }</div>
|
|
3231
|
+
<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  }</div>
|
|
3232
|
+
<div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  </div>
|
|
3233
|
+
<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#abf85e29310b2e4df8925d00a5c081314">Loop</a>* loop = loopInfo.getLoopFor(&bb))</div>
|
|
3234
|
+
<div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  {</div>
|
|
3235
|
+
<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* loopBlock : loop->getBlocks())</div>
|
|
3236
|
+
<div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  {</div>
|
|
3237
|
+
<div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* loopbb = <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">getSVFBasicBlock</a>(loopBlock);</div>
|
|
3238
|
+
<div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  ld-><a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#aed2f125f7b8c21092b23d9727568ba50">addToBB2LoopMap</a>(svfBB, loopbb);</div>
|
|
3239
|
+
<div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  }</div>
|
|
3240
|
+
<div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  }</div>
|
|
3241
|
+
<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  }</div>
|
|
3242
|
+
<div class="line"><a name="l00417"></a><span class="lineno"> 417</span> }</div>
|
|
3224
3243
|
</div><!-- fragment -->
|
|
3225
3244
|
</div>
|
|
3226
3245
|
</div>
|
|
@@ -3248,57 +3267,57 @@ Friends</h2></td></tr>
|
|
|
3248
3267
|
</table>
|
|
3249
3268
|
</div><div class="memdoc">
|
|
3250
3269
|
|
|
3251
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#
|
|
3252
|
-
<div class="fragment"><div class="line"><a name="
|
|
3253
|
-
<div class="line"><a name="
|
|
3254
|
-
<div class="line"><a name="
|
|
3255
|
-
<div class="line"><a name="
|
|
3256
|
-
<div class="line"><a name="
|
|
3257
|
-
<div class="line"><a name="
|
|
3258
|
-
<div class="line"><a name="
|
|
3259
|
-
<div class="line"><a name="
|
|
3260
|
-
<div class="line"><a name="
|
|
3261
|
-
<div class="line"><a name="
|
|
3262
|
-
<div class="line"><a name="
|
|
3263
|
-
<div class="line"><a name="
|
|
3264
|
-
<div class="line"><a name="
|
|
3265
|
-
<div class="line"><a name="
|
|
3266
|
-
<div class="line"><a name="
|
|
3267
|
-
<div class="line"><a name="
|
|
3268
|
-
<div class="line"><a name="
|
|
3269
|
-
<div class="line"><a name="
|
|
3270
|
-
<div class="line"><a name="
|
|
3271
|
-
<div class="line"><a name="
|
|
3272
|
-
<div class="line"><a name="
|
|
3273
|
-
<div class="line"><a name="
|
|
3274
|
-
<div class="line"><a name="
|
|
3275
|
-
<div class="line"><a name="
|
|
3276
|
-
<div class="line"><a name="
|
|
3277
|
-
<div class="line"><a name="
|
|
3278
|
-
<div class="line"><a name="
|
|
3279
|
-
<div class="line"><a name="
|
|
3280
|
-
<div class="line"><a name="
|
|
3281
|
-
<div class="line"><a name="
|
|
3282
|
-
<div class="line"><a name="
|
|
3283
|
-
<div class="line"><a name="
|
|
3284
|
-
<div class="line"><a name="
|
|
3285
|
-
<div class="line"><a name="
|
|
3286
|
-
<div class="line"><a name="
|
|
3287
|
-
<div class="line"><a name="
|
|
3288
|
-
<div class="line"><a name="
|
|
3289
|
-
<div class="line"><a name="
|
|
3290
|
-
<div class="line"><a name="
|
|
3291
|
-
<div class="line"><a name="
|
|
3292
|
-
<div class="line"><a name="
|
|
3293
|
-
<div class="line"><a name="
|
|
3294
|
-
<div class="line"><a name="
|
|
3295
|
-
<div class="line"><a name="
|
|
3296
|
-
<div class="line"><a name="
|
|
3297
|
-
<div class="line"><a name="
|
|
3298
|
-
<div class="line"><a name="
|
|
3299
|
-
<div class="line"><a name="
|
|
3300
|
-
<div class="line"><a name="
|
|
3301
|
-
<div class="line"><a name="
|
|
3270
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00303">303</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
|
|
3271
|
+
<div class="fragment"><div class="line"><a name="l00304"></a><span class="lineno"> 304</span> {</div>
|
|
3272
|
+
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  <span class="keywordflow">for</span> (Function::const_iterator bit = func->begin(), ebit = func->end(); bit != ebit; ++bit)</div>
|
|
3273
|
+
<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  {</div>
|
|
3274
|
+
<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb = &*bit;</div>
|
|
3275
|
+
<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* svfbb = <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">getSVFBasicBlock</a>(bb);</div>
|
|
3276
|
+
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">succ_const_iterator</a> succ_it = succ_begin(bb); succ_it != succ_end(bb); succ_it++)</div>
|
|
3277
|
+
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  {</div>
|
|
3278
|
+
<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* svf_scc_bb = <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">getSVFBasicBlock</a>(*succ_it);</div>
|
|
3279
|
+
<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  svfbb-><a class="code" href="classSVF_1_1SVFBasicBlock.html#abfe3a1ce5fa364d9db7cd2d0e6a144ff">addSuccBasicBlock</a>(svf_scc_bb);</div>
|
|
3280
|
+
<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  }</div>
|
|
3281
|
+
<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a5c943191dc4e242704943e5f594ae99e">const_pred_iterator</a> pred_it = pred_begin(bb); pred_it != pred_end(bb); pred_it++)</div>
|
|
3282
|
+
<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  {</div>
|
|
3283
|
+
<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* svf_pred_bb = <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">getSVFBasicBlock</a>(*pred_it);</div>
|
|
3284
|
+
<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  svfbb-><a class="code" href="classSVF_1_1SVFBasicBlock.html#a38f8fdd93ef7222f408cbbb2a98a1cd5">addPredBasicBlock</a>(svf_pred_bb);</div>
|
|
3285
|
+
<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  }</div>
|
|
3286
|
+
<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  <span class="keywordflow">for</span> (BasicBlock::const_iterator iit = bb->begin(), eiit = bb->end(); iit != eiit; ++iit)</div>
|
|
3287
|
+
<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  {</div>
|
|
3288
|
+
<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst = &*iit;</div>
|
|
3289
|
+
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a>* call = SVFUtil::dyn_cast<CallBase>(inst))</div>
|
|
3290
|
+
<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  {</div>
|
|
3291
|
+
<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfinst = <a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(call);</div>
|
|
3292
|
+
<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  <a class="code" href="classSVF_1_1SVFCallInst.html">SVFCallInst</a>* svfcall = SVFUtil::cast<SVFCallInst>(svfinst);</div>
|
|
3293
|
+
<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  <span class="keyword">auto</span> called_llvmval = call->getCalledOperand()->stripPointerCasts();</div>
|
|
3294
|
+
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* called_llvmfunc = SVFUtil::dyn_cast<Function>(called_llvmval))</div>
|
|
3295
|
+
<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  {</div>
|
|
3296
|
+
<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* llvmfunc_def = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a3d34fcdfc98add848a34fd5259c11eb2">LLVMUtil::getDefFunForMultipleModule</a>(called_llvmfunc);</div>
|
|
3297
|
+
<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* callee = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">getSVFFunction</a>(llvmfunc_def);</div>
|
|
3298
|
+
<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  svfcall-><a class="code" href="classSVF_1_1SVFCallInst.html#a6dd304f555d2d2388c4430e57b0d2b91">setCalledOperand</a>(callee);</div>
|
|
3299
|
+
<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  }</div>
|
|
3300
|
+
<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  <span class="keywordflow">else</span></div>
|
|
3301
|
+
<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  {</div>
|
|
3302
|
+
<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  svfcall-><a class="code" href="classSVF_1_1SVFCallInst.html#a6dd304f555d2d2388c4430e57b0d2b91">setCalledOperand</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#afdd77bc1fca91f70b2ec362f1dacd392">getSVFValue</a>(called_llvmval));</div>
|
|
3303
|
+
<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  }</div>
|
|
3304
|
+
<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SVFVirtualCallInst.html">SVFVirtualCallInst</a>* virtualCall = SVFUtil::dyn_cast<SVFVirtualCallInst>(svfcall))</div>
|
|
3305
|
+
<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  {</div>
|
|
3306
|
+
<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  virtualCall->setVtablePtr(<a class="code" href="classSVF_1_1LLVMModuleSet.html#afdd77bc1fca91f70b2ec362f1dacd392">getSVFValue</a>(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a3a23aa54459a068e16c96e5b5eb72f77">LLVMUtil::getVCallVtblPtr</a>(call)));</div>
|
|
3307
|
+
<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  virtualCall->setFunIdxInVtable(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a718c8ec79f36cef5df2f4530541f2770">LLVMUtil::getVCallIdx</a>(call));</div>
|
|
3308
|
+
<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  virtualCall->setFunNameOfVirtualCall(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a41e64f3318e2bf368eebe9a104ef6ad9">LLVMUtil::getFunNameOfVCallSite</a>(call));</div>
|
|
3309
|
+
<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  }</div>
|
|
3310
|
+
<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  <span class="keywordflow">for</span>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i < call->arg_size(); i++)</div>
|
|
3311
|
+
<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  {</div>
|
|
3312
|
+
<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* svfval = <a class="code" href="classSVF_1_1LLVMModuleSet.html#afdd77bc1fca91f70b2ec362f1dacd392">getSVFValue</a>(call->getArgOperand(i));</div>
|
|
3313
|
+
<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  svfcall-><a class="code" href="classSVF_1_1SVFCallInst.html#ac979b49b449b97b2a23f195cb107ec77">addArgument</a>(svfval);</div>
|
|
3314
|
+
<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  }</div>
|
|
3315
|
+
<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  }</div>
|
|
3316
|
+
<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  <a class="code" href="namespaceSVF_1_1LLVMUtil.html#afbd60d5443c7fa1448813d00bb5d0fa7">LLVMUtil::getNextInsts</a>(inst, <a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(inst)->getSuccInstructions());</div>
|
|
3317
|
+
<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a4c94a6c02fb89c1a1604c87414956acd">LLVMUtil::getPrevInsts</a>(inst, <a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(inst)->getPredInstructions());</div>
|
|
3318
|
+
<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  }</div>
|
|
3319
|
+
<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  }</div>
|
|
3320
|
+
<div class="line"><a name="l00353"></a><span class="lineno"> 353</span> }</div>
|
|
3302
3321
|
</div><!-- fragment -->
|
|
3303
3322
|
</div>
|
|
3304
3323
|
</div>
|
|
@@ -3326,22 +3345,22 @@ Friends</h2></td></tr>
|
|
|
3326
3345
|
</div><div class="memdoc">
|
|
3327
3346
|
<p>Function</p>
|
|
3328
3347
|
|
|
3329
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#
|
|
3330
|
-
<div class="fragment"><div class="line"><a name="
|
|
3331
|
-
<div class="line"><a name="
|
|
3332
|
-
<div class="line"><a name="
|
|
3333
|
-
<div class="line"><a name="
|
|
3334
|
-
<div class="line"><a name="
|
|
3335
|
-
<div class="line"><a name="
|
|
3336
|
-
<div class="line"><a name="
|
|
3337
|
-
<div class="line"><a name="
|
|
3338
|
-
<div class="line"><a name="
|
|
3339
|
-
<div class="line"><a name="
|
|
3340
|
-
<div class="line"><a name="
|
|
3341
|
-
<div class="line"><a name="
|
|
3342
|
-
<div class="line"><a name="
|
|
3343
|
-
<div class="line"><a name="
|
|
3344
|
-
<div class="line"><a name="
|
|
3348
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00285">285</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
|
|
3349
|
+
<div class="fragment"><div class="line"><a name="l00286"></a><span class="lineno"> 286</span> {</div>
|
|
3350
|
+
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>& mod : <a class="code" href="classSVF_1_1LLVMModuleSet.html#acde6292e719c80f93d3d1c344ab442cd">modules</a>)</div>
|
|
3351
|
+
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  {</div>
|
|
3352
|
+
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>& f : mod.functions())</div>
|
|
3353
|
+
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  {</div>
|
|
3354
|
+
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svffun = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">getSVFFunction</a>(&f);</div>
|
|
3355
|
+
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a20162d2894d6a12ba29410311fba4002">initSVFBasicBlock</a>(&f);</div>
|
|
3356
|
+
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  </div>
|
|
3357
|
+
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  <span class="keywordflow">if</span> (!<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">SVFUtil::isExtCall</a>(svffun))</div>
|
|
3358
|
+
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  {</div>
|
|
3359
|
+
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a8ba9092747108e0289014d52465a692d">initDomTree</a>(svffun, &f);</div>
|
|
3360
|
+
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  }</div>
|
|
3361
|
+
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  }</div>
|
|
3362
|
+
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  }</div>
|
|
3363
|
+
<div class="line"><a name="l00301"></a><span class="lineno"> 301</span> }</div>
|
|
3345
3364
|
</div><!-- fragment -->
|
|
3346
3365
|
</div>
|
|
3347
3366
|
</div>
|
|
@@ -3376,13 +3395,16 @@ Friends</h2></td></tr>
|
|
|
3376
3395
|
<div class="fragment"><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  {</div>
|
|
3377
3396
|
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <span class="keywordflow">if</span> (func->getParent()->getName().str() == <a class="code" href="classSVF_1_1Options.html#a2ed1e6f7911ae5cfbf79213e4d07531e">Options::ExtAPIInput</a>()</div>
|
|
3378
3397
|
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  && func->getName().str() != <span class="stringliteral">"svf__main"</span></div>
|
|
3379
|
-
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  &&
|
|
3380
|
-
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  &&
|
|
3381
|
-
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span> 
|
|
3382
|
-
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span> 
|
|
3383
|
-
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span> 
|
|
3384
|
-
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span> 
|
|
3385
|
-
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span> 
|
|
3398
|
+
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  && func->getName().str() != <span class="stringliteral">"malloc"</span></div>
|
|
3399
|
+
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  && func->getName().str() != <span class="stringliteral">"main"</span></div>
|
|
3400
|
+
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  && func->getName().substr(0,4) != <span class="stringliteral">"sse_"</span></div>
|
|
3401
|
+
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  && <a class="code" href="classSVF_1_1LLVMModuleSet.html#a377cefaad4b688ab6edf94ba4abe00ee">FunDefToDeclsMap</a>.find(func) == <a class="code" href="classSVF_1_1LLVMModuleSet.html#a377cefaad4b688ab6edf94ba4abe00ee">FunDefToDeclsMap</a>.end()</div>
|
|
3402
|
+
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  && std::find(<a class="code" href="classSVF_1_1LLVMModuleSet.html#ab932917041e1b1d8b461bfef464330fd">ExtFuncsVec</a>.begin(), <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab932917041e1b1d8b461bfef464330fd">ExtFuncsVec</a>.end(), func) == <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab932917041e1b1d8b461bfef464330fd">ExtFuncsVec</a>.end())</div>
|
|
3403
|
+
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  {</div>
|
|
3404
|
+
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
|
3405
|
+
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  }</div>
|
|
3406
|
+
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
3407
|
+
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  }</div>
|
|
3386
3408
|
</div><!-- fragment -->
|
|
3387
3409
|
</div>
|
|
3388
3410
|
</div>
|
|
@@ -3409,31 +3431,31 @@ Friends</h2></td></tr>
|
|
|
3409
3431
|
</table>
|
|
3410
3432
|
</div><div class="memdoc">
|
|
3411
3433
|
|
|
3412
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#
|
|
3413
|
-
<div class="fragment"><div class="line"><a name="
|
|
3414
|
-
<div class="line"><a name="
|
|
3415
|
-
<div class="line"><a name="
|
|
3416
|
-
<div class="line"><a name="
|
|
3417
|
-
<div class="line"><a name="
|
|
3418
|
-
<div class="line"><a name="
|
|
3419
|
-
<div class="line"><a name="
|
|
3420
|
-
<div class="line"><a name="
|
|
3421
|
-
<div class="line"><a name="l00524"></a><span class="lineno"> 524</span>  abort();</div>
|
|
3422
|
-
<div class="line"><a name="l00525"></a><span class="lineno"> 525</span>  }</div>
|
|
3423
|
-
<div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  <a class="code" href="namespaceSVF.html#a86863d104a3930b3a806935d92ddbf30">SMDiagnostic</a> Err;</div>
|
|
3424
|
-
<div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  std::unique_ptr<Module> mod = parseIRFile(extModuleName, Err, *<a class="code" href="classSVF_1_1LLVMModuleSet.html#ad06a92bf8bc556de742e0ffdf79ffafe">cxts</a>);</div>
|
|
3425
|
-
<div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  <span class="keywordflow">if</span> (mod == <span class="keyword">nullptr</span>)</div>
|
|
3426
|
-
<div class="line"><a name="l00529"></a><span class="lineno"> 529</span>  {</div>
|
|
3427
|
-
<div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVFUtil::errs</a>() << <span class="stringliteral">"load external module: "</span> << extModuleName << <span class="stringliteral">"failed!!\n\n"</span>;</div>
|
|
3428
|
-
<div class="line"><a name="l00531"></a><span class="lineno"> 531</span>  Err.print(<span class="stringliteral">"SVFModuleLoader"</span>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">llvm::errs</a>());</div>
|
|
3434
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00523">523</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
|
|
3435
|
+
<div class="fragment"><div class="line"><a name="l00524"></a><span class="lineno"> 524</span> {</div>
|
|
3436
|
+
<div class="line"><a name="l00525"></a><span class="lineno"> 525</span>  <span class="comment">// has external bc</span></div>
|
|
3437
|
+
<div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a2ed1e6f7911ae5cfbf79213e4d07531e">Options::ExtAPIInput</a>().size() > 0)</div>
|
|
3438
|
+
<div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  {</div>
|
|
3439
|
+
<div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> extModuleName = <a class="code" href="classSVF_1_1Options.html#a2ed1e6f7911ae5cfbf79213e4d07531e">Options::ExtAPIInput</a>();</div>
|
|
3440
|
+
<div class="line"><a name="l00529"></a><span class="lineno"> 529</span>  <span class="keywordflow">if</span> (!<a class="code" href="namespaceSVF_1_1LLVMUtil.html#ad8a8c32a09340f491fffffcb07dd7a41">LLVMUtil::isIRFile</a>(extModuleName))</div>
|
|
3441
|
+
<div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  {</div>
|
|
3442
|
+
<div class="line"><a name="l00531"></a><span class="lineno"> 531</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVFUtil::errs</a>() << <span class="stringliteral">"not an external IR file: "</span> << extModuleName << std::endl;</div>
|
|
3429
3443
|
<div class="line"><a name="l00532"></a><span class="lineno"> 532</span>  abort();</div>
|
|
3430
3444
|
<div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  }</div>
|
|
3431
|
-
<div class="line"><a name="l00534"></a><span class="lineno"> 534</span>  <
|
|
3432
|
-
<div class="line"><a name="l00535"></a><span class="lineno"> 535</span> 
|
|
3433
|
-
<div class="line"><a name="l00536"></a><span class="lineno"> 536</span>  <
|
|
3434
|
-
<div class="line"><a name="l00537"></a><span class="lineno"> 537</span> 
|
|
3435
|
-
<div class="line"><a name="l00538"></a><span class="lineno"> 538</span> 
|
|
3436
|
-
<div class="line"><a name="l00539"></a><span class="lineno"> 539</span> 
|
|
3445
|
+
<div class="line"><a name="l00534"></a><span class="lineno"> 534</span>  <a class="code" href="namespaceSVF.html#a86863d104a3930b3a806935d92ddbf30">SMDiagnostic</a> Err;</div>
|
|
3446
|
+
<div class="line"><a name="l00535"></a><span class="lineno"> 535</span>  std::unique_ptr<Module> mod = parseIRFile(extModuleName, Err, *<a class="code" href="classSVF_1_1LLVMModuleSet.html#ad06a92bf8bc556de742e0ffdf79ffafe">cxts</a>);</div>
|
|
3447
|
+
<div class="line"><a name="l00536"></a><span class="lineno"> 536</span>  <span class="keywordflow">if</span> (mod == <span class="keyword">nullptr</span>)</div>
|
|
3448
|
+
<div class="line"><a name="l00537"></a><span class="lineno"> 537</span>  {</div>
|
|
3449
|
+
<div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVFUtil::errs</a>() << <span class="stringliteral">"load external module: "</span> << extModuleName << <span class="stringliteral">"failed!!\n\n"</span>;</div>
|
|
3450
|
+
<div class="line"><a name="l00539"></a><span class="lineno"> 539</span>  Err.print(<span class="stringliteral">"SVFModuleLoader"</span>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">llvm::errs</a>());</div>
|
|
3451
|
+
<div class="line"><a name="l00540"></a><span class="lineno"> 540</span>  abort();</div>
|
|
3452
|
+
<div class="line"><a name="l00541"></a><span class="lineno"> 541</span>  }</div>
|
|
3453
|
+
<div class="line"><a name="l00542"></a><span class="lineno"> 542</span>  <span class="comment">// The module of extapi.bc needs to be inserted before applications modules, like std::vector<std::reference_wrapper<Module>> modules{extapi_module, app_module}.</span></div>
|
|
3454
|
+
<div class="line"><a name="l00543"></a><span class="lineno"> 543</span>  <span class="comment">// Otherwise, when overwriting the app function with SVF extern function, the corresponding SVFFunction of the extern function will not be found.</span></div>
|
|
3455
|
+
<div class="line"><a name="l00544"></a><span class="lineno"> 544</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#acde6292e719c80f93d3d1c344ab442cd">modules</a>.insert(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acde6292e719c80f93d3d1c344ab442cd">modules</a>.begin(), *mod);</div>
|
|
3456
|
+
<div class="line"><a name="l00545"></a><span class="lineno"> 545</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#ae365189769640adb919a23c36978e5e2">owned_modules</a>.insert(<a class="code" href="classSVF_1_1LLVMModuleSet.html#ae365189769640adb919a23c36978e5e2">owned_modules</a>.begin(),<a class="code" href="namespaceSVF_1_1SVFUtil.html#a72502f7f536418621485e90ab98c2016">std::move</a>(mod));</div>
|
|
3457
|
+
<div class="line"><a name="l00546"></a><span class="lineno"> 546</span>  }</div>
|
|
3458
|
+
<div class="line"><a name="l00547"></a><span class="lineno"> 547</span> }</div>
|
|
3437
3459
|
</div><!-- fragment -->
|
|
3438
3460
|
</div>
|
|
3439
3461
|
</div>
|
|
@@ -3461,60 +3483,60 @@ Friends</h2></td></tr>
|
|
|
3461
3483
|
</table>
|
|
3462
3484
|
</div><div class="memdoc">
|
|
3463
3485
|
|
|
3464
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#
|
|
3465
|
-
<div class="fragment"><div class="line"><a name="
|
|
3466
|
-
<div class="line"><a name="
|
|
3467
|
-
<div class="line"><a name="
|
|
3468
|
-
<div class="line"><a name="
|
|
3469
|
-
<div class="line"><a name="
|
|
3470
|
-
<div class="line"><a name="
|
|
3471
|
-
<div class="line"><a name="
|
|
3472
|
-
<div class="line"><a name="
|
|
3473
|
-
<div class="line"><a name="
|
|
3474
|
-
<div class="line"><a name="
|
|
3475
|
-
<div class="line"><a name="
|
|
3476
|
-
<div class="line"><a name="
|
|
3477
|
-
<div class="line"><a name="
|
|
3478
|
-
<div class="line"><a name="
|
|
3479
|
-
<div class="line"><a name="
|
|
3480
|
-
<div class="line"><a name="
|
|
3481
|
-
<div class="line"><a name="
|
|
3482
|
-
<div class="line"><a name="
|
|
3483
|
-
<div class="line"><a name="
|
|
3484
|
-
<div class="line"><a name="
|
|
3485
|
-
<div class="line"><a name="
|
|
3486
|
-
<div class="line"><a name="
|
|
3487
|
-
<div class="line"><a name="
|
|
3488
|
-
<div class="line"><a name="
|
|
3489
|
-
<div class="line"><a name="
|
|
3490
|
-
<div class="line"><a name="
|
|
3491
|
-
<div class="line"><a name="
|
|
3492
|
-
<div class="line"><a name="
|
|
3493
|
-
<div class="line"><a name="
|
|
3494
|
-
<div class="line"><a name="
|
|
3495
|
-
<div class="line"><a name="
|
|
3496
|
-
<div class="line"><a name="
|
|
3497
|
-
<div class="line"><a name="l00493"></a><span class="lineno"> 493</span>  </div>
|
|
3498
|
-
<div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a>& moduleName : moduleNameVec)</div>
|
|
3499
|
-
<div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  {</div>
|
|
3500
|
-
<div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  <span class="keywordflow">if</span> (!<a class="code" href="namespaceSVF_1_1LLVMUtil.html#ad8a8c32a09340f491fffffcb07dd7a41">LLVMUtil::isIRFile</a>(moduleName))</div>
|
|
3501
|
-
<div class="line"><a name="l00497"></a><span class="lineno"> 497</span>  {</div>
|
|
3502
|
-
<div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVFUtil::errs</a>() << <span class="stringliteral">"not an IR file: "</span> << moduleName << std::endl;</div>
|
|
3503
|
-
<div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  abort();</div>
|
|
3504
|
-
<div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  }</div>
|
|
3486
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00468">468</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
|
|
3487
|
+
<div class="fragment"><div class="line"><a name="l00469"></a><span class="lineno"> 469</span> {</div>
|
|
3488
|
+
<div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  </div>
|
|
3489
|
+
<div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  <span class="comment">// We read SVFIR from LLVM IR</span></div>
|
|
3490
|
+
<div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1Options.html#a53f783c80f368bcdca6c7620229d6f8e">Options::Graphtxt</a>().<a class="code" href="classSVF_1_1LLVMModuleSet.html#ae19e38054c55d5822dfc83a12f12aa60">empty</a>())</div>
|
|
3491
|
+
<div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  {</div>
|
|
3492
|
+
<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  <span class="keywordflow">if</span>(moduleNameVec.empty())</div>
|
|
3493
|
+
<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  {</div>
|
|
3494
|
+
<div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() << <span class="stringliteral">"no LLVM bc file is found!\n"</span>;</div>
|
|
3495
|
+
<div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  exit(0);</div>
|
|
3496
|
+
<div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  }</div>
|
|
3497
|
+
<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  <span class="comment">//assert(!moduleNameVec.empty() && "no LLVM bc file is found!");</span></div>
|
|
3498
|
+
<div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  }</div>
|
|
3499
|
+
<div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  <span class="comment">// We read SVFIR from a user-defined txt instead of parsing SVFIR from LLVM IR</span></div>
|
|
3500
|
+
<div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  <span class="keywordflow">else</span></div>
|
|
3501
|
+
<div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  <a class="code" href="classSVF_1_1SVFModule.html#a7af3076a26060090377d1f74293560fe">SVFModule::setPagFromTXT</a>(<a class="code" href="classSVF_1_1Options.html#a53f783c80f368bcdca6c7620229d6f8e">Options::Graphtxt</a>());</div>
|
|
3502
|
+
<div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  </div>
|
|
3503
|
+
<div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  <span class="comment">//</span></div>
|
|
3504
|
+
<div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  <span class="comment">// To avoid the following type bugs (t1 != t3) when parsing multiple modules,</span></div>
|
|
3505
|
+
<div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  <span class="comment">// We should use only one LLVMContext object for multiple modules in the same thread.</span></div>
|
|
3506
|
+
<div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  <span class="comment">// No such problem if only one module is processed by SVF.</span></div>
|
|
3507
|
+
<div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  <span class="comment">// ------------------------------------------------------------------</span></div>
|
|
3508
|
+
<div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  <span class="comment">// LLVMContext ctxa,ctxb;</span></div>
|
|
3509
|
+
<div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  <span class="comment">// IntegerType * t1 = IntegerType::get(ctxa,32);</span></div>
|
|
3510
|
+
<div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  <span class="comment">// IntegerType * t2 = IntegerType::get(ctxa,32);</span></div>
|
|
3511
|
+
<div class="line"><a name="l00493"></a><span class="lineno"> 493</span>  <span class="comment">// assert(t1 == t2);</span></div>
|
|
3512
|
+
<div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  <span class="comment">// IntegerType * t3 = IntegerType::get(ctxb,32);</span></div>
|
|
3513
|
+
<div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  <span class="comment">// IntegerType * t4 = IntegerType::get(ctxb,32);</span></div>
|
|
3514
|
+
<div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  <span class="comment">// assert(t3 == t4);</span></div>
|
|
3515
|
+
<div class="line"><a name="l00497"></a><span class="lineno"> 497</span>  <span class="comment">// assert(t1 != t3);</span></div>
|
|
3516
|
+
<div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  <span class="comment">// ------------------------------------------------------------------</span></div>
|
|
3517
|
+
<div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  <span class="comment">//</span></div>
|
|
3518
|
+
<div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#ad06a92bf8bc556de742e0ffdf79ffafe">cxts</a> = std::make_unique<LLVMContext>();</div>
|
|
3505
3519
|
<div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  </div>
|
|
3506
|
-
<div class="line"><a name="l00502"></a><span class="lineno"> 502</span> 
|
|
3507
|
-
<div class="line"><a name="l00503"></a><span class="lineno"> 503</span> 
|
|
3508
|
-
<div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  <span class="keywordflow">if</span> (
|
|
3520
|
+
<div class="line"><a name="l00502"></a><span class="lineno"> 502</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a>& moduleName : moduleNameVec)</div>
|
|
3521
|
+
<div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  {</div>
|
|
3522
|
+
<div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  <span class="keywordflow">if</span> (!<a class="code" href="namespaceSVF_1_1LLVMUtil.html#ad8a8c32a09340f491fffffcb07dd7a41">LLVMUtil::isIRFile</a>(moduleName))</div>
|
|
3509
3523
|
<div class="line"><a name="l00505"></a><span class="lineno"> 505</span>  {</div>
|
|
3510
|
-
<div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVFUtil::errs</a>() << <span class="stringliteral">"
|
|
3511
|
-
<div class="line"><a name="l00507"></a><span class="lineno"> 507</span> 
|
|
3512
|
-
<div class="line"><a name="l00508"></a><span class="lineno"> 508</span> 
|
|
3513
|
-
<div class="line"><a name="l00509"></a><span class="lineno"> 509</span> 
|
|
3514
|
-
<div class="line"><a name="l00510"></a><span class="lineno"> 510</span>  <a class="code" href="
|
|
3515
|
-
<div class="line"><a name="l00511"></a><span class="lineno"> 511</span> 
|
|
3516
|
-
<div class="line"><a name="l00512"></a><span class="lineno"> 512</span> 
|
|
3517
|
-
<div class="line"><a name="l00513"></a><span class="lineno"> 513</span> 
|
|
3524
|
+
<div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVFUtil::errs</a>() << <span class="stringliteral">"not an IR file: "</span> << moduleName << std::endl;</div>
|
|
3525
|
+
<div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  abort();</div>
|
|
3526
|
+
<div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  }</div>
|
|
3527
|
+
<div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  </div>
|
|
3528
|
+
<div class="line"><a name="l00510"></a><span class="lineno"> 510</span>  <a class="code" href="namespaceSVF.html#a86863d104a3930b3a806935d92ddbf30">SMDiagnostic</a> Err;</div>
|
|
3529
|
+
<div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  std::unique_ptr<Module> mod = parseIRFile(moduleName, Err, *<a class="code" href="classSVF_1_1LLVMModuleSet.html#ad06a92bf8bc556de742e0ffdf79ffafe">cxts</a>);</div>
|
|
3530
|
+
<div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  <span class="keywordflow">if</span> (mod == <span class="keyword">nullptr</span>)</div>
|
|
3531
|
+
<div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  {</div>
|
|
3532
|
+
<div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVFUtil::errs</a>() << <span class="stringliteral">"load module: "</span> << moduleName << <span class="stringliteral">"failed!!\n\n"</span>;</div>
|
|
3533
|
+
<div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  Err.print(<span class="stringliteral">"SVFModuleLoader"</span>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">llvm::errs</a>());</div>
|
|
3534
|
+
<div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  abort();</div>
|
|
3535
|
+
<div class="line"><a name="l00517"></a><span class="lineno"> 517</span>  }</div>
|
|
3536
|
+
<div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#acde6292e719c80f93d3d1c344ab442cd">modules</a>.emplace_back(*mod);</div>
|
|
3537
|
+
<div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#ae365189769640adb919a23c36978e5e2">owned_modules</a>.emplace_back(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a72502f7f536418621485e90ab98c2016">std::move</a>(mod));</div>
|
|
3538
|
+
<div class="line"><a name="l00520"></a><span class="lineno"> 520</span>  }</div>
|
|
3539
|
+
<div class="line"><a name="l00521"></a><span class="lineno"> 521</span> }</div>
|
|
3518
3540
|
</div><!-- fragment -->
|
|
3519
3541
|
</div>
|
|
3520
3542
|
</div>
|
|
@@ -3546,27 +3568,27 @@ Friends</h2></td></tr>
|
|
|
3546
3568
|
<p><a class="el" href="classSVF_1_1BreakConstantGEPs.html">BreakConstantGEPs</a> Pass</p>
|
|
3547
3569
|
<p><a class="el" href="classSVF_1_1MergeFunctionRets.html">MergeFunctionRets</a> Pass</p>
|
|
3548
3570
|
|
|
3549
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#
|
|
3550
|
-
<div class="fragment"><div class="line"><a name="
|
|
3551
|
-
<div class="line"><a name="
|
|
3552
|
-
<div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a> &M : <a class="code" href="classSVF_1_1LLVMModuleSet.html#a4091b12bdfe4423d8114612a199bc480">getLLVMModules</a>())</div>
|
|
3553
|
-
<div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  {</div>
|
|
3554
|
-
<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  p1->runOnModule(M);</div>
|
|
3555
|
-
<div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  }</div>
|
|
3556
|
-
<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  </div>
|
|
3557
|
-
<div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  std::unique_ptr<UnifyFunctionExitNodes> p2 =</div>
|
|
3558
|
-
<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  std::make_unique<UnifyFunctionExitNodes>();</div>
|
|
3571
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00423">423</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
|
|
3572
|
+
<div class="fragment"><div class="line"><a name="l00424"></a><span class="lineno"> 424</span> {</div>
|
|
3573
|
+
<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  std::unique_ptr<BreakConstantGEPs> p1 = std::make_unique<BreakConstantGEPs>();</div>
|
|
3559
3574
|
<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a> &M : <a class="code" href="classSVF_1_1LLVMModuleSet.html#a4091b12bdfe4423d8114612a199bc480">getLLVMModules</a>())</div>
|
|
3560
3575
|
<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  {</div>
|
|
3561
|
-
<div class="line"><a name="l00429"></a><span class="lineno"> 429</span> 
|
|
3562
|
-
<div class="line"><a name="l00430"></a><span class="lineno"> 430</span> 
|
|
3563
|
-
<div class="line"><a name="l00431"></a><span class="lineno"> 431</span> 
|
|
3564
|
-
<div class="line"><a name="
|
|
3565
|
-
<div class="line"><a name="
|
|
3566
|
-
<div class="line"><a name="
|
|
3567
|
-
<div class="line"><a name="
|
|
3568
|
-
<div class="line"><a name="
|
|
3569
|
-
<div class="line"><a name="
|
|
3576
|
+
<div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  p1->runOnModule(M);</div>
|
|
3577
|
+
<div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  }</div>
|
|
3578
|
+
<div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  </div>
|
|
3579
|
+
<div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  std::unique_ptr<UnifyFunctionExitNodes> p2 =</div>
|
|
3580
|
+
<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  std::make_unique<UnifyFunctionExitNodes>();</div>
|
|
3581
|
+
<div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a> &M : <a class="code" href="classSVF_1_1LLVMModuleSet.html#a4091b12bdfe4423d8114612a199bc480">getLLVMModules</a>())</div>
|
|
3582
|
+
<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  {</div>
|
|
3583
|
+
<div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a> = M.begin(), E = M.end(); <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a> != E; ++<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>)</div>
|
|
3584
|
+
<div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  {</div>
|
|
3585
|
+
<div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> &fun = *<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>;</div>
|
|
3586
|
+
<div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  <span class="keywordflow">if</span> (fun.isDeclaration())</div>
|
|
3587
|
+
<div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  <span class="keywordflow">continue</span>;</div>
|
|
3588
|
+
<div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  p2->runOnFunction(fun);</div>
|
|
3589
|
+
<div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  }</div>
|
|
3590
|
+
<div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  }</div>
|
|
3591
|
+
<div class="line"><a name="l00445"></a><span class="lineno"> 445</span> }</div>
|
|
3570
3592
|
</div><!-- fragment -->
|
|
3571
3593
|
</div>
|
|
3572
3594
|
</div>
|
|
@@ -3594,26 +3616,26 @@ Friends</h2></td></tr>
|
|
|
3594
3616
|
</table>
|
|
3595
3617
|
</div><div class="memdoc">
|
|
3596
3618
|
|
|
3597
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#
|
|
3598
|
-
<div class="fragment"><div class="line"><a name="
|
|
3599
|
-
<div class="line"><a name="
|
|
3600
|
-
<div class="line"><a name="
|
|
3601
|
-
<div class="line"><a name="
|
|
3602
|
-
<div class="line"><a name="
|
|
3603
|
-
<div class="line"><a name="
|
|
3604
|
-
<div class="line"><a name="
|
|
3605
|
-
<div class="line"><a name="
|
|
3606
|
-
<div class="line"><a name="
|
|
3607
|
-
<div class="line"><a name="
|
|
3608
|
-
<div class="line"><a name="
|
|
3609
|
-
<div class="line"><a name="
|
|
3610
|
-
<div class="line"><a name="
|
|
3611
|
-
<div class="line"><a name="
|
|
3612
|
-
<div class="line"><a name="
|
|
3613
|
-
<div class="line"><a name="
|
|
3614
|
-
<div class="line"><a name="
|
|
3615
|
-
<div class="line"><a name="
|
|
3616
|
-
<div class="line"><a name="
|
|
3619
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00447">447</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
|
|
3620
|
+
<div class="fragment"><div class="line"><a name="l00448"></a><span class="lineno"> 448</span> {</div>
|
|
3621
|
+
<div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html">LLVMModuleSet</a>* mset = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">getLLVMModuleSet</a>();</div>
|
|
3622
|
+
<div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  mset-><a class="code" href="classSVF_1_1LLVMModuleSet.html#a298966366b02d0a34f409c2c77da3789">loadModules</a>(moduleNameVec);</div>
|
|
3623
|
+
<div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  mset-><a class="code" href="classSVF_1_1LLVMModuleSet.html#a8820d1df9098db6eadf3a9c67e380e55">loadExtAPIModules</a>();</div>
|
|
3624
|
+
<div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  mset-><a class="code" href="classSVF_1_1LLVMModuleSet.html#a8b5f24c873db1f6a0614d1dac48bb4bb">prePassSchedule</a>();</div>
|
|
3625
|
+
<div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  </div>
|
|
3626
|
+
<div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> preProcessSuffix = <span class="stringliteral">".pre.bc"</span>;</div>
|
|
3627
|
+
<div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  <span class="comment">// Get the existing module names, remove old extension, add preProcessSuffix</span></div>
|
|
3628
|
+
<div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i < moduleNameVec.size(); i++)</div>
|
|
3629
|
+
<div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  {</div>
|
|
3630
|
+
<div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> lastIndex = moduleNameVec[i].find_last_of(<span class="stringliteral">"."</span>);</div>
|
|
3631
|
+
<div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> rawName = moduleNameVec[i].substr(0, lastIndex);</div>
|
|
3632
|
+
<div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  moduleNameVec[i] = (rawName + preProcessSuffix);</div>
|
|
3633
|
+
<div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  }</div>
|
|
3634
|
+
<div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  </div>
|
|
3635
|
+
<div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  mset-><a class="code" href="classSVF_1_1LLVMModuleSet.html#af37b9976b282c875cac7bb1777da635c">dumpModulesToFile</a>(preProcessSuffix);</div>
|
|
3636
|
+
<div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a3204400c52ec55da70418471d5c9bad5">preProcessed</a> = <span class="keyword">true</span>;</div>
|
|
3637
|
+
<div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a2f8e91c075d90be66412a079fe73e936">releaseLLVMModuleSet</a>();</div>
|
|
3638
|
+
<div class="line"><a name="l00466"></a><span class="lineno"> 466</span> }</div>
|
|
3617
3639
|
</div><!-- fragment -->
|
|
3618
3640
|
</div>
|
|
3619
3641
|
</div>
|
|
@@ -3682,31 +3704,31 @@ Friends</h2></td></tr>
|
|
|
3682
3704
|
</table>
|
|
3683
3705
|
</div><div class="memdoc">
|
|
3684
3706
|
|
|
3685
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#
|
|
3686
|
-
<div class="fragment"><div class="line"><a name="
|
|
3687
|
-
<div class="line"><a name="
|
|
3688
|
-
<div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>  </div>
|
|
3689
|
-
<div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a07c785d931cef3c61e3dab4c615770be">LLVMUtil::isPtrInUncalledFunction</a>(val))</div>
|
|
3690
|
-
<div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>  svfvalue->setPtrInUncalledFunction();</div>
|
|
3691
|
-
<div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a8a77403306e97ab4cb31a56d38bba5be">LLVMUtil::isConstDataOrAggData</a>(val))</div>
|
|
3692
|
-
<div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>  svfvalue->setConstDataOrAggData();</div>
|
|
3693
|
-
<div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>  </div>
|
|
3694
|
-
<div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFGlobalValue.html">SVFGlobalValue</a>* glob = SVFUtil::dyn_cast<SVFGlobalValue>(svfvalue))</div>
|
|
3695
|
-
<div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>  {</div>
|
|
3696
|
-
<div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* llvmVal = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a9e0c786488dfdc4605d4cbcf9943c85a">LLVMUtil::getGlobalRep</a>(val);</div>
|
|
3697
|
-
<div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>  assert(SVFUtil::isa<GlobalValue>(llvmVal) && <span class="stringliteral">"not a GlobalValue?"</span>);</div>
|
|
3698
|
-
<div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>  glob->setDefGlobalForMultipleModule(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a3cbba2eb702a3481478b2590dfffa352">getSVFGlobalValue</a>(SVFUtil::cast<GlobalValue>(llvmVal)));</div>
|
|
3699
|
-
<div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>  }</div>
|
|
3700
|
-
<div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svffun = SVFUtil::dyn_cast<SVFFunction>(svfvalue))</div>
|
|
3701
|
-
<div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>  {</div>
|
|
3702
|
-
<div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func = SVFUtil::cast<Function>(val);</div>
|
|
3703
|
-
<div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>  svffun->setIsNotRet(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a651b6a1cf3665277d2241220bb145aed">LLVMUtil::functionDoesNotRet</a>(func));</div>
|
|
3704
|
-
<div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>  svffun->setIsUncalledFunction(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2c61d741afbcfa853b505cd391f29f9b">LLVMUtil::isUncalledFunction</a>(func));</div>
|
|
3705
|
-
<div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>  svffun->setDefFunForMultipleModule(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">getSVFFunction</a>(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a3d34fcdfc98add848a34fd5259c11eb2">LLVMUtil::getDefFunForMultipleModule</a>(func)));</div>
|
|
3706
|
-
<div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>  }</div>
|
|
3707
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01033">1033</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
|
|
3708
|
+
<div class="fragment"><div class="line"><a name="l01034"></a><span class="lineno"> 1034</span> {</div>
|
|
3709
|
+
<div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a7f8e61cf5d838d7a2e862bc6955f16be">SVFValue2LLVMValue</a>[svfvalue] = val;</div>
|
|
3707
3710
|
<div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>  </div>
|
|
3708
|
-
<div class="line"><a name="l01037"></a><span class="lineno"> 1037</span> 
|
|
3709
|
-
<div class="line"><a name="l01038"></a><span class="lineno"> 1038</span> 
|
|
3711
|
+
<div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a07c785d931cef3c61e3dab4c615770be">LLVMUtil::isPtrInUncalledFunction</a>(val))</div>
|
|
3712
|
+
<div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>  svfvalue->setPtrInUncalledFunction();</div>
|
|
3713
|
+
<div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a8a77403306e97ab4cb31a56d38bba5be">LLVMUtil::isConstDataOrAggData</a>(val))</div>
|
|
3714
|
+
<div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>  svfvalue->setConstDataOrAggData();</div>
|
|
3715
|
+
<div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>  </div>
|
|
3716
|
+
<div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFGlobalValue.html">SVFGlobalValue</a>* glob = SVFUtil::dyn_cast<SVFGlobalValue>(svfvalue))</div>
|
|
3717
|
+
<div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>  {</div>
|
|
3718
|
+
<div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* llvmVal = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a9e0c786488dfdc4605d4cbcf9943c85a">LLVMUtil::getGlobalRep</a>(val);</div>
|
|
3719
|
+
<div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>  assert(SVFUtil::isa<GlobalValue>(llvmVal) && <span class="stringliteral">"not a GlobalValue?"</span>);</div>
|
|
3720
|
+
<div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>  glob->setDefGlobalForMultipleModule(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a3cbba2eb702a3481478b2590dfffa352">getSVFGlobalValue</a>(SVFUtil::cast<GlobalValue>(llvmVal)));</div>
|
|
3721
|
+
<div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>  }</div>
|
|
3722
|
+
<div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svffun = SVFUtil::dyn_cast<SVFFunction>(svfvalue))</div>
|
|
3723
|
+
<div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>  {</div>
|
|
3724
|
+
<div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func = SVFUtil::cast<Function>(val);</div>
|
|
3725
|
+
<div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>  svffun->setIsNotRet(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a651b6a1cf3665277d2241220bb145aed">LLVMUtil::functionDoesNotRet</a>(func));</div>
|
|
3726
|
+
<div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>  svffun->setIsUncalledFunction(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2c61d741afbcfa853b505cd391f29f9b">LLVMUtil::isUncalledFunction</a>(func));</div>
|
|
3727
|
+
<div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>  svffun->setDefFunForMultipleModule(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">getSVFFunction</a>(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a3d34fcdfc98add848a34fd5259c11eb2">LLVMUtil::getDefFunForMultipleModule</a>(func)));</div>
|
|
3728
|
+
<div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>  }</div>
|
|
3729
|
+
<div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>  </div>
|
|
3730
|
+
<div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>  svfvalue->setSourceLoc(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a8e4add30bd0ce00d3f2aa2e31c64fef8">LLVMUtil::getSourceLoc</a>(val));</div>
|
|
3731
|
+
<div class="line"><a name="l01057"></a><span class="lineno"> 1057</span> }</div>
|
|
3710
3732
|
</div><!-- fragment -->
|
|
3711
3733
|
</div>
|
|
3712
3734
|
</div>
|
|
@@ -4237,7 +4259,7 @@ Friends</h2></td></tr>
|
|
|
4237
4259
|
<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#l00132">BasicTypes.h:132</a></div></div>
|
|
4238
4260
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_af2c555af91679d9e6d3009547ee11486"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#af2c555af91679d9e6d3009547ee11486">SVF::LLVMModuleSet::Type2TypeInfo</a></div><div class="ttdeci">Type2TypeInfoMap Type2TypeInfo</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00091">LLVMModule.h:91</a></div></div>
|
|
4239
4261
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_ae265a7f3cc7367d62013e0f15cf3d233"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ae265a7f3cc7367d62013e0f15cf3d233">SVF::LLVMModuleSet::getModuleNum</a></div><div class="ttdeci">u32_t getModuleNum() const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00124">LLVMModule.h:124</a></div></div>
|
|
4240
|
-
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_aaab03cb6ff665bc008c67b866ba81e47"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#aaab03cb6ff665bc008c67b866ba81e47">SVF::LLVMModuleSet::buildGlobalDefToRepMap</a></div><div class="ttdeci">void buildGlobalDefToRepMap()</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#
|
|
4262
|
+
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_aaab03cb6ff665bc008c67b866ba81e47"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#aaab03cb6ff665bc008c67b866ba81e47">SVF::LLVMModuleSet::buildGlobalDefToRepMap</a></div><div class="ttdeci">void buildGlobalDefToRepMap()</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00965">LLVMModule.cpp:965</a></div></div>
|
|
4241
4263
|
<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#l00592">LLVMUtil.cpp:592</a></div></div>
|
|
4242
4264
|
<div class="ttc" id="aLLVMModule_8cpp_html_a9fd6e28e6ed93f65a20a348ab0646320"><div class="ttname"><a href="LLVMModule_8cpp.html#a9fd6e28e6ed93f65a20a348ab0646320">SVF_GLOBAL_DTORS</a></div><div class="ttdeci">#define SVF_GLOBAL_DTORS</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00069">LLVMModule.cpp:69</a></div></div>
|
|
4243
4265
|
<div class="ttc" id="aclassSVF_1_1SVFType_html_aef5999ada62dac3cc946d832ac66948c"><div class="ttname"><a href="classSVF_1_1SVFType.html#aef5999ada62dac3cc946d832ac66948c">SVF::SVFType::setTypeInfo</a></div><div class="ttdeci">void setTypeInfo(StInfo *ti)</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00302">SVFType.h:302</a></div></div>
|
|
@@ -4246,7 +4268,7 @@ Friends</h2></td></tr>
|
|
|
4246
4268
|
<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#l00131">BasicTypes.h:131</a></div></div>
|
|
4247
4269
|
<div class="ttc" id="aclassSVF_1_1SymbolTableInfo_html_a0c1143eff451edf8ea47d4487a8d3a55"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a0c1143eff451edf8ea47d4487a8d3a55">SVF::SymbolTableInfo::maxStruct</a></div><div class="ttdeci">const SVFType * maxStruct</div><div class="ttdoc">The struct type with the most fields.</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00340">SymbolTableInfo.h:340</a></div></div>
|
|
4248
4270
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a9fd7f0170bffa7c1b927cdb0de98fd15"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a9fd7f0170bffa7c1b927cdb0de98fd15">SVF::LLVMModuleSet::LLVMFunc2SVFFunc</a></div><div class="ttdeci">LLVMFun2SVFFunMap LLVMFunc2SVFFunc</div><div class="ttdoc">Map an LLVM Function to an SVF Function.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00083">LLVMModule.h:83</a></div></div>
|
|
4249
|
-
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_aab7b08db9252ef7e21e54d019f44b073"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#aab7b08db9252ef7e21e54d019f44b073">SVF::LLVMModuleSet::addSVFTypeInfo</a></div><div class="ttdeci">SVFType * addSVFTypeInfo(const Type *t)</div><div class="ttdoc">Create SVFTypes.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#
|
|
4271
|
+
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_aab7b08db9252ef7e21e54d019f44b073"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#aab7b08db9252ef7e21e54d019f44b073">SVF::LLVMModuleSet::addSVFTypeInfo</a></div><div class="ttdeci">SVFType * addSVFTypeInfo(const Type *t)</div><div class="ttdoc">Create SVFTypes.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01230">LLVMModule.cpp:1230</a></div></div>
|
|
4250
4272
|
<div class="ttc" id="aclassSVF_1_1SVFBasicBlock_html_ac1b15d8f9c2499add8dbc889ae5cab65"><div class="ttname"><a href="classSVF_1_1SVFBasicBlock.html#ac1b15d8f9c2499add8dbc889ae5cab65">SVF::SVFBasicBlock::addInstruction</a></div><div class="ttdeci">void addInstruction(const SVFInstruction *inst)</div><div class="ttdoc">Function where this BasicBlock is.</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00508">SVFValue.h:508</a></div></div>
|
|
4251
4273
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a4091b12bdfe4423d8114612a199bc480"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a4091b12bdfe4423d8114612a199bc480">SVF::LLVMModuleSet::getLLVMModules</a></div><div class="ttdeci">const std::vector< std::reference_wrapper< Module > > & getLLVMModules() const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00129">LLVMModule.h:129</a></div></div>
|
|
4252
4274
|
<div class="ttc" id="anamespaceSVF_html_a94824519e439aeef1568d415b6f7331c"><div class="ttname"><a href="namespaceSVF.html#a94824519e439aeef1568d415b6f7331c">SVF::IRBuilder</a></div><div class="ttdeci">llvm::IRBuilder IRBuilder</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00072">BasicTypes.h:72</a></div></div>
|
|
@@ -4256,17 +4278,17 @@ Friends</h2></td></tr>
|
|
|
4256
4278
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a7de84e7817406867b173e1591e0681ac"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a7de84e7817406867b173e1591e0681ac">SVF::LLVMModuleSet::addGlobalValueMap</a></div><div class="ttdeci">void addGlobalValueMap(const GlobalValue *glob, SVFGlobalValue *svfglob)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00168">LLVMModule.h:168</a></div></div>
|
|
4257
4279
|
<div class="ttc" id="anamespaceSVF_html_a6ec0236303089a01fd9da36a8bb84e0a"><div class="ttname"><a href="namespaceSVF.html#a6ec0236303089a01fd9da36a8bb84e0a">SVF::FunctionType</a></div><div class="ttdeci">llvm::FunctionType FunctionType</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00096">BasicTypes.h:96</a></div></div>
|
|
4258
4280
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_ad647d73d2e1bda61348eff658e32f481"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ad647d73d2e1bda61348eff658e32f481">SVF::LLVMModuleSet::getModuleRef</a></div><div class="ttdeci">Module & getModuleRef(u32_t idx) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00139">LLVMModule.h:139</a></div></div>
|
|
4259
|
-
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_ac7c646a78c989807c52263fc35fb3628"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ac7c646a78c989807c52263fc35fb3628">SVF::LLVMModuleSet::buildFunToFunMap</a></div><div class="ttdeci">void buildFunToFunMap()</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#
|
|
4281
|
+
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_ac7c646a78c989807c52263fc35fb3628"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ac7c646a78c989807c52263fc35fb3628">SVF::LLVMModuleSet::buildFunToFunMap</a></div><div class="ttdeci">void buildFunToFunMap()</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00795">LLVMModule.cpp:795</a></div></div>
|
|
4260
4282
|
<div class="ttc" id="aclassSVF_1_1SVFCallInst_html_a6dd304f555d2d2388c4430e57b0d2b91"><div class="ttname"><a href="classSVF_1_1SVFCallInst.html#a6dd304f555d2d2388c4430e57b0d2b91">SVF::SVFCallInst::setCalledOperand</a></div><div class="ttdeci">void setCalledOperand(const SVFValue *v)</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00679">SVFValue.h:679</a></div></div>
|
|
4261
4283
|
<div class="ttc" id="aclassSVF_1_1SymbolTableInfo_html_a91083d9504ae5d220b28e0b3e461d4aa"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a91083d9504ae5d220b28e0b3e461d4aa">SVF::SymbolTableInfo::addTypeInfo</a></div><div class="ttdeci">void addTypeInfo(const SVFType *ty)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00345">SymbolTableInfo.h:345</a></div></div>
|
|
4262
4284
|
<div class="ttc" id="aclassSVF_1_1SVFPointerType_html"><div class="ttname"><a href="classSVF_1_1SVFPointerType.html">SVF::SVFPointerType</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00332">SVFType.h:332</a></div></div>
|
|
4263
4285
|
<div class="ttc" id="anamespaceSVF_html_a77e088bfe47c0b0ddcbbe0693dec6fe5"><div class="ttname"><a href="namespaceSVF.html#a77e088bfe47c0b0ddcbbe0693dec6fe5">SVF::LoopInfo</a></div><div class="ttdeci">llvm::LoopInfo LoopInfo</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00139">BasicTypes.h:139</a></div></div>
|
|
4264
4286
|
<div class="ttc" id="anamespaceSVF_html_af739db846e47ba6b2fd15eaad31ab7fb"><div class="ttname"><a href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">SVF::Set</a></div><div class="ttdeci">std::unordered_set< Key, Hash, KeyEqual, Allocator > Set</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00097">SVFType.h:97</a></div></div>
|
|
4265
4287
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_ae2a1fa0b908cf372c50af90e62c4bf2b"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ae2a1fa0b908cf372c50af90e62c4bf2b">SVF::LLVMModuleSet::GlobalDefToRepMap</a></div><div class="ttdeci">GlobalDefToRepMapTy GlobalDefToRepMap</div><div class="ttdoc">Global definition to a rep definition map.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00081">LLVMModule.h:81</a></div></div>
|
|
4266
|
-
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a6e670254385050b9a5e612f881b07b9c"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a6e670254385050b9a5e612f881b07b9c">SVF::LLVMModuleSet::getDefinition</a></div><div class="ttdeci">const Function * getDefinition(const Function *fun) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#
|
|
4288
|
+
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a6e670254385050b9a5e612f881b07b9c"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a6e670254385050b9a5e612f881b07b9c">SVF::LLVMModuleSet::getDefinition</a></div><div class="ttdeci">const Function * getDefinition(const Function *fun) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00280">LLVMModule.h:280</a></div></div>
|
|
4267
4289
|
<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#l00084">BasicTypes.h:84</a></div></div>
|
|
4268
4290
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_ab932917041e1b1d8b461bfef464330fd"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ab932917041e1b1d8b461bfef464330fd">SVF::LLVMModuleSet::ExtFuncsVec</a></div><div class="ttdeci">FunctionSetType ExtFuncsVec</div><div class="ttdoc">Record some "sse_" function declarations used in other ext function definition, e....</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00079">LLVMModule.h:79</a></div></div>
|
|
4269
|
-
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_af37b9976b282c875cac7bb1777da635c"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#af37b9976b282c875cac7bb1777da635c">SVF::LLVMModuleSet::dumpModulesToFile</a></div><div class="ttdeci">void dumpModulesToFile(const std::string &suffix)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#
|
|
4291
|
+
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_af37b9976b282c875cac7bb1777da635c"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#af37b9976b282c875cac7bb1777da635c">SVF::LLVMModuleSet::dumpModulesToFile</a></div><div class="ttdeci">void dumpModulesToFile(const std::string &suffix)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01008">LLVMModule.cpp:1008</a></div></div>
|
|
4270
4292
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_ad3f66b40ad360003845253f452d6a711"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ad3f66b40ad360003845253f452d6a711">SVF::LLVMModuleSet::getSVFArgument</a></div><div class="ttdeci">SVFArgument * getSVFArgument(const Argument *arg) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00219">LLVMModule.h:219</a></div></div>
|
|
4271
4293
|
<div class="ttc" id="aclassSVF_1_1SVFValue_html_a8325774df9d65d78ef6a66fef59b9a97"><div class="ttname"><a href="classSVF_1_1SVFValue.html#a8325774df9d65d78ef6a66fef59b9a97">SVF::SVFValue::setName</a></div><div class="ttdeci">void setName(const std::string &n)</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00220">SVFValue.h:220</a></div></div>
|
|
4272
4294
|
<div class="ttc" id="anamespaceSVF_html_a3d9e7f32dc17fe8d40f8d6a011403b91"><div class="ttname"><a href="namespaceSVF.html#a3d9e7f32dc17fe8d40f8d6a011403b91">SVF::IntegerType</a></div><div class="ttdeci">llvm::IntegerType IntegerType</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00095">BasicTypes.h:95</a></div></div>
|
|
@@ -4278,17 +4300,17 @@ Friends</h2></td></tr>
|
|
|
4278
4300
|
<div class="ttc" id="aclassSVF_1_1SVFModule_html_a7af3076a26060090377d1f74293560fe"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a7af3076a26060090377d1f74293560fe">SVF::SVFModule::setPagFromTXT</a></div><div class="ttdeci">static void setPagFromTXT(const std::string &txt)</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00083">SVFModule.h:83</a></div></div>
|
|
4279
4301
|
<div class="ttc" id="aSVFType_8h_html_a1aeda3370621dc00e9a0fe8e7aabc736"><div class="ttname"><a href="SVFType_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a></div><div class="ttdeci">#define TIMEINTERVAL</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00571">SVFType.h:571</a></div></div>
|
|
4280
4302
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a3eaadb33cd21d0bd868526b5ddb051d9"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a3eaadb33cd21d0bd868526b5ddb051d9">SVF::LLVMModuleSet::addBasicBlockMap</a></div><div class="ttdeci">void addBasicBlockMap(const BasicBlock *bb, SVFBasicBlock *svfBB)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00153">LLVMModule.h:153</a></div></div>
|
|
4281
|
-
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a0ef17c1d5e6a95c597d2334ea577a965"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a0ef17c1d5e6a95c597d2334ea577a965">SVF::LLVMModuleSet::getSVFOtherValue</a></div><div class="ttdeci">SVFOtherValue * getSVFOtherValue(const Value *ov)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#
|
|
4303
|
+
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a0ef17c1d5e6a95c597d2334ea577a965"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a0ef17c1d5e6a95c597d2334ea577a965">SVF::LLVMModuleSet::getSVFOtherValue</a></div><div class="ttdeci">SVFOtherValue * getSVFOtherValue(const Value *ov)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01122">LLVMModule.cpp:1122</a></div></div>
|
|
4282
4304
|
<div class="ttc" id="aclassSVF_1_1StInfo_html_a518c82138fcadc6634980566c1c0f762"><div class="ttname"><a href="classSVF_1_1StInfo.html#a518c82138fcadc6634980566c1c0f762">SVF::StInfo::getNumOfFlattenElements</a></div><div class="ttdeci">u32_t getNumOfFlattenElements() const</div><div class="ttdoc">Return number of elements after flattening (including array elements)</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00225">SVFType.h:225</a></div></div>
|
|
4283
4305
|
<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#l00144">LLVMUtil.cpp:144</a></div></div>
|
|
4284
4306
|
<div class="ttc" id="aclassSVF_1_1SVFConstantData_html"><div class="ttname"><a href="classSVF_1_1SVFConstantData.html">SVF::SVFConstantData</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00899">SVFValue.h:899</a></div></div>
|
|
4285
|
-
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a5f0bd932f3129a9c565f3a09711f7b99"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">SVF::LLVMModuleSet::getSVFType</a></div><div class="ttdeci">SVFType * getSVFType(const Type *T)</div><div class="ttdoc">Get or create SVFType and typeinfo.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#
|
|
4307
|
+
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a5f0bd932f3129a9c565f3a09711f7b99"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">SVF::LLVMModuleSet::getSVFType</a></div><div class="ttdeci">SVFType * getSVFType(const Type *T)</div><div class="ttdoc">Get or create SVFType and typeinfo.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01178">LLVMModule.cpp:1178</a></div></div>
|
|
4286
4308
|
<div class="ttc" id="aclassSVF_1_1SVFModule_html_a0bc5a63d8c10da51766007cf40b095e5"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a0bc5a63d8c10da51766007cf40b095e5">SVF::SVFModule::addGlobalSet</a></div><div class="ttdeci">void addGlobalSet(SVFGlobalValue *glob)</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00110">SVFModule.h:110</a></div></div>
|
|
4287
4309
|
<div class="ttc" id="aclassSVF_1_1SVFMetadataAsValue_html"><div class="ttname"><a href="classSVF_1_1SVFMetadataAsValue.html">SVF::SVFMetadataAsValue</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l01053">SVFValue.h:1053</a></div></div>
|
|
4288
4310
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a4b94c96898dbbc71bc1cee04786cf3dc"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a4b94c96898dbbc71bc1cee04786cf3dc">SVF::LLVMModuleSet::LLVMConst2SVFConst</a></div><div class="ttdeci">LLVMConst2SVFConstMap LLVMConst2SVFConst</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00087">LLVMModule.h:87</a></div></div>
|
|
4289
4311
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a2f8e91c075d90be66412a079fe73e936"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a2f8e91c075d90be66412a079fe73e936">SVF::LLVMModuleSet::releaseLLVMModuleSet</a></div><div class="ttdeci">static void releaseLLVMModuleSet()</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00108">LLVMModule.h:108</a></div></div>
|
|
4290
4312
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a50fc24901350df9db890ba16a9b87e33"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">SVF::LLVMModuleSet::getSVFFunction</a></div><div class="ttdeci">SVFFunction * getSVFFunction(const Function *fun) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00198">LLVMModule.h:198</a></div></div>
|
|
4291
|
-
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a946d1251501c7e0e33a9210838951258"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a946d1251501c7e0e33a9210838951258">SVF::LLVMModuleSet::collectStructInfo</a></div><div class="ttdeci">StInfo * collectStructInfo(const StructType *structTy, u32_t &numFields)</div><div class="ttdoc">Collect the struct info and set the number of fields after flattening.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#
|
|
4313
|
+
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a946d1251501c7e0e33a9210838951258"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a946d1251501c7e0e33a9210838951258">SVF::LLVMModuleSet::collectStructInfo</a></div><div class="ttdeci">StInfo * collectStructInfo(const StructType *structTy, u32_t &numFields)</div><div class="ttdoc">Collect the struct info and set the number of fields after flattening.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01342">LLVMModule.cpp:1342</a></div></div>
|
|
4292
4314
|
<div class="ttc" id="anamespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdoc">LLVM Basic classes.</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00080">BasicTypes.h:80</a></div></div>
|
|
4293
4315
|
<div class="ttc" id="aclassSVF_1_1SVFModule_html_ae64d24569942d7c4b18d2198be4839f3"><div class="ttname"><a href="classSVF_1_1SVFModule.html#ae64d24569942d7c4b18d2198be4839f3">SVF::SVFModule::addConstant</a></div><div class="ttdeci">void addConstant(SVFConstant *cd)</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00120">SVFModule.h:120</a></div></div>
|
|
4294
4316
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a8afb7ab3ee4632e78d546e549110e74c"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a8afb7ab3ee4632e78d546e549110e74c">SVF::LLVMModuleSet::getModule</a></div><div class="ttdeci">Module * getModule(u32_t idx) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00134">LLVMModule.h:134</a></div></div>
|
|
@@ -4315,7 +4337,7 @@ Friends</h2></td></tr>
|
|
|
4315
4337
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_ab0c0f321b6bfbfab2e4ff06d81920ab9"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">SVF::LLVMModuleSet::getSVFBasicBlock</a></div><div class="ttdeci">SVFBasicBlock * getSVFBasicBlock(const BasicBlock *bb) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00205">LLVMModule.h:205</a></div></div>
|
|
4316
4338
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a0f9b36699b99dfcfe3c1588bfab6b97c"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a0f9b36699b99dfcfe3c1588bfab6b97c">SVF::LLVMModuleSet::LLVMBB2SVFBB</a></div><div class="ttdeci">LLVMBB2SVFBBMap LLVMBB2SVFBB</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00084">LLVMModule.h:84</a></div></div>
|
|
4317
4339
|
<div class="ttc" id="anamespaceSVF_html_a09f5fa3bc44bf53612a085e3a611cc4e"><div class="ttname"><a href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">SVF::GlobalVariable</a></div><div class="ttdeci">llvm::GlobalVariable GlobalVariable</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00128">BasicTypes.h:128</a></div></div>
|
|
4318
|
-
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a0b46a2a5ff2165d17993a071d9cc82c1"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a0b46a2a5ff2165d17993a071d9cc82c1">SVF::LLVMModuleSet::getLLVMGlobalFunctions</a></div><div class="ttdeci">std::vector< const Function * > getLLVMGlobalFunctions(const GlobalVariable *global)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#
|
|
4340
|
+
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a0b46a2a5ff2165d17993a071d9cc82c1"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a0b46a2a5ff2165d17993a071d9cc82c1">SVF::LLVMModuleSet::getLLVMGlobalFunctions</a></div><div class="ttdeci">std::vector< const Function * > getLLVMGlobalFunctions(const GlobalVariable *global)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00549">LLVMModule.cpp:549</a></div></div>
|
|
4319
4341
|
<div class="ttc" id="aclassSVF_1_1SVFStat_html_aa4950ec26b66a085ad38ac154b789db5"><div class="ttname"><a href="classSVF_1_1SVFStat.html#aa4950ec26b66a085ad38ac154b789db5">SVF::SVFStat::timeOfBuildingLLVMModule</a></div><div class="ttdeci">static double timeOfBuildingLLVMModule</div><div class="ttdef"><b>Definition:</b> <a href="SVFStat_8h_source.html#l00090">SVFStat.h:90</a></div></div>
|
|
4320
4342
|
<div class="ttc" id="anamespaceSVF_html_a0fd33072b099f61eaa642e94ed0c03fc"><div class="ttname"><a href="namespaceSVF.html#a0fd33072b099f61eaa642e94ed0c03fc">SVF::GlobalAlias</a></div><div class="ttdeci">llvm::GlobalAlias GlobalAlias</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00126">BasicTypes.h:126</a></div></div>
|
|
4321
4343
|
<div class="ttc" id="anamespaceSVF_html_aedd9d023a68dddd66314be63bb8e48d2"><div class="ttname"><a href="namespaceSVF.html#aedd9d023a68dddd66314be63bb8e48d2">SVF::operator></a></div><div class="ttdeci">IntervalValue operator>(const IntervalValue &lhs, const IntervalValue &rhs)</div><div class="ttdoc">Greater than IntervalValues.</div><div class="ttdef"><b>Definition:</b> <a href="IntervalValue_8h_source.html#l00581">IntervalValue.h:581</a></div></div>
|
|
@@ -4323,7 +4345,7 @@ Friends</h2></td></tr>
|
|
|
4323
4345
|
<div class="ttc" id="aclassSVF_1_1SVFModule_html_aa6627399cf4d30d576f76f681d83449d"><div class="ttname"><a href="classSVF_1_1SVFModule.html#aa6627399cf4d30d576f76f681d83449d">SVF::SVFModule::addAliasSet</a></div><div class="ttdeci">void addAliasSet(SVFGlobalValue *alias)</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00115">SVFModule.h:115</a></div></div>
|
|
4324
4346
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_ac3e70bd338be3a54330be5dc10321eb3"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ac3e70bd338be3a54330be5dc10321eb3">SVF::LLVMModuleSet::LLVMValue2SVFOtherValue</a></div><div class="ttdeci">LLVMValue2SVFOtherValueMap LLVMValue2SVFOtherValue</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00088">LLVMModule.h:88</a></div></div>
|
|
4325
4347
|
<div class="ttc" id="aclassSVF_1_1SVFStat_html_ac9d390c417df6f6af6b274618b87010d"><div class="ttname"><a href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">SVF::SVFStat::getClk</a></div><div class="ttdeci">static double getClk(bool mark=false)</div><div class="ttdef"><b>Definition:</b> <a href="SVFStat_8cpp_source.html#l00047">SVFStat.cpp:47</a></div></div>
|
|
4326
|
-
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_ac1a9d20d62066ec4e181fad223669e32"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ac1a9d20d62066ec4e181fad223669e32">SVF::LLVMModuleSet::getContext</a></div><div class="ttdeci">LLVMContext & getContext() const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#
|
|
4348
|
+
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_ac1a9d20d62066ec4e181fad223669e32"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ac1a9d20d62066ec4e181fad223669e32">SVF::LLVMModuleSet::getContext</a></div><div class="ttdeci">LLVMContext & getContext() const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00332">LLVMModule.h:332</a></div></div>
|
|
4327
4349
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_aa259d688db36387c824ebfa741d4692d"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#aa259d688db36387c824ebfa741d4692d">SVF::LLVMModuleSet::isUsedExtFunction</a></div><div class="ttdeci">bool isUsedExtFunction(Function *func)</div><div class="ttdoc">Remove unused function in extapi.bc module.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00240">LLVMModule.h:240</a></div></div>
|
|
4328
4350
|
<div class="ttc" id="aclassSVF_1_1SVFVirtualCallInst_html"><div class="ttname"><a href="classSVF_1_1SVFVirtualCallInst.html">SVF::SVFVirtualCallInst</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00735">SVFValue.h:735</a></div></div>
|
|
4329
4351
|
<div class="ttc" id="anamespaceSVF_html_a146d286041987860388da3d8bc85cee3"><div class="ttname"><a href="namespaceSVF.html#a146d286041987860388da3d8bc85cee3">SVF::ArrayType</a></div><div class="ttdeci">llvm::ArrayType ArrayType</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00093">BasicTypes.h:93</a></div></div>
|
|
@@ -4335,7 +4357,7 @@ Friends</h2></td></tr>
|
|
|
4335
4357
|
<div class="ttc" id="aclassSVF_1_1SVFArrayType_html"><div class="ttname"><a href="classSVF_1_1SVFArrayType.html">SVF::SVFArrayType</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00443">SVFType.h:443</a></div></div>
|
|
4336
4358
|
<div class="ttc" id="aLLVMModule_8cpp_html_a10ab7c7da3a458495d8528b9e90d714b"><div class="ttname"><a href="LLVMModule_8cpp.html#a10ab7c7da3a458495d8528b9e90d714b">SVF_MAIN_FUNC_NAME</a></div><div class="ttdeci">#define SVF_MAIN_FUNC_NAME</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00067">LLVMModule.cpp:67</a></div></div>
|
|
4337
4359
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a42439790c217254ce5404622b197b3d0"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a42439790c217254ce5404622b197b3d0">SVF::LLVMModuleSet::LLVMInst2SVFInst</a></div><div class="ttdeci">LLVMInst2SVFInstMap LLVMInst2SVFInst</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00085">LLVMModule.h:85</a></div></div>
|
|
4338
|
-
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a8820d1df9098db6eadf3a9c67e380e55"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a8820d1df9098db6eadf3a9c67e380e55">SVF::LLVMModuleSet::loadExtAPIModules</a></div><div class="ttdeci">void loadExtAPIModules()</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#
|
|
4360
|
+
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a8820d1df9098db6eadf3a9c67e380e55"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a8820d1df9098db6eadf3a9c67e380e55">SVF::LLVMModuleSet::loadExtAPIModules</a></div><div class="ttdeci">void loadExtAPIModules()</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00523">LLVMModule.cpp:523</a></div></div>
|
|
4339
4361
|
<div class="ttc" id="aclassSVF_1_1SVFType_html"><div class="ttname"><a href="classSVF_1_1SVFType.html">SVF::SVFType</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00242">SVFType.h:242</a></div></div>
|
|
4340
4362
|
<div class="ttc" id="aclassSVF_1_1SVFModule_html_a8a0fe93cc13b799fc28540fb312573c6"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a8a0fe93cc13b799fc28540fb312573c6">SVF::SVFModule::addFunctionSet</a></div><div class="ttdeci">void addFunctionSet(SVFFunction *svfFunc)</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00106">SVFModule.h:106</a></div></div>
|
|
4341
4363
|
<div class="ttc" id="aclassSVF_1_1StInfo_html"><div class="ttname"><a href="classSVF_1_1StInfo.html">SVF::StInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00132">SVFType.h:132</a></div></div>
|
|
@@ -4351,31 +4373,31 @@ Friends</h2></td></tr>
|
|
|
4351
4373
|
<div class="ttc" id="aclassSVF_1_1SVFOtherValue_html"><div class="ttname"><a href="classSVF_1_1SVFOtherValue.html">SVF::SVFOtherValue</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l01033">SVFValue.h:1033</a></div></div>
|
|
4352
4374
|
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ad8a8c32a09340f491fffffcb07dd7a41"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ad8a8c32a09340f491fffffcb07dd7a41">SVF::LLVMUtil::isIRFile</a></div><div class="ttdeci">bool isIRFile(const std::string &filename)</div><div class="ttdoc">Check whether a file is an LLVM IR file.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00402">LLVMUtil.cpp:402</a></div></div>
|
|
4353
4375
|
<div class="ttc" id="aclassSVF_1_1Options_html_a3a718b0a27c2d13878c0718af97ad73d"><div class="ttname"><a href="classSVF_1_1Options.html#a3a718b0a27c2d13878c0718af97ad73d">SVF::Options::SVFMain</a></div><div class="ttdeci">static const Option< bool > SVFMain</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00214">Options.h:214</a></div></div>
|
|
4354
|
-
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a9fe3fa15a6a0ec25864cb8439a45596e"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a9fe3fa15a6a0ec25864cb8439a45596e">SVF::LLVMModuleSet::getMainLLVMModule</a></div><div class="ttdeci">Module * getMainLLVMModule() const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#
|
|
4376
|
+
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a9fe3fa15a6a0ec25864cb8439a45596e"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a9fe3fa15a6a0ec25864cb8439a45596e">SVF::LLVMModuleSet::getMainLLVMModule</a></div><div class="ttdeci">Module * getMainLLVMModule() const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00327">LLVMModule.h:327</a></div></div>
|
|
4355
4377
|
<div class="ttc" id="aclassSVF_1_1SVFConstantInt_html"><div class="ttname"><a href="classSVF_1_1SVFConstantInt.html">SVF::SVFConstantInt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00928">SVFValue.h:928</a></div></div>
|
|
4356
4378
|
<div class="ttc" id="aclassSVF_1_1SVFConstantFP_html"><div class="ttname"><a href="classSVF_1_1SVFConstantFP.html">SVF::SVFConstantFP</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00962">SVFValue.h:962</a></div></div>
|
|
4357
|
-
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a298966366b02d0a34f409c2c77da3789"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a298966366b02d0a34f409c2c77da3789">SVF::LLVMModuleSet::loadModules</a></div><div class="ttdeci">void loadModules(const std::vector< std::string > &moduleNameVec)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#
|
|
4358
|
-
<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#
|
|
4379
|
+
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a298966366b02d0a34f409c2c77da3789"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a298966366b02d0a34f409c2c77da3789">SVF::LLVMModuleSet::loadModules</a></div><div class="ttdeci">void loadModules(const std::vector< std::string > &moduleNameVec)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00468">LLVMModule.cpp:468</a></div></div>
|
|
4380
|
+
<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#l00273">LLVMModule.h:273</a></div></div>
|
|
4359
4381
|
<div class="ttc" id="aclassSVF_1_1SVFGlobalValue_html"><div class="ttname"><a href="classSVF_1_1SVFGlobalValue.html">SVF::SVFGlobalValue</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00818">SVFValue.h:818</a></div></div>
|
|
4360
4382
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_ad06a92bf8bc556de742e0ffdf79ffafe"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ad06a92bf8bc556de742e0ffdf79ffafe">SVF::LLVMModuleSet::cxts</a></div><div class="ttdeci">std::unique_ptr< LLVMContext > cxts</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00070">LLVMModule.h:70</a></div></div>
|
|
4361
4383
|
<div class="ttc" id="aclassSVF_1_1SVFModule_html_a1357c876eccedd58b3abe68875b3a570"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a1357c876eccedd58b3abe68875b3a570">SVF::SVFModule::pagReadFromTXT</a></div><div class="ttdeci">static bool pagReadFromTXT()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00098">SVFModule.h:98</a></div></div>
|
|
4362
|
-
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a52853bd34a394882c6fd0fc73739c9f2"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a52853bd34a394882c6fd0fc73739c9f2">SVF::LLVMModuleSet::collectSimpleTypeInfo</a></div><div class="ttdeci">StInfo * collectSimpleTypeInfo(const Type *T)</div><div class="ttdoc">Collect simple type (non-aggregate) info.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#
|
|
4384
|
+
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a52853bd34a394882c6fd0fc73739c9f2"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a52853bd34a394882c6fd0fc73739c9f2">SVF::LLVMModuleSet::collectSimpleTypeInfo</a></div><div class="ttdeci">StInfo * collectSimpleTypeInfo(const Type *T)</div><div class="ttdoc">Collect simple type (non-aggregate) info.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01399">LLVMModule.cpp:1399</a></div></div>
|
|
4363
4385
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_ae365189769640adb919a23c36978e5e2"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ae365189769640adb919a23c36978e5e2">SVF::LLVMModuleSet::owned_modules</a></div><div class="ttdeci">std::vector< std::unique_ptr< Module > > owned_modules</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00071">LLVMModule.h:71</a></div></div>
|
|
4364
4386
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a43832e93a42ae43d44b0cc160981678f"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a43832e93a42ae43d44b0cc160981678f">SVF::LLVMModuleSet::svfModule</a></div><div class="ttdeci">SVFModule * svfModule</div><div class="ttdoc">Borrowed from singleton SVFModule::svfModule.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00069">LLVMModule.h:69</a></div></div>
|
|
4365
4387
|
<div class="ttc" id="aclassSVF_1_1StInfo_html_a1a07c2b1415c29d7d70791c6dfe602a3"><div class="ttname"><a href="classSVF_1_1StInfo.html#a1a07c2b1415c29d7d70791c6dfe602a3">SVF::StInfo::setNumOfFieldsAndElems</a></div><div class="ttdeci">void setNumOfFieldsAndElems(u32_t nf, u32_t ne)</div><div class="ttdoc">Set number of fields and elements of an aggregate.</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00218">SVFType.h:218</a></div></div>
|
|
4366
4388
|
<div class="ttc" id="aclassSVF_1_1SymbolTableInfo_html_a267169023fc4f8dd66b145f7231fec11"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SVF::SymbolTableInfo::SymbolInfo</a></div><div class="ttdeci">static SymbolTableInfo * SymbolInfo()</div><div class="ttdoc">Singleton design here to make sure we only have one instance during any analysis.</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00081">SymbolTableInfo.cpp:81</a></div></div>
|
|
4367
4389
|
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a9e0c786488dfdc4605d4cbcf9943c85a"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a9e0c786488dfdc4605d4cbcf9943c85a">SVF::LLVMUtil::getGlobalRep</a></div><div class="ttdeci">const Value * getGlobalRep(const Value *val)</div><div class="ttdoc">find the unique defined global across multiple modules</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00403">LLVMUtil.h:403</a></div></div>
|
|
4368
|
-
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a8af6b911b728713f66f7c809d5c0fbf1"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a8af6b911b728713f66f7c809d5c0fbf1">SVF::LLVMModuleSet::addSVFMain</a></div><div class="ttdeci">void addSVFMain()</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#
|
|
4369
|
-
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a8ba9092747108e0289014d52465a692d"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a8ba9092747108e0289014d52465a692d">SVF::LLVMModuleSet::initDomTree</a></div><div class="ttdeci">void initDomTree(SVFFunction *func, const Function *f)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#
|
|
4390
|
+
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a8af6b911b728713f66f7c809d5c0fbf1"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a8af6b911b728713f66f7c809d5c0fbf1">SVF::LLVMModuleSet::addSVFMain</a></div><div class="ttdeci">void addSVFMain()</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00638">LLVMModule.cpp:638</a></div></div>
|
|
4391
|
+
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a8ba9092747108e0289014d52465a692d"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a8ba9092747108e0289014d52465a692d">SVF::LLVMModuleSet::initDomTree</a></div><div class="ttdeci">void initDomTree(SVFFunction *func, const Function *f)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00356">LLVMModule.cpp:356</a></div></div>
|
|
4370
4392
|
<div class="ttc" id="anamespaceSVF_html_aa7a770b5dd5cd0e37d06a1088f252906"><div class="ttname"><a href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">SVF::Module</a></div><div class="ttdeci">llvm::Module Module</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00082">BasicTypes.h:82</a></div></div>
|
|
4371
4393
|
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ab1b4c565ae6be788b934defc21a5cfaf"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ab1b4c565ae6be788b934defc21a5cfaf">SVF::LLVMUtil::isVirtualCallSite</a></div><div class="ttdeci">bool isVirtualCallSite(const CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00855">LLVMUtil.cpp:855</a></div></div>
|
|
4372
4394
|
<div class="ttc" id="anamespaceSVF_html_a86863d104a3930b3a806935d92ddbf30"><div class="ttname"><a href="namespaceSVF.html#a86863d104a3930b3a806935d92ddbf30">SVF::SMDiagnostic</a></div><div class="ttdeci">llvm::SMDiagnostic SMDiagnostic</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00088">BasicTypes.h:88</a></div></div>
|
|
4373
|
-
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_ae19e38054c55d5822dfc83a12f12aa60"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ae19e38054c55d5822dfc83a12f12aa60">SVF::LLVMModuleSet::empty</a></div><div class="ttdeci">bool empty() const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#
|
|
4395
|
+
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_ae19e38054c55d5822dfc83a12f12aa60"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ae19e38054c55d5822dfc83a12f12aa60">SVF::LLVMModuleSet::empty</a></div><div class="ttdeci">bool empty() const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00338">LLVMModule.h:338</a></div></div>
|
|
4374
4396
|
<div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_a22ef185e767ff76c098e75126c885400"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">SVF::SVFUtil::isExtCall</a></div><div class="ttdeci">bool isExtCall(const SVFFunction *fun)</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00309">SVFUtil.h:309</a></div></div>
|
|
4375
4397
|
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a428bd75b33fab60988d8758090712f29"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a428bd75b33fab60988d8758090712f29">SVF::LLVMUtil::isArgOfUncalledFunction</a></div><div class="ttdeci">bool isArgOfUncalledFunction(const Value *val)</div><div class="ttdoc">Return true if the argument in a function does not have a caller.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00201">LLVMUtil.h:201</a></div></div>
|
|
4376
4398
|
<div class="ttc" id="aclassSVF_1_1SVFCallInst_html_ac979b49b449b97b2a23f195cb107ec77"><div class="ttname"><a href="classSVF_1_1SVFCallInst.html#ac979b49b449b97b2a23f195cb107ec77">SVF::SVFCallInst::addArgument</a></div><div class="ttdeci">void addArgument(const SVFValue *a)</div><div class="ttdoc">attributes to be set only through Module builders e.g., LLVMModule</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00675">SVFValue.h:675</a></div></div>
|
|
4377
4399
|
<div class="ttc" id="anamespaceSVF_html_ab34383ee87cd45eb485fa29db482ffef"><div class="ttname"><a href="namespaceSVF.html#ab34383ee87cd45eb485fa29db482ffef">SVF::PostDominatorTree</a></div><div class="ttdeci">llvm::PostDominatorTree PostDominatorTree</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00134">BasicTypes.h:134</a></div></div>
|
|
4378
|
-
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_aa8de934358332505d4805db137d8ec29"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#aa8de934358332505d4805db137d8ec29">SVF::LLVMModuleSet::collectArrayInfo</a></div><div class="ttdeci">StInfo * collectArrayInfo(const ArrayType *T)</div><div class="ttdoc">Collect the array info.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#
|
|
4400
|
+
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_aa8de934358332505d4805db137d8ec29"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#aa8de934358332505d4805db137d8ec29">SVF::LLVMModuleSet::collectArrayInfo</a></div><div class="ttdeci">StInfo * collectArrayInfo(const ArrayType *T)</div><div class="ttdoc">Collect the array info.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01279">LLVMModule.cpp:1279</a></div></div>
|
|
4379
4401
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a4ca8c4678a7fefe26372fc1f4b2880fd"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a4ca8c4678a7fefe26372fc1f4b2880fd">SVF::LLVMModuleSet::createSVFDataStructure</a></div><div class="ttdeci">void createSVFDataStructure()</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00152">LLVMModule.cpp:152</a></div></div>
|
|
4380
4402
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a7f8e61cf5d838d7a2e862bc6955f16be"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a7f8e61cf5d838d7a2e862bc6955f16be">SVF::LLVMModuleSet::SVFValue2LLVMValue</a></div><div class="ttdeci">SVFValue2LLVMValueMap SVFValue2LLVMValue</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00089">LLVMModule.h:89</a></div></div>
|
|
4381
4403
|
<div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_a72502f7f536418621485e90ab98c2016"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a72502f7f536418621485e90ab98c2016">SVF::SVFUtil::move</a></div><div class="ttdeci">constexpr std::remove_reference< T >::type && move(T &&t) noexcept</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00655">SVFUtil.h:655</a></div></div>
|
|
@@ -4392,16 +4414,16 @@ Friends</h2></td></tr>
|
|
|
4392
4414
|
<div class="ttc" id="anamespaceSVF_html_a4f21e91ff8eaea5207afe5c60dbd78d7"><div class="ttname"><a href="namespaceSVF.html#a4f21e91ff8eaea5207afe5c60dbd78d7">SVF::OrderedSet</a></div><div class="ttdeci">std::set< Key, Compare, Allocator > OrderedSet</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00106">SVFType.h:106</a></div></div>
|
|
4393
4415
|
<div class="ttc" id="aclassSVF_1_1Options_html_a53f783c80f368bcdca6c7620229d6f8e"><div class="ttname"><a href="classSVF_1_1Options.html#a53f783c80f368bcdca6c7620229d6f8e">SVF::Options::Graphtxt</a></div><div class="ttdeci">static const Option< std::string > Graphtxt</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00213">Options.h:213</a></div></div>
|
|
4394
4416
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_ab671d5bb9ca5761e2b438a4d4da229cf"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ab671d5bb9ca5761e2b438a4d4da229cf">SVF::LLVMModuleSet::addFunctionMap</a></div><div class="ttdeci">void addFunctionMap(const Function *func, SVFFunction *svfFunc)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00148">LLVMModule.h:148</a></div></div>
|
|
4395
|
-
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_ac6a5540354696f4c9170e0a5832ba70e"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ac6a5540354696f4c9170e0a5832ba70e">SVF::LLVMModuleSet::initSVFFunction</a></div><div class="ttdeci">void initSVFFunction()</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#
|
|
4417
|
+
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_ac6a5540354696f4c9170e0a5832ba70e"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ac6a5540354696f4c9170e0a5832ba70e">SVF::LLVMModuleSet::initSVFFunction</a></div><div class="ttdeci">void initSVFFunction()</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00285">LLVMModule.cpp:285</a></div></div>
|
|
4396
4418
|
<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#l00269">BasicTypes.h:269</a></div></div>
|
|
4397
4419
|
<div class="ttc" id="aclassSVF_1_1SymbolTableBuilder_html"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html">SVF::SymbolTableBuilder</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8h_source.html#l00042">SymbolTableBuilder.h:42</a></div></div>
|
|
4398
|
-
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a25821b0feeb3b08e00ec9d444520b727"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a25821b0feeb3b08e00ec9d444520b727">SVF::LLVMModuleSet::getSVFConstantData</a></div><div class="ttdeci">SVFConstantData * getSVFConstantData(const ConstantData *cd)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#
|
|
4420
|
+
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a25821b0feeb3b08e00ec9d444520b727"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a25821b0feeb3b08e00ec9d444520b727">SVF::LLVMModuleSet::getSVFConstantData</a></div><div class="ttdeci">SVFConstantData * getSVFConstantData(const ConstantData *cd)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01059">LLVMModule.cpp:1059</a></div></div>
|
|
4399
4421
|
<div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_aed0b0b9f035057552a6a82154fd88e61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVF::SVFUtil::outs</a></div><div class="ttdeci">std::ostream & outs()</div><div class="ttdoc">Overwrite llvm::outs()</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00050">SVFUtil.h:50</a></div></div>
|
|
4400
4422
|
<div class="ttc" id="aclassSVF_1_1SVFIntegerType_html"><div class="ttname"><a href="classSVF_1_1SVFIntegerType.html">SVF::SVFIntegerType</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00357">SVFType.h:357</a></div></div>
|
|
4401
4423
|
<div class="ttc" id="aclassSVF_1_1SVFStat_html_ae89293bc063bdc74a988e9c37c70321e"><div class="ttname"><a href="classSVF_1_1SVFStat.html#ae89293bc063bdc74a988e9c37c70321e">SVF::SVFStat::timeOfBuildingSymbolTable</a></div><div class="ttdeci">static double timeOfBuildingSymbolTable</div><div class="ttdef"><b>Definition:</b> <a href="SVFStat_8h_source.html#l00091">SVFStat.h:91</a></div></div>
|
|
4402
4424
|
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a3d34fcdfc98add848a34fd5259c11eb2"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a3d34fcdfc98add848a34fd5259c11eb2">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_8h_source.html#l00057">LLVMUtil.h:57</a></div></div>
|
|
4403
4425
|
<div class="ttc" id="aclassSVF_1_1SVFType_html_a3ddabbd763acaaca28cacbabe5bc7f3b"><div class="ttname"><a href="classSVF_1_1SVFType.html#a3ddabbd763acaaca28cacbabe5bc7f3b">SVF::SVFType::setPointerTo</a></div><div class="ttdeci">void setPointerTo(const SVFPointerType *ty)</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00291">SVFType.h:291</a></div></div>
|
|
4404
|
-
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a74256f36f0fdc242df9729906c34efbc"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a74256f36f0fdc242df9729906c34efbc">SVF::LLVMModuleSet::getOtherSVFConstant</a></div><div class="ttdeci">SVFConstant * getOtherSVFConstant(const Constant *oc)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#
|
|
4426
|
+
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a74256f36f0fdc242df9729906c34efbc"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a74256f36f0fdc242df9729906c34efbc">SVF::LLVMModuleSet::getOtherSVFConstant</a></div><div class="ttdeci">SVFConstant * getOtherSVFConstant(const Constant *oc)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01106">LLVMModule.cpp:1106</a></div></div>
|
|
4405
4427
|
<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>
|
|
4406
4428
|
<div class="ttc" id="aclassSVF_1_1SVFFunction_html_a0d5031bd11b6372803082111ec2cb4f6"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#a0d5031bd11b6372803082111ec2cb4f6">SVF::SVFFunction::addBasicBlock</a></div><div class="ttdeci">void addBasicBlock(const SVFBasicBlock *bb)</div><div class="ttdoc">annotations of this function</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00299">SVFValue.h:299</a></div></div>
|
|
4407
4429
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_ae74f307b6f96950ceedb2c375ef1c3a3"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">SVF::LLVMModuleSet::getSVFInstruction</a></div><div class="ttdeci">SVFInstruction * getSVFInstruction(const Instruction *inst) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00212">LLVMModule.h:212</a></div></div>
|
|
@@ -4412,23 +4434,23 @@ Friends</h2></td></tr>
|
|
|
4412
4434
|
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a9bd6f54920929e5ad35102ba2f2223da"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a9bd6f54920929e5ad35102ba2f2223da">SVF::LLVMUtil::getFunReachableBBs</a></div><div class="ttdeci">void getFunReachableBBs(const Function *svfFun, std::vector< const SVFBasicBlock * > &bbs)</div><div class="ttdoc">Get reachable basic block from function entry.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00071">LLVMUtil.cpp:71</a></div></div>
|
|
4413
4435
|
<div class="ttc" id="aclassSVF_1_1SVFBasicBlock_html_a38f8fdd93ef7222f408cbbb2a98a1cd5"><div class="ttname"><a href="classSVF_1_1SVFBasicBlock.html#a38f8fdd93ef7222f408cbbb2a98a1cd5">SVF::SVFBasicBlock::addPredBasicBlock</a></div><div class="ttdeci">void addPredBasicBlock(const SVFBasicBlock *pred)</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00518">SVFValue.h:518</a></div></div>
|
|
4414
4436
|
<div class="ttc" id="aclassSVF_1_1SVFLoopAndDomInfo_html_ad07f95e790b5c3a50c864155aa20a083"><div class="ttname"><a href="classSVF_1_1SVFLoopAndDomInfo.html#ad07f95e790b5c3a50c864155aa20a083">SVF::SVFLoopAndDomInfo::getPostDomTreeMap</a></div><div class="ttdeci">const Map< const SVFBasicBlock *, BBSet > & getPostDomTreeMap() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00105">SVFValue.h:105</a></div></div>
|
|
4415
|
-
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a7d61f479f52e1dc71a4ae7a4d62f3b6a"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a7d61f479f52e1dc71a4ae7a4d62f3b6a">SVF::LLVMModuleSet::setValueAttr</a></div><div class="ttdeci">void setValueAttr(const Value *val, SVFValue *value)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#
|
|
4437
|
+
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a7d61f479f52e1dc71a4ae7a4d62f3b6a"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a7d61f479f52e1dc71a4ae7a4d62f3b6a">SVF::LLVMModuleSet::setValueAttr</a></div><div class="ttdeci">void setValueAttr(const Value *val, SVFValue *value)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01033">LLVMModule.cpp:1033</a></div></div>
|
|
4416
4438
|
<div class="ttc" id="aclassSVF_1_1SVFLoopAndDomInfo_html_ad478ac88bc07cf4d6d0ad3517b2c4ab3"><div class="ttname"><a href="classSVF_1_1SVFLoopAndDomInfo.html#ad478ac88bc07cf4d6d0ad3517b2c4ab3">SVF::SVFLoopAndDomInfo::BBSet</a></div><div class="ttdeci">Set< const SVFBasicBlock * > BBSet</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00055">SVFValue.h:55</a></div></div>
|
|
4417
4439
|
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a4c94a6c02fb89c1a1604c87414956acd"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a4c94a6c02fb89c1a1604c87414956acd">SVF::LLVMUtil::getPrevInsts</a></div><div class="ttdeci">void getPrevInsts(const Instruction *curInst, std::vector< const SVFInstruction * > &instList)</div><div class="ttdoc">Get the previous instructions following control flow.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00306">LLVMUtil.cpp:306</a></div></div>
|
|
4418
4440
|
<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>
|
|
4419
4441
|
<div class="ttc" id="aclassSVF_1_1StInfo_html_aae0736a5e99b11571af52e28500a6f9c"><div class="ttname"><a href="classSVF_1_1StInfo.html#aae0736a5e99b11571af52e28500a6f9c">SVF::StInfo::addFldWithType</a></div><div class="ttdeci">void addFldWithType(u32_t fldIdx, const SVFType *type, u32_t elemIdx)</div><div class="ttdoc">Add field index and element index and their corresponding type.</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8cpp_source.html#l00008">SVFValue.cpp:8</a></div></div>
|
|
4420
|
-
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_afdd77bc1fca91f70b2ec362f1dacd392"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#afdd77bc1fca91f70b2ec362f1dacd392">SVF::LLVMModuleSet::getSVFValue</a></div><div class="ttdeci">SVFValue * getSVFValue(const Value *value)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#
|
|
4421
|
-
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a1f6cc76c996a0577b20b8cedd83fff92"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a1f6cc76c996a0577b20b8cedd83fff92">SVF::LLVMModuleSet::collectTypeInfo</a></div><div class="ttdeci">StInfo * collectTypeInfo(const Type *ty)</div><div class="ttdoc">Collect a type info.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#
|
|
4442
|
+
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_afdd77bc1fca91f70b2ec362f1dacd392"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#afdd77bc1fca91f70b2ec362f1dacd392">SVF::LLVMModuleSet::getSVFValue</a></div><div class="ttdeci">SVFValue * getSVFValue(const Value *value)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01141">LLVMModule.cpp:1141</a></div></div>
|
|
4443
|
+
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a1f6cc76c996a0577b20b8cedd83fff92"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a1f6cc76c996a0577b20b8cedd83fff92">SVF::LLVMModuleSet::collectTypeInfo</a></div><div class="ttdeci">StInfo * collectTypeInfo(const Type *ty)</div><div class="ttdoc">Collect a type info.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01198">LLVMModule.cpp:1198</a></div></div>
|
|
4422
4444
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a067661e0049314779a44c9600420820f"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">SVF::LLVMModuleSet::LLVMType2SVFType</a></div><div class="ttdeci">LLVMType2SVFTypeMap LLVMType2SVFType</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00090">LLVMModule.h:90</a></div></div>
|
|
4423
4445
|
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a4638a12f5481dff947b59cf8353e619b"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a4638a12f5481dff947b59cf8353e619b">SVF::LLVMUtil::isIntrinsicFun</a></div><div class="ttdeci">bool isIntrinsicFun(const Function *func)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00192">LLVMUtil.cpp:192</a></div></div>
|
|
4424
|
-
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a8b5f24c873db1f6a0614d1dac48bb4bb"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a8b5f24c873db1f6a0614d1dac48bb4bb">SVF::LLVMModuleSet::prePassSchedule</a></div><div class="ttdeci">void prePassSchedule()</div><div class="ttdoc">Invoke llvm passes to modify module.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#
|
|
4446
|
+
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a8b5f24c873db1f6a0614d1dac48bb4bb"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a8b5f24c873db1f6a0614d1dac48bb4bb">SVF::LLVMModuleSet::prePassSchedule</a></div><div class="ttdeci">void prePassSchedule()</div><div class="ttdoc">Invoke llvm passes to modify module.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00423">LLVMModule.cpp:423</a></div></div>
|
|
4425
4447
|
<div class="ttc" id="aclassSVF_1_1SVFArgument_html"><div class="ttname"><a href="classSVF_1_1SVFArgument.html">SVF::SVFArgument</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00859">SVFValue.h:859</a></div></div>
|
|
4426
4448
|
<div class="ttc" id="anamespaceSVF_html_ad49e4222ba46d9490b87a80df8b46800"><div class="ttname"><a href="namespaceSVF.html#ad49e4222ba46d9490b87a80df8b46800">SVF::ConstantFP</a></div><div class="ttdeci">llvm::ConstantFP ConstantFP</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00124">BasicTypes.h:124</a></div></div>
|
|
4427
4449
|
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_afbd60d5443c7fa1448813d00bb5d0fa7"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#afbd60d5443c7fa1448813d00bb5d0fa7">SVF::LLVMUtil::getNextInsts</a></div><div class="ttdeci">void getNextInsts(const Instruction *curInst, std::vector< const SVFInstruction * > &instList)</div><div class="ttdoc">Get the next instructions following control flow.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00277">LLVMUtil.cpp:277</a></div></div>
|
|
4428
4450
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a023ea6f179433fa4d007c98ddc38e3c5"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a023ea6f179433fa4d007c98ddc38e3c5">SVF::LLVMModuleSet::addOtherValueMap</a></div><div class="ttdeci">void addOtherValueMap(const Value *ov, SVFOtherValue *svfov)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00183">LLVMModule.h:183</a></div></div>
|
|
4429
4451
|
<div class="ttc" id="aclassSVF_1_1SVFOtherType_html"><div class="ttname"><a href="classSVF_1_1SVFOtherType.html">SVF::SVFOtherType</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00476">SVFType.h:476</a></div></div>
|
|
4430
4452
|
<div class="ttc" id="aSVFType_8h_html_a173ce1b9b505fdadf5613b663749d3b0"><div class="ttname"><a href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a></div><div class="ttdeci">#define DBOUT(TYPE, X)</div><div class="ttdoc">LLVM debug macros, define type of your DBUG model of each pass.</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00543">SVFType.h:543</a></div></div>
|
|
4431
|
-
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a024f5de163fde6f63cb2d762b4b28d8a"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a024f5de163fde6f63cb2d762b4b28d8a">SVF::LLVMModuleSet::createSVFFunction</a></div><div class="ttdeci">void createSVFFunction(const Function *func)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#
|
|
4453
|
+
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a024f5de163fde6f63cb2d762b4b28d8a"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a024f5de163fde6f63cb2d762b4b28d8a">SVF::LLVMModuleSet::createSVFFunction</a></div><div class="ttdeci">void createSVFFunction(const Function *func)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00220">LLVMModule.cpp:220</a></div></div>
|
|
4432
4454
|
<div class="ttc" id="aclassSVF_1_1SVFInstruction_html"><div class="ttname"><a href="classSVF_1_1SVFInstruction.html">SVF::SVFInstruction</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00593">SVFValue.h:593</a></div></div>
|
|
4433
4455
|
<div class="ttc" id="aclassSVF_1_1SVFModule_html_a48d7f0643bb228701dcabb88ef541fca"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a48d7f0643bb228701dcabb88ef541fca">SVF::SVFModule::addOtherValue</a></div><div class="ttdeci">void addOtherValue(SVFOtherValue *ov)</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00124">SVFModule.h:124</a></div></div>
|
|
4434
4456
|
<div class="ttc" id="aclassSVF_1_1SVFLoopAndDomInfo_html_acc409e328f641a2c9512beeb727f58c7"><div class="ttname"><a href="classSVF_1_1SVFLoopAndDomInfo.html#acc409e328f641a2c9512beeb727f58c7">SVF::SVFLoopAndDomInfo::setReachableBBs</a></div><div class="ttdeci">void setReachableBBs(BBList &bbs)</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00136">SVFValue.h:136</a></div></div>
|
|
@@ -4450,7 +4472,7 @@ Friends</h2></td></tr>
|
|
|
4450
4472
|
<div class="ttc" id="anamespaceSVF_html_aacffd97ab4cb45aeae2e67ec479889aa"><div class="ttname"><a href="namespaceSVF.html#aacffd97ab4cb45aeae2e67ec479889aa">SVF::GlobalIFunc</a></div><div class="ttdeci">llvm::GlobalIFunc GlobalIFunc</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00127">BasicTypes.h:127</a></div></div>
|
|
4451
4473
|
<div class="ttc" id="aclassSVF_1_1SVFModule_html_acaba1ff38ed1fdd8a9a1251a1b36be92"><div class="ttname"><a href="classSVF_1_1SVFModule.html#acaba1ff38ed1fdd8a9a1251a1b36be92">SVF::SVFModule::setModuleIdentifier</a></div><div class="ttdeci">void setModuleIdentifier(const std::string &moduleIdentifier)</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00088">SVFModule.h:88</a></div></div>
|
|
4452
4474
|
<div class="ttc" id="aLLVMModule_8cpp_html_aa18802f2f60ef8030c66a42f20f285af"><div class="ttname"><a href="LLVMModule_8cpp.html#aa18802f2f60ef8030c66a42f20f285af">SVF_GLOBAL_CTORS</a></div><div class="ttdeci">#define SVF_GLOBAL_CTORS</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00068">LLVMModule.cpp:68</a></div></div>
|
|
4453
|
-
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a20162d2894d6a12ba29410311fba4002"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a20162d2894d6a12ba29410311fba4002">SVF::LLVMModuleSet::initSVFBasicBlock</a></div><div class="ttdeci">void initSVFBasicBlock(const Function *func)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#
|
|
4475
|
+
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a20162d2894d6a12ba29410311fba4002"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a20162d2894d6a12ba29410311fba4002">SVF::LLVMModuleSet::initSVFBasicBlock</a></div><div class="ttdeci">void initSVFBasicBlock(const Function *func)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00303">LLVMModule.cpp:303</a></div></div>
|
|
4454
4476
|
<!-- start footer part -->
|
|
4455
4477
|
<hr class="footer"/><address class="footer"><small>
|
|
4456
4478
|
Generated by  <a href="http://www.doxygen.org/index.html">
|