svf-tools 1.0.899 → 1.0.901
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/SVF-doxygen/html/ICFGBuilder_8cpp_source.html +1 -1
- package/SVF-doxygen/html/LLVMModule_8cpp_source.html +1334 -1338
- package/SVF-doxygen/html/LLVMModule_8h_source.html +26 -26
- package/SVF-doxygen/html/LLVMUtil_8cpp_source.html +1 -1
- package/SVF-doxygen/html/MTAAnnotator_8cpp_source.html +1 -1
- package/SVF-doxygen/html/MTAResultValidator_8cpp_source.html +1 -1
- package/SVF-doxygen/html/SVFIRBuilder_8cpp_source.html +2 -2
- package/SVF-doxygen/html/SVFIRBuilder_8h_source.html +1 -1
- package/SVF-doxygen/html/SVFIRExtAPI_8cpp_source.html +1 -1
- package/SVF-doxygen/html/SymbolTableBuilder_8cpp_source.html +3 -3
- package/SVF-doxygen/html/classSVF_1_1ICFGBuilder.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1LLVMModuleSet.html +1241 -1245
- package/SVF-doxygen/html/classSVF_1_1MTAAnnotator.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1RaceResultValidator.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1SVFIRBuilder.html +2 -2
- package/SVF-doxygen/html/classSVF_1_1SymbolTableBuilder.html +3 -3
- package/SVF-doxygen/html/svf_2include_2MTA_2MTAResultValidator_8h_source.html +1 -1
- package/package.json +1 -1
- package/svf-llvm/lib/LLVMModule.cpp +10 -14
|
@@ -974,99 +974,99 @@ Friends</h2></td></tr>
|
|
|
974
974
|
</table>
|
|
975
975
|
</div><div class="memdoc">
|
|
976
976
|
|
|
977
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#
|
|
978
|
-
<div class="fragment"><div class="line"><a name="
|
|
979
|
-
<div class="line"><a name="
|
|
980
|
-
<div class="line"><a name="
|
|
981
|
-
<div class="line"><a name="
|
|
982
|
-
<div class="line"><a name="
|
|
983
|
-
<div class="line"><a name="
|
|
984
|
-
<div class="line"><a name="
|
|
985
|
-
<div class="line"><a name="
|
|
986
|
-
<div class="line"><a name="
|
|
987
|
-
<div class="line"><a name="
|
|
988
|
-
<div class="line"><a name="
|
|
989
|
-
<div class="line"><a name="
|
|
990
|
-
<div class="line"><a name="
|
|
991
|
-
<div class="line"><a name="
|
|
992
|
-
<div class="line"><a name="
|
|
993
|
-
<div class="line"><a name="
|
|
994
|
-
<div class="line"><a name="
|
|
995
|
-
<div class="line"><a name="
|
|
996
|
-
<div class="line"><a name="
|
|
997
|
-
<div class="line"><a name="
|
|
977
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00691">691</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
|
|
978
|
+
<div class="fragment"><div class="line"><a name="l00692"></a><span class="lineno"> 692</span> {</div>
|
|
979
|
+
<div class="line"><a name="l00693"></a><span class="lineno"> 693</span>  std::vector<const Function*> ctor_funcs;</div>
|
|
980
|
+
<div class="line"><a name="l00694"></a><span class="lineno"> 694</span>  std::vector<const Function*> dtor_funcs;</div>
|
|
981
|
+
<div class="line"><a name="l00695"></a><span class="lineno"> 695</span>  <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* orgMain = 0;</div>
|
|
982
|
+
<div class="line"><a name="l00696"></a><span class="lineno"> 696</span>  <a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>* mainMod = <span class="keyword">nullptr</span>;</div>
|
|
983
|
+
<div class="line"><a name="l00697"></a><span class="lineno"> 697</span>  </div>
|
|
984
|
+
<div class="line"><a name="l00698"></a><span class="lineno"> 698</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>
|
|
985
|
+
<div class="line"><a name="l00699"></a><span class="lineno"> 699</span>  {</div>
|
|
986
|
+
<div class="line"><a name="l00700"></a><span class="lineno"> 700</span>  <span class="comment">// Collect ctor and dtor functions</span></div>
|
|
987
|
+
<div class="line"><a name="l00701"></a><span class="lineno"> 701</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>& global : mod.globals())</div>
|
|
988
|
+
<div class="line"><a name="l00702"></a><span class="lineno"> 702</span>  {</div>
|
|
989
|
+
<div class="line"><a name="l00703"></a><span class="lineno"> 703</span>  <span class="keywordflow">if</span> (global.getName().equals(<a class="code" href="LLVMModule_8cpp.html#aa18802f2f60ef8030c66a42f20f285af">SVF_GLOBAL_CTORS</a>) && global.hasInitializer())</div>
|
|
990
|
+
<div class="line"><a name="l00704"></a><span class="lineno"> 704</span>  {</div>
|
|
991
|
+
<div class="line"><a name="l00705"></a><span class="lineno"> 705</span>  ctor_funcs = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a0b46a2a5ff2165d17993a071d9cc82c1">getLLVMGlobalFunctions</a>(&global);</div>
|
|
992
|
+
<div class="line"><a name="l00706"></a><span class="lineno"> 706</span>  }</div>
|
|
993
|
+
<div class="line"><a name="l00707"></a><span class="lineno"> 707</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>
|
|
994
|
+
<div class="line"><a name="l00708"></a><span class="lineno"> 708</span>  {</div>
|
|
995
|
+
<div class="line"><a name="l00709"></a><span class="lineno"> 709</span>  dtor_funcs = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a0b46a2a5ff2165d17993a071d9cc82c1">getLLVMGlobalFunctions</a>(&global);</div>
|
|
996
|
+
<div class="line"><a name="l00710"></a><span class="lineno"> 710</span>  }</div>
|
|
997
|
+
<div class="line"><a name="l00711"></a><span class="lineno"> 711</span>  }</div>
|
|
998
|
+
<div class="line"><a name="l00712"></a><span class="lineno"> 712</span>  </div>
|
|
999
|
+
<div class="line"><a name="l00713"></a><span class="lineno"> 713</span>  <span class="comment">// Find main function</span></div>
|
|
1000
|
+
<div class="line"><a name="l00714"></a><span class="lineno"> 714</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> &func : mod)</div>
|
|
1001
|
+
<div class="line"><a name="l00715"></a><span class="lineno"> 715</span>  {</div>
|
|
1002
|
+
<div class="line"><a name="l00716"></a><span class="lineno"> 716</span>  <span class="keyword">auto</span> funName = func.getName();</div>
|
|
998
1003
|
<div class="line"><a name="l00717"></a><span class="lineno"> 717</span>  </div>
|
|
999
|
-
<div class="line"><a name="l00718"></a><span class="lineno"> 718</span> 
|
|
1000
|
-
<div class="line"><a name="l00719"></a><span class="lineno"> 719</span> 
|
|
1001
|
-
<div class="line"><a name="l00720"></a><span class="lineno"> 720</span> 
|
|
1002
|
-
<div class="line"><a name="l00721"></a><span class="lineno"> 721</span> 
|
|
1003
|
-
<div class="line"><a name="l00722"></a><span class="lineno"> 722</span> 
|
|
1004
|
-
<div class="line"><a name="l00723"></a><span class="lineno"> 723</span> 
|
|
1005
|
-
<div class="line"><a name="l00724"></a><span class="lineno"> 724</span> 
|
|
1006
|
-
<div class="line"><a name="l00725"></a><span class="lineno"> 725</span> 
|
|
1007
|
-
<div class="line"><a name="l00726"></a><span class="lineno"> 726</span> 
|
|
1008
|
-
<div class="line"><a name="l00727"></a><span class="lineno"> 727</span> 
|
|
1009
|
-
<div class="line"><a name="l00728"></a><span class="lineno"> 728</span> 
|
|
1010
|
-
<div class="line"><a name="l00729"></a><span class="lineno"> 729</span> 
|
|
1011
|
-
<div class="line"><a name="l00730"></a><span class="lineno"> 730</span> 
|
|
1012
|
-
<div class="line"><a name="l00731"></a><span class="lineno"> 731</span> 
|
|
1013
|
-
<div class="line"><a name="l00732"></a><span class="lineno"> 732</span> 
|
|
1014
|
-
<div class="line"><a name="l00733"></a><span class="lineno"> 733</span> 
|
|
1015
|
-
<div class="line"><a name="l00734"></a><span class="lineno"> 734</span> 
|
|
1016
|
-
<div class="line"><a name="l00735"></a><span class="lineno"> 735</span> 
|
|
1017
|
-
<div class="line"><a name="l00736"></a><span class="lineno"> 736</span> 
|
|
1018
|
-
<div class="line"><a name="l00737"></a><span class="lineno"> 737</span> 
|
|
1019
|
-
<div class="line"><a name="l00738"></a><span class="lineno"> 738</span> 
|
|
1020
|
-
<div class="line"><a name="l00739"></a><span class="lineno"> 739</span> 
|
|
1021
|
-
<div class="line"><a name="l00740"></a><span class="lineno"> 740</span> 
|
|
1022
|
-
<div class="line"><a name="l00741"></a><span class="lineno"> 741</span> 
|
|
1023
|
-
<div class="line"><a name="l00742"></a><span class="lineno"> 742</span> 
|
|
1024
|
-
<div class="line"><a name="l00743"></a><span class="lineno"> 743</span> 
|
|
1025
|
-
<div class="line"><a name="l00744"></a><span class="lineno"> 744</span> 
|
|
1026
|
-
<div class="line"><a name="l00745"></a><span class="lineno"> 745</span> 
|
|
1027
|
-
<div class="line"><a name="l00746"></a><span class="lineno"> 746</span> 
|
|
1028
|
-
<div class="line"><a name="l00747"></a><span class="lineno"> 747</span> 
|
|
1029
|
-
<div class="line"><a name="l00748"></a><span class="lineno"> 748</span> 
|
|
1030
|
-
<div class="line"><a name="l00749"></a><span class="lineno"> 749</span> 
|
|
1031
|
-
<div class="line"><a name="l00750"></a><span class="lineno"> 750</span> 
|
|
1032
|
-
<div class="line"><a name="l00751"></a><span class="lineno"> 751</span> 
|
|
1033
|
-
<div class="line"><a name="l00752"></a><span class="lineno"> 752</span> 
|
|
1034
|
-
<div class="line"><a name="l00753"></a><span class="lineno"> 753</span> 
|
|
1035
|
-
<div class="line"><a name="l00754"></a><span class="lineno"> 754</span> 
|
|
1036
|
-
<div class="line"><a name="l00755"></a><span class="lineno"> 755</span> 
|
|
1037
|
-
<div class="line"><a name="l00756"></a><span class="lineno"> 756</span> 
|
|
1038
|
-
<div class="line"><a name="l00757"></a><span class="lineno"> 757</span> 
|
|
1039
|
-
<div class="line"><a name="l00758"></a><span class="lineno"> 758</span> 
|
|
1040
|
-
<div class="line"><a name="l00759"></a><span class="lineno"> 759</span> 
|
|
1041
|
-
<div class="line"><a name="l00760"></a><span class="lineno"> 760</span> 
|
|
1042
|
-
<div class="line"><a name="l00761"></a><span class="lineno"> 761</span> 
|
|
1043
|
-
<div class="line"><a name="l00762"></a><span class="lineno"> 762</span> 
|
|
1044
|
-
<div class="line"><a name="l00763"></a><span class="lineno"> 763</span> 
|
|
1045
|
-
<div class="line"><a name="l00764"></a><span class="lineno"> 764</span> 
|
|
1046
|
-
<div class="line"><a name="l00765"></a><span class="lineno"> 765</span> 
|
|
1047
|
-
<div class="line"><a name="l00766"></a><span class="lineno"> 766</span> 
|
|
1048
|
-
<div class="line"><a name="l00767"></a><span class="lineno"> 767</span> 
|
|
1049
|
-
<div class="line"><a name="l00768"></a><span class="lineno"> 768</span> 
|
|
1050
|
-
<div class="line"><a name="l00769"></a><span class="lineno"> 769</span> 
|
|
1051
|
-
<div class="line"><a name="l00770"></a><span class="lineno"> 770</span> 
|
|
1052
|
-
<div class="line"><a name="l00771"></a><span class="lineno"> 771</span>  <span class="
|
|
1053
|
-
<div class="line"><a name="l00772"></a><span class="lineno"> 772</span> 
|
|
1054
|
-
<div class="line"><a name="l00773"></a><span class="lineno"> 773</span> 
|
|
1055
|
-
<div class="line"><a name="l00774"></a><span class="lineno"> 774</span>  <
|
|
1056
|
-
<div class="line"><a name="l00775"></a><span class="lineno"> 775</span>  <span class="
|
|
1057
|
-
<div class="line"><a name="l00776"></a><span class="lineno"> 776</span> 
|
|
1058
|
-
<div class="line"><a name="l00777"></a><span class="lineno"> 777</span> 
|
|
1059
|
-
<div class="line"><a name="l00778"></a><span class="lineno"> 778</span> 
|
|
1060
|
-
<div class="line"><a name="l00779"></a><span class="lineno"> 779</span> 
|
|
1061
|
-
<div class="line"><a name="l00780"></a><span class="lineno"> 780</span>  <span class="
|
|
1062
|
-
<div class="line"><a name="l00781"></a><span class="lineno"> 781</span> 
|
|
1063
|
-
<div class="line"><a name="l00782"></a><span class="lineno"> 782</span> 
|
|
1064
|
-
<div class="line"><a name="l00783"></a><span class="lineno"> 783</span> 
|
|
1065
|
-
<div class="line"><a name="l00784"></a><span class="lineno"> 784</span>  }</div>
|
|
1066
|
-
<div class="line"><a name="l00785"></a><span class="lineno"> 785</span>  <span class="comment">// return;</span></div>
|
|
1067
|
-
<div class="line"><a name="l00786"></a><span class="lineno"> 786</span>  Builder.CreateRetVoid();</div>
|
|
1068
|
-
<div class="line"><a name="l00787"></a><span class="lineno"> 787</span>  }</div>
|
|
1069
|
-
<div class="line"><a name="l00788"></a><span class="lineno"> 788</span> }</div>
|
|
1004
|
+
<div class="line"><a name="l00718"></a><span class="lineno"> 718</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>
|
|
1005
|
+
<div class="line"><a name="l00719"></a><span class="lineno"> 719</span>  </div>
|
|
1006
|
+
<div class="line"><a name="l00720"></a><span class="lineno"> 720</span>  <span class="keywordflow">if</span> (funName.equals(<span class="stringliteral">"main"</span>))</div>
|
|
1007
|
+
<div class="line"><a name="l00721"></a><span class="lineno"> 721</span>  {</div>
|
|
1008
|
+
<div class="line"><a name="l00722"></a><span class="lineno"> 722</span>  orgMain = &func;</div>
|
|
1009
|
+
<div class="line"><a name="l00723"></a><span class="lineno"> 723</span>  mainMod = &mod;</div>
|
|
1010
|
+
<div class="line"><a name="l00724"></a><span class="lineno"> 724</span>  }</div>
|
|
1011
|
+
<div class="line"><a name="l00725"></a><span class="lineno"> 725</span>  }</div>
|
|
1012
|
+
<div class="line"><a name="l00726"></a><span class="lineno"> 726</span>  }</div>
|
|
1013
|
+
<div class="line"><a name="l00727"></a><span class="lineno"> 727</span>  </div>
|
|
1014
|
+
<div class="line"><a name="l00728"></a><span class="lineno"> 728</span>  <span class="comment">// Only create svf.main when the original main function is found, and also</span></div>
|
|
1015
|
+
<div class="line"><a name="l00729"></a><span class="lineno"> 729</span>  <span class="comment">// there are global constructor or destructor functions.</span></div>
|
|
1016
|
+
<div class="line"><a name="l00730"></a><span class="lineno"> 730</span>  <span class="keywordflow">if</span> (orgMain && <a class="code" href="classSVF_1_1LLVMModuleSet.html#ae265a7f3cc7367d62013e0f15cf3d233">getModuleNum</a>() > 0 &&</div>
|
|
1017
|
+
<div class="line"><a name="l00731"></a><span class="lineno"> 731</span>  (ctor_funcs.size() > 0 || dtor_funcs.size() > 0))</div>
|
|
1018
|
+
<div class="line"><a name="l00732"></a><span class="lineno"> 732</span>  {</div>
|
|
1019
|
+
<div class="line"><a name="l00733"></a><span class="lineno"> 733</span>  assert(mainMod && <span class="stringliteral">"Module with main function not found."</span>);</div>
|
|
1020
|
+
<div class="line"><a name="l00734"></a><span class="lineno"> 734</span>  <a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>& M = *mainMod;</div>
|
|
1021
|
+
<div class="line"><a name="l00735"></a><span class="lineno"> 735</span>  <span class="comment">// char **</span></div>
|
|
1022
|
+
<div class="line"><a name="l00736"></a><span class="lineno"> 736</span>  <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* ptr = PointerType::getUnqual(M.getContext());</div>
|
|
1023
|
+
<div class="line"><a name="l00737"></a><span class="lineno"> 737</span>  <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* i32 = IntegerType::getInt32Ty(M.getContext());</div>
|
|
1024
|
+
<div class="line"><a name="l00738"></a><span class="lineno"> 738</span>  <span class="comment">// define void @svf.main(i32, i8**, i8**)</span></div>
|
|
1025
|
+
<div class="line"><a name="l00739"></a><span class="lineno"> 739</span> <span class="preprocessor">#if (LLVM_VERSION_MAJOR >= 9)</span></div>
|
|
1026
|
+
<div class="line"><a name="l00740"></a><span class="lineno"> 740</span>  FunctionCallee svfmainFn = M.getOrInsertFunction(</div>
|
|
1027
|
+
<div class="line"><a name="l00741"></a><span class="lineno"> 741</span>  <a class="code" href="LLVMModule_8cpp.html#a10ab7c7da3a458495d8528b9e90d714b">SVF_MAIN_FUNC_NAME</a>,</div>
|
|
1028
|
+
<div class="line"><a name="l00742"></a><span class="lineno"> 742</span>  Type::getVoidTy(M.getContext()),</div>
|
|
1029
|
+
<div class="line"><a name="l00743"></a><span class="lineno"> 743</span>  i32,ptr,ptr</div>
|
|
1030
|
+
<div class="line"><a name="l00744"></a><span class="lineno"> 744</span>  );</div>
|
|
1031
|
+
<div class="line"><a name="l00745"></a><span class="lineno"> 745</span>  <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* svfmain = SVFUtil::dyn_cast<Function>(svfmainFn.getCallee());</div>
|
|
1032
|
+
<div class="line"><a name="l00746"></a><span class="lineno"> 746</span> <span class="preprocessor">#else</span></div>
|
|
1033
|
+
<div class="line"><a name="l00747"></a><span class="lineno"> 747</span>  <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* svfmain = SVFUtil::dyn_cast<Function>(M.getOrInsertFunction(</div>
|
|
1034
|
+
<div class="line"><a name="l00748"></a><span class="lineno"> 748</span>  <a class="code" href="LLVMModule_8cpp.html#a10ab7c7da3a458495d8528b9e90d714b">SVF_MAIN_FUNC_NAME</a>,</div>
|
|
1035
|
+
<div class="line"><a name="l00749"></a><span class="lineno"> 749</span>  Type::getVoidTy(M.getContext()),</div>
|
|
1036
|
+
<div class="line"><a name="l00750"></a><span class="lineno"> 750</span>  i32,i8ptr2,i8ptr2</div>
|
|
1037
|
+
<div class="line"><a name="l00751"></a><span class="lineno"> 751</span>  ));</div>
|
|
1038
|
+
<div class="line"><a name="l00752"></a><span class="lineno"> 752</span> <span class="preprocessor">#endif</span></div>
|
|
1039
|
+
<div class="line"><a name="l00753"></a><span class="lineno"> 753</span>  svfmain->setCallingConv(llvm::CallingConv::C);</div>
|
|
1040
|
+
<div class="line"><a name="l00754"></a><span class="lineno"> 754</span>  <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* block = BasicBlock::Create(M.getContext(), <span class="stringliteral">"entry"</span>, svfmain);</div>
|
|
1041
|
+
<div class="line"><a name="l00755"></a><span class="lineno"> 755</span>  <a class="code" href="namespaceSVF.html#a94824519e439aeef1568d415b6f7331c">IRBuilder</a> Builder(block);</div>
|
|
1042
|
+
<div class="line"><a name="l00756"></a><span class="lineno"> 756</span>  <span class="comment">// emit "call void @ctor()". ctor_funcs is sorted so the functions are</span></div>
|
|
1043
|
+
<div class="line"><a name="l00757"></a><span class="lineno"> 757</span>  <span class="comment">// emitted in the order of priority</span></div>
|
|
1044
|
+
<div class="line"><a name="l00758"></a><span class="lineno"> 758</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span>& ctor : ctor_funcs)</div>
|
|
1045
|
+
<div class="line"><a name="l00759"></a><span class="lineno"> 759</span>  {</div>
|
|
1046
|
+
<div class="line"><a name="l00760"></a><span class="lineno"> 760</span>  <span class="keyword">auto</span> target = M.getOrInsertFunction(</div>
|
|
1047
|
+
<div class="line"><a name="l00761"></a><span class="lineno"> 761</span>  ctor->getName(),</div>
|
|
1048
|
+
<div class="line"><a name="l00762"></a><span class="lineno"> 762</span>  Type::getVoidTy(M.getContext())</div>
|
|
1049
|
+
<div class="line"><a name="l00763"></a><span class="lineno"> 763</span>  );</div>
|
|
1050
|
+
<div class="line"><a name="l00764"></a><span class="lineno"> 764</span>  Builder.CreateCall(target);</div>
|
|
1051
|
+
<div class="line"><a name="l00765"></a><span class="lineno"> 765</span>  }</div>
|
|
1052
|
+
<div class="line"><a name="l00766"></a><span class="lineno"> 766</span>  <span class="comment">// main() should be called after all ctor functions and before dtor</span></div>
|
|
1053
|
+
<div class="line"><a name="l00767"></a><span class="lineno"> 767</span>  <span class="comment">// functions.</span></div>
|
|
1054
|
+
<div class="line"><a name="l00768"></a><span class="lineno"> 768</span>  Function::arg_iterator arg_it = svfmain->arg_begin();</div>
|
|
1055
|
+
<div class="line"><a name="l00769"></a><span class="lineno"> 769</span>  <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* args[] = {arg_it, arg_it + 1, arg_it + 2};</div>
|
|
1056
|
+
<div class="line"><a name="l00770"></a><span class="lineno"> 770</span>  <span class="keywordtype">size_t</span> cnt = orgMain->arg_size();</div>
|
|
1057
|
+
<div class="line"><a name="l00771"></a><span class="lineno"> 771</span>  assert(cnt <= 3 && <span class="stringliteral">"Too many arguments for main()"</span>);</div>
|
|
1058
|
+
<div class="line"><a name="l00772"></a><span class="lineno"> 772</span>  Builder.CreateCall(orgMain, llvm::ArrayRef<Value*>(args, args + cnt));</div>
|
|
1059
|
+
<div class="line"><a name="l00773"></a><span class="lineno"> 773</span>  <span class="comment">// emit "call void @dtor()". dtor_funcs is sorted so the functions are</span></div>
|
|
1060
|
+
<div class="line"><a name="l00774"></a><span class="lineno"> 774</span>  <span class="comment">// emitted in the order of priority</span></div>
|
|
1061
|
+
<div class="line"><a name="l00775"></a><span class="lineno"> 775</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span>& dtor : dtor_funcs)</div>
|
|
1062
|
+
<div class="line"><a name="l00776"></a><span class="lineno"> 776</span>  {</div>
|
|
1063
|
+
<div class="line"><a name="l00777"></a><span class="lineno"> 777</span>  <span class="keyword">auto</span> target = M.getOrInsertFunction(dtor->getName(), Type::getVoidTy(M.getContext()));</div>
|
|
1064
|
+
<div class="line"><a name="l00778"></a><span class="lineno"> 778</span>  Builder.CreateCall(target);</div>
|
|
1065
|
+
<div class="line"><a name="l00779"></a><span class="lineno"> 779</span>  }</div>
|
|
1066
|
+
<div class="line"><a name="l00780"></a><span class="lineno"> 780</span>  <span class="comment">// return;</span></div>
|
|
1067
|
+
<div class="line"><a name="l00781"></a><span class="lineno"> 781</span>  Builder.CreateRetVoid();</div>
|
|
1068
|
+
<div class="line"><a name="l00782"></a><span class="lineno"> 782</span>  }</div>
|
|
1069
|
+
<div class="line"><a name="l00783"></a><span class="lineno"> 783</span> }</div>
|
|
1070
1070
|
</div><!-- fragment -->
|
|
1071
1071
|
</div>
|
|
1072
1072
|
</div>
|
|
@@ -1096,64 +1096,64 @@ Friends</h2></td></tr>
|
|
|
1096
1096
|
|
|
1097
1097
|
<p>Create SVFTypes. </p>
|
|
1098
1098
|
|
|
1099
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#
|
|
1100
|
-
<div class="fragment"><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="
|
|
1099
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01418">1418</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
|
|
1100
|
+
<div class="fragment"><div class="line"><a name="l01419"></a><span class="lineno"> 1419</span> {</div>
|
|
1101
|
+
<div class="line"><a name="l01420"></a><span class="lineno"> 1420</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>
|
|
1102
|
+
<div class="line"><a name="l01421"></a><span class="lineno"> 1421</span>  <span class="stringliteral">"SVFType has been added before"</span>);</div>
|
|
1103
|
+
<div class="line"><a name="l01422"></a><span class="lineno"> 1422</span>  </div>
|
|
1104
|
+
<div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>  <span class="comment">// add SVFType's LLVM byte size iff T isSized(), otherwise byteSize is 1 (default value)</span></div>
|
|
1105
|
+
<div class="line"><a name="l01424"></a><span class="lineno"> 1424</span>  <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> byteSize = 1;</div>
|
|
1106
|
+
<div class="line"><a name="l01425"></a><span class="lineno"> 1425</span>  <span class="keywordflow">if</span> (T->isSized())</div>
|
|
1107
|
+
<div class="line"><a name="l01426"></a><span class="lineno"> 1426</span>  {</div>
|
|
1108
|
+
<div class="line"><a name="l01427"></a><span class="lineno"> 1427</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a03db82b8a7914367024723dba4d6ca3c">llvm::DataLayout</a> &DL = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-></div>
|
|
1109
|
+
<div class="line"><a name="l01428"></a><span class="lineno"> 1428</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a9fe3fa15a6a0ec25864cb8439a45596e">getMainLLVMModule</a>()->getDataLayout();</div>
|
|
1110
|
+
<div class="line"><a name="l01429"></a><span class="lineno"> 1429</span>  <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *mut_T = <span class="keyword">const_cast<</span><a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *<span class="keyword">></span>(T);</div>
|
|
1111
|
+
<div class="line"><a name="l01430"></a><span class="lineno"> 1430</span>  byteSize = DL.getTypeAllocSize(mut_T);</div>
|
|
1112
|
+
<div class="line"><a name="l01431"></a><span class="lineno"> 1431</span>  }</div>
|
|
1113
|
+
<div class="line"><a name="l01432"></a><span class="lineno"> 1432</span>  </div>
|
|
1114
|
+
<div class="line"><a name="l01433"></a><span class="lineno"> 1433</span>  <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* svftype;</div>
|
|
1115
|
+
<div class="line"><a name="l01434"></a><span class="lineno"> 1434</span>  <span class="keywordflow">if</span> (SVFUtil::isa<PointerType>(T))</div>
|
|
1116
|
+
<div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>  {</div>
|
|
1117
|
+
<div class="line"><a name="l01436"></a><span class="lineno"> 1436</span>  svftype = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFPointerType.html">SVFPointerType</a>(byteSize);</div>
|
|
1118
|
+
<div class="line"><a name="l01437"></a><span class="lineno"> 1437</span>  }</div>
|
|
1119
|
+
<div class="line"><a name="l01438"></a><span class="lineno"> 1438</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>
|
|
1116
1120
|
<div class="line"><a name="l01439"></a><span class="lineno"> 1439</span>  {</div>
|
|
1117
|
-
<div class="line"><a name="l01440"></a><span class="lineno"> 1440</span> 
|
|
1118
|
-
<div class="line"><a name="l01441"></a><span class="lineno"> 1441</span> 
|
|
1119
|
-
<div class="line"><a name="l01442"></a><span class="lineno"> 1442</span> 
|
|
1120
|
-
<div class="line"><a name="l01443"></a><span class="lineno"> 1443</span> 
|
|
1121
|
-
<div class="line"><a name="l01444"></a><span class="lineno"> 1444</span> 
|
|
1122
|
-
<div class="line"><a name="l01445"></a><span class="lineno"> 1445</span> 
|
|
1123
|
-
<div class="line"><a name="l01446"></a><span class="lineno"> 1446</span> 
|
|
1124
|
-
<div class="line"><a name="l01447"></a><span class="lineno"> 1447</span> 
|
|
1125
|
-
<div class="line"><a name="l01448"></a><span class="lineno"> 1448</span> 
|
|
1126
|
-
<div class="line"><a name="l01449"></a><span class="lineno"> 1449</span> 
|
|
1127
|
-
<div class="line"><a name="l01450"></a><span class="lineno"> 1450</span> 
|
|
1128
|
-
<div class="line"><a name="l01451"></a><span class="lineno"> 1451</span> 
|
|
1129
|
-
<div class="line"><a name="l01452"></a><span class="lineno"> 1452</span> 
|
|
1130
|
-
<div class="line"><a name="l01453"></a><span class="lineno"> 1453</span> 
|
|
1131
|
-
<div class="line"><a name="l01454"></a><span class="lineno"> 1454</span> 
|
|
1132
|
-
<div class="line"><a name="l01455"></a><span class="lineno"> 1455</span> 
|
|
1133
|
-
<div class="line"><a name="l01456"></a><span class="lineno"> 1456</span> 
|
|
1134
|
-
<div class="line"><a name="l01457"></a><span class="lineno"> 1457</span> 
|
|
1135
|
-
<div class="line"><a name="l01458"></a><span class="lineno"> 1458</span> 
|
|
1136
|
-
<div class="line"><a name="l01459"></a><span class="lineno"> 1459</span> 
|
|
1137
|
-
<div class="line"><a name="l01460"></a><span class="lineno"> 1460</span> 
|
|
1138
|
-
<div class="line"><a name="l01461"></a><span class="lineno"> 1461</span> 
|
|
1139
|
-
<div class="line"><a name="l01462"></a><span class="lineno"> 1462</span> 
|
|
1140
|
-
<div class="line"><a name="l01463"></a><span class="lineno"> 1463</span> 
|
|
1141
|
-
<div class="line"><a name="l01464"></a><span class="lineno"> 1464</span> 
|
|
1142
|
-
<div class="line"><a name="l01465"></a><span class="lineno"> 1465</span> 
|
|
1143
|
-
<div class="line"><a name="l01466"></a><span class="lineno"> 1466</span> 
|
|
1144
|
-
<div class="line"><a name="l01467"></a><span class="lineno"> 1467</span> 
|
|
1145
|
-
<div class="line"><a name="l01468"></a><span class="lineno"> 1468</span> 
|
|
1146
|
-
<div class="line"><a name="l01469"></a><span class="lineno"> 1469</span> 
|
|
1147
|
-
<div class="line"><a name="l01470"></a><span class="lineno"> 1470</span> 
|
|
1148
|
-
<div class="line"><a name="l01471"></a><span class="lineno"> 1471</span> 
|
|
1149
|
-
<div class="line"><a name="l01472"></a><span class="lineno"> 1472</span> 
|
|
1150
|
-
<div class="line"><a name="l01473"></a><span class="lineno"> 1473</span> 
|
|
1151
|
-
<div class="line"><a name="l01474"></a><span class="lineno"> 1474</span>  </div>
|
|
1152
|
-
<div class="line"><a name="l01475"></a><span class="lineno"> 1475</span> 
|
|
1153
|
-
<div class="line"><a name="l01476"></a><span class="lineno"> 1476</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">LLVMType2SVFType</a>[T] = svftype;</div>
|
|
1154
|
-
<div class="line"><a name="l01477"></a><span class="lineno"> 1477</span>  </div>
|
|
1155
|
-
<div class="line"><a name="l01478"></a><span class="lineno"> 1478</span>  <span class="keywordflow">return</span> svftype;</div>
|
|
1156
|
-
<div class="line"><a name="l01479"></a><span class="lineno"> 1479</span> }</div>
|
|
1121
|
+
<div class="line"><a name="l01440"></a><span class="lineno"> 1440</span>  <span class="keyword">auto</span> svfIntT = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFIntegerType.html">SVFIntegerType</a>(byteSize);</div>
|
|
1122
|
+
<div class="line"><a name="l01441"></a><span class="lineno"> 1441</span>  <span class="keywordtype">unsigned</span> signWidth = intT->getBitWidth();</div>
|
|
1123
|
+
<div class="line"><a name="l01442"></a><span class="lineno"> 1442</span>  assert(signWidth < INT16_MAX && <span class="stringliteral">"Integer width too big"</span>);</div>
|
|
1124
|
+
<div class="line"><a name="l01443"></a><span class="lineno"> 1443</span>  svfIntT->setSignAndWidth(intT->getSignBit() ? -signWidth : signWidth);</div>
|
|
1125
|
+
<div class="line"><a name="l01444"></a><span class="lineno"> 1444</span>  svftype = svfIntT;</div>
|
|
1126
|
+
<div class="line"><a name="l01445"></a><span class="lineno"> 1445</span>  }</div>
|
|
1127
|
+
<div class="line"><a name="l01446"></a><span class="lineno"> 1446</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>
|
|
1128
|
+
<div class="line"><a name="l01447"></a><span class="lineno"> 1447</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>
|
|
1129
|
+
<div class="line"><a name="l01448"></a><span class="lineno"> 1448</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>
|
|
1130
|
+
<div class="line"><a name="l01449"></a><span class="lineno"> 1449</span>  {</div>
|
|
1131
|
+
<div class="line"><a name="l01450"></a><span class="lineno"> 1450</span>  <span class="keyword">auto</span> svfst = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFStructType.html">SVFStructType</a>(byteSize);</div>
|
|
1132
|
+
<div class="line"><a name="l01451"></a><span class="lineno"> 1451</span>  <span class="keywordflow">if</span> (st->hasName())</div>
|
|
1133
|
+
<div class="line"><a name="l01452"></a><span class="lineno"> 1452</span>  svfst->setName(st->getName().str());</div>
|
|
1134
|
+
<div class="line"><a name="l01453"></a><span class="lineno"> 1453</span>  svftype = svfst;</div>
|
|
1135
|
+
<div class="line"><a name="l01454"></a><span class="lineno"> 1454</span>  }</div>
|
|
1136
|
+
<div class="line"><a name="l01455"></a><span class="lineno"> 1455</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>
|
|
1137
|
+
<div class="line"><a name="l01456"></a><span class="lineno"> 1456</span>  {</div>
|
|
1138
|
+
<div class="line"><a name="l01457"></a><span class="lineno"> 1457</span>  <span class="keyword">auto</span> svfat = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFArrayType.html">SVFArrayType</a>(byteSize);</div>
|
|
1139
|
+
<div class="line"><a name="l01458"></a><span class="lineno"> 1458</span>  svfat->setNumOfElement(at->getNumElements());</div>
|
|
1140
|
+
<div class="line"><a name="l01459"></a><span class="lineno"> 1459</span>  svfat->setTypeOfElement(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(at->getElementType()));</div>
|
|
1141
|
+
<div class="line"><a name="l01460"></a><span class="lineno"> 1460</span>  svftype = svfat;</div>
|
|
1142
|
+
<div class="line"><a name="l01461"></a><span class="lineno"> 1461</span>  }</div>
|
|
1143
|
+
<div class="line"><a name="l01462"></a><span class="lineno"> 1462</span>  <span class="keywordflow">else</span></div>
|
|
1144
|
+
<div class="line"><a name="l01463"></a><span class="lineno"> 1463</span>  {</div>
|
|
1145
|
+
<div class="line"><a name="l01464"></a><span class="lineno"> 1464</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="cJSON_8h.html#a503753140aa27b00f99a3501280b2746">buffer</a>;</div>
|
|
1146
|
+
<div class="line"><a name="l01465"></a><span class="lineno"> 1465</span>  <span class="keyword">auto</span> ot = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFOtherType.html">SVFOtherType</a>(T->isSingleValueType(), byteSize);</div>
|
|
1147
|
+
<div class="line"><a name="l01466"></a><span class="lineno"> 1466</span>  llvm::raw_string_ostream(<a class="code" href="cJSON_8h.html#a503753140aa27b00f99a3501280b2746">buffer</a>) << *T;</div>
|
|
1148
|
+
<div class="line"><a name="l01467"></a><span class="lineno"> 1467</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>
|
|
1149
|
+
<div class="line"><a name="l01468"></a><span class="lineno"> 1468</span>  svftype = ot;</div>
|
|
1150
|
+
<div class="line"><a name="l01469"></a><span class="lineno"> 1469</span>  }</div>
|
|
1151
|
+
<div class="line"><a name="l01470"></a><span class="lineno"> 1470</span>  </div>
|
|
1152
|
+
<div class="line"><a name="l01471"></a><span class="lineno"> 1471</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>
|
|
1153
|
+
<div class="line"><a name="l01472"></a><span class="lineno"> 1472</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">LLVMType2SVFType</a>[T] = svftype;</div>
|
|
1154
|
+
<div class="line"><a name="l01473"></a><span class="lineno"> 1473</span>  </div>
|
|
1155
|
+
<div class="line"><a name="l01474"></a><span class="lineno"> 1474</span>  <span class="keywordflow">return</span> svftype;</div>
|
|
1156
|
+
<div class="line"><a name="l01475"></a><span class="lineno"> 1475</span> }</div>
|
|
1157
1157
|
</div><!-- fragment -->
|
|
1158
1158
|
</div>
|
|
1159
1159
|
</div>
|
|
@@ -1227,218 +1227,218 @@ Friends</h2></td></tr>
|
|
|
1227
1227
|
<p>App Func decl -> <a class="el" href="namespaceSVF.html" title="for isBitcode">SVF</a> extern Func def</p>
|
|
1228
1228
|
<p>Overwrite App Func def -> <a class="el" href="namespaceSVF.html" title="for isBitcode">SVF</a> extern Func def</p>
|
|
1229
1229
|
|
|
1230
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#
|
|
1231
|
-
<div class="fragment"><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="
|
|
1230
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00899">899</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
|
|
1231
|
+
<div class="fragment"><div class="line"><a name="l00900"></a><span class="lineno"> 900</span> {</div>
|
|
1232
|
+
<div class="line"><a name="l00901"></a><span class="lineno"> 901</span>  <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<const Function*></a> funDecls, funDefs, extFuncs, overwriteExtFuncs;</div>
|
|
1233
|
+
<div class="line"><a name="l00902"></a><span class="lineno"> 902</span>  <a class="code" href="namespaceSVF.html#a4f21e91ff8eaea5207afe5c60dbd78d7">OrderedSet<string></a> declNames, defNames, intersectNames;</div>
|
|
1234
|
+
<div class="line"><a name="l00903"></a><span class="lineno"> 903</span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<string, const Function*></a> NameToFunDefMapTy;</div>
|
|
1235
|
+
<div class="line"><a name="l00904"></a><span class="lineno"> 904</span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<string, Set<const Function*></a>> NameToFunDeclsMapTy;</div>
|
|
1236
|
+
<div class="line"><a name="l00905"></a><span class="lineno"> 905</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>
|
|
1237
|
+
<div class="line"><a name="l00906"></a><span class="lineno"> 906</span>  {</div>
|
|
1238
|
+
<div class="line"><a name="l00907"></a><span class="lineno"> 907</span>  <span class="comment">// extapi.bc functions</span></div>
|
|
1239
|
+
<div class="line"><a name="l00908"></a><span class="lineno"> 908</span>  <span class="keywordflow">if</span> (mod.getName().str() == <a class="code" href="classSVF_1_1ExtAPI.html#a58a764c27354d5f9b70995d30de65f1d">ExtAPI::getExtAPI</a>()-><a class="code" href="classSVF_1_1ExtAPI.html#a26bc352dbfd1b2fe34106a73f1f6d50c">getExtBcPath</a>())</div>
|
|
1240
|
+
<div class="line"><a name="l00909"></a><span class="lineno"> 909</span>  {</div>
|
|
1241
|
+
<div class="line"><a name="l00910"></a><span class="lineno"> 910</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#afb06c18fcf916e84dfacb139f644aa48">collectExtFunAnnotations</a>(&mod);</div>
|
|
1242
|
+
<div class="line"><a name="l00911"></a><span class="lineno"> 911</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>& fun : mod.functions())</div>
|
|
1243
|
+
<div class="line"><a name="l00912"></a><span class="lineno"> 912</span>  {</div>
|
|
1244
|
+
<div class="line"><a name="l00913"></a><span class="lineno"> 913</span>  <span class="comment">// there is main declaration in ext bc, it should be mapped to</span></div>
|
|
1245
|
+
<div class="line"><a name="l00914"></a><span class="lineno"> 914</span>  <span class="comment">// main definition in app bc.</span></div>
|
|
1246
|
+
<div class="line"><a name="l00915"></a><span class="lineno"> 915</span>  <span class="keywordflow">if</span> (fun.getName().str() == <span class="stringliteral">"main"</span>)</div>
|
|
1247
|
+
<div class="line"><a name="l00916"></a><span class="lineno"> 916</span>  {</div>
|
|
1248
|
+
<div class="line"><a name="l00917"></a><span class="lineno"> 917</span>  funDecls.insert(&fun);</div>
|
|
1249
|
+
<div class="line"><a name="l00918"></a><span class="lineno"> 918</span>  declNames.insert(fun.getName().str());</div>
|
|
1250
|
+
<div class="line"><a name="l00919"></a><span class="lineno"> 919</span>  }</div>
|
|
1251
|
+
<div class="line"><a name="l00921"></a><span class="lineno"> 921</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (fun.getName().str() == <span class="stringliteral">"svf__main"</span>)</div>
|
|
1252
|
+
<div class="line"><a name="l00922"></a><span class="lineno"> 922</span>  {</div>
|
|
1253
|
+
<div class="line"><a name="l00923"></a><span class="lineno"> 923</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab932917041e1b1d8b461bfef464330fd">ExtFuncsVec</a>.push_back(&fun);</div>
|
|
1254
|
+
<div class="line"><a name="l00924"></a><span class="lineno"> 924</span>  <span class="comment">// Get all called functions in svf_main()</span></div>
|
|
1255
|
+
<div class="line"><a name="l00925"></a><span class="lineno"> 925</span>  std::vector<const Function*> calledFunctions = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a47d2af43ff12d9e1014fa19256619466">LLVMUtil::getCalledFunctions</a>(&fun);</div>
|
|
1256
|
+
<div class="line"><a name="l00926"></a><span class="lineno"> 926</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab932917041e1b1d8b461bfef464330fd">ExtFuncsVec</a>.insert(<a class="code" href="classSVF_1_1LLVMModuleSet.html#ab932917041e1b1d8b461bfef464330fd">ExtFuncsVec</a>.end(), calledFunctions.begin(), calledFunctions.end());</div>
|
|
1257
|
+
<div class="line"><a name="l00927"></a><span class="lineno"> 927</span>  }</div>
|
|
1258
|
+
<div class="line"><a name="l00928"></a><span class="lineno"> 928</span>  <span class="keywordflow">else</span></div>
|
|
1259
|
+
<div class="line"><a name="l00929"></a><span class="lineno"> 929</span>  {</div>
|
|
1260
|
+
<div class="line"><a name="l00930"></a><span class="lineno"> 930</span>  extFuncs.insert(&fun);</div>
|
|
1261
|
+
<div class="line"><a name="l00931"></a><span class="lineno"> 931</span>  <span class="comment">// Find overwrite functions in extapi.bc</span></div>
|
|
1262
|
+
<div class="line"><a name="l00932"></a><span class="lineno"> 932</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1LLVMModuleSet.html#a7968a00d41166d18acb684052ed1eed8">ExtFun2Annotations</a>.find(&fun) != <a class="code" href="classSVF_1_1LLVMModuleSet.html#a7968a00d41166d18acb684052ed1eed8">ExtFun2Annotations</a>.end())</div>
|
|
1263
|
+
<div class="line"><a name="l00933"></a><span class="lineno"> 933</span>  {</div>
|
|
1264
|
+
<div class="line"><a name="l00934"></a><span class="lineno"> 934</span>  std::vector<std::string> annotations = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a7968a00d41166d18acb684052ed1eed8">ExtFun2Annotations</a>[&fun];</div>
|
|
1265
|
+
<div class="line"><a name="l00935"></a><span class="lineno"> 935</span>  <span class="keyword">auto</span> it =</div>
|
|
1266
|
+
<div class="line"><a name="l00936"></a><span class="lineno"> 936</span>  std::find_if(annotations.begin(), annotations.end(),</div>
|
|
1267
|
+
<div class="line"><a name="l00937"></a><span class="lineno"> 937</span>  [&](<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a>& annotation)</div>
|
|
1268
|
+
<div class="line"><a name="l00938"></a><span class="lineno"> 938</span>  {</div>
|
|
1269
|
+
<div class="line"><a name="l00939"></a><span class="lineno"> 939</span>  return annotation.find(<span class="stringliteral">"OVERWRITE"</span>) !=</div>
|
|
1270
|
+
<div class="line"><a name="l00940"></a><span class="lineno"> 940</span>  std::string::npos;</div>
|
|
1271
|
+
<div class="line"><a name="l00941"></a><span class="lineno"> 941</span>  });</div>
|
|
1272
|
+
<div class="line"><a name="l00942"></a><span class="lineno"> 942</span>  <span class="keywordflow">if</span> (it != annotations.end())</div>
|
|
1268
1273
|
<div class="line"><a name="l00943"></a><span class="lineno"> 943</span>  {</div>
|
|
1269
|
-
<div class="line"><a name="l00944"></a><span class="lineno"> 944</span> 
|
|
1270
|
-
<div class="line"><a name="l00945"></a><span class="lineno"> 945</span> 
|
|
1271
|
-
<div class="line"><a name="l00946"></a><span class="lineno"> 946</span> 
|
|
1272
|
-
<div class="line"><a name="l00947"></a><span class="lineno"> 947</span> 
|
|
1273
|
-
<div class="line"><a name="l00948"></a><span class="lineno"> 948</span> 
|
|
1274
|
-
<div class="line"><a name="l00949"></a><span class="lineno"> 949</span> 
|
|
1275
|
-
<div class="line"><a name="l00950"></a><span class="lineno"> 950</span> 
|
|
1276
|
-
<div class="line"><a name="l00951"></a><span class="lineno"> 951</span> 
|
|
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="l00958"></a><span class="lineno"> 958</span> 
|
|
1283
|
-
<div class="line"><a name="l00959"></a><span class="lineno"> 959</span> 
|
|
1284
|
-
<div class="line"><a name="l00960"></a><span class="lineno"> 960</span>  <span class="keywordflow">
|
|
1274
|
+
<div class="line"><a name="l00944"></a><span class="lineno"> 944</span>  overwriteExtFuncs.insert(&fun);</div>
|
|
1275
|
+
<div class="line"><a name="l00945"></a><span class="lineno"> 945</span>  }</div>
|
|
1276
|
+
<div class="line"><a name="l00946"></a><span class="lineno"> 946</span>  }</div>
|
|
1277
|
+
<div class="line"><a name="l00947"></a><span class="lineno"> 947</span>  }</div>
|
|
1278
|
+
<div class="line"><a name="l00948"></a><span class="lineno"> 948</span>  }</div>
|
|
1279
|
+
<div class="line"><a name="l00949"></a><span class="lineno"> 949</span>  }</div>
|
|
1280
|
+
<div class="line"><a name="l00950"></a><span class="lineno"> 950</span>  <span class="keywordflow">else</span></div>
|
|
1281
|
+
<div class="line"><a name="l00951"></a><span class="lineno"> 951</span>  {</div>
|
|
1282
|
+
<div class="line"><a name="l00953"></a><span class="lineno"> 953</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>& fun : mod.functions())</div>
|
|
1283
|
+
<div class="line"><a name="l00954"></a><span class="lineno"> 954</span>  {</div>
|
|
1284
|
+
<div class="line"><a name="l00955"></a><span class="lineno"> 955</span>  <span class="keywordflow">if</span> (fun.isDeclaration())</div>
|
|
1285
|
+
<div class="line"><a name="l00956"></a><span class="lineno"> 956</span>  {</div>
|
|
1286
|
+
<div class="line"><a name="l00957"></a><span class="lineno"> 957</span>  funDecls.insert(&fun);</div>
|
|
1287
|
+
<div class="line"><a name="l00958"></a><span class="lineno"> 958</span>  declNames.insert(fun.getName().str());</div>
|
|
1288
|
+
<div class="line"><a name="l00959"></a><span class="lineno"> 959</span>  }</div>
|
|
1289
|
+
<div class="line"><a name="l00960"></a><span class="lineno"> 960</span>  <span class="keywordflow">else</span></div>
|
|
1285
1290
|
<div class="line"><a name="l00961"></a><span class="lineno"> 961</span>  {</div>
|
|
1286
|
-
<div class="line"><a name="l00962"></a><span class="lineno"> 962</span> 
|
|
1287
|
-
<div class="line"><a name="l00963"></a><span class="lineno"> 963</span> 
|
|
1291
|
+
<div class="line"><a name="l00962"></a><span class="lineno"> 962</span>  funDefs.insert(&fun);</div>
|
|
1292
|
+
<div class="line"><a name="l00963"></a><span class="lineno"> 963</span>  defNames.insert(fun.getName().str());</div>
|
|
1288
1293
|
<div class="line"><a name="l00964"></a><span class="lineno"> 964</span>  }</div>
|
|
1289
|
-
<div class="line"><a name="l00965"></a><span class="lineno"> 965</span> 
|
|
1290
|
-
<div class="line"><a name="l00966"></a><span class="lineno"> 966</span> 
|
|
1291
|
-
<div class="line"><a name="l00967"></a><span class="lineno"> 967</span> 
|
|
1292
|
-
<div class="line"><a name="l00968"></a><span class="lineno"> 968</span> 
|
|
1293
|
-
<div class="line"><a name="l00969"></a><span class="lineno"> 969</span> 
|
|
1294
|
-
<div class="line"><a name="l00970"></a><span class="lineno"> 970</span> 
|
|
1295
|
-
<div class="line"><a name="l00971"></a><span class="lineno"> 971</span> 
|
|
1296
|
-
<div class="line"><a name="l00972"></a><span class="lineno"> 972</span> 
|
|
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="l00979"></a><span class="lineno"> 979</span> 
|
|
1303
|
-
<div class="line"><a name="l00980"></a><span class="lineno"> 980</span> 
|
|
1304
|
-
<div class="line"><a name="l00981"></a><span class="lineno"> 981</span> 
|
|
1305
|
-
<div class="line"><a name="l00982"></a><span class="lineno"> 982</span> 
|
|
1306
|
-
<div class="line"><a name="l00983"></a><span class="lineno"> 983</span> 
|
|
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="l00990"></a><span class="lineno"> 990</span> 
|
|
1313
|
-
<div class="line"><a name="l00991"></a><span class="lineno"> 991</span> 
|
|
1314
|
-
<div class="line"><a name="l00992"></a><span class="lineno"> 992</span> 
|
|
1315
|
-
<div class="line"><a name="l00993"></a><span class="lineno"> 993</span> 
|
|
1316
|
-
<div class="line"><a name="l00994"></a><span class="lineno"> 994</span> 
|
|
1317
|
-
<div class="line"><a name="l00995"></a><span class="lineno"> 995</span> 
|
|
1318
|
-
<div class="line"><a name="l00996"></a><span class="lineno"> 996</span> 
|
|
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="l01003"></a><span class="lineno"> 1003</span> 
|
|
1325
|
-
<div class="line"><a name="l01004"></a><span class="lineno"> 1004</span> 
|
|
1326
|
-
<div class="line"><a name="l01005"></a><span class="lineno"> 1005</span> 
|
|
1327
|
-
<div class="line"><a name="l01006"></a><span class="lineno"> 1006</span> 
|
|
1328
|
-
<div class="line"><a name="l01007"></a><span class="lineno"> 1007</span> 
|
|
1329
|
-
<div class="line"><a name="l01008"></a><span class="lineno"> 1008</span> 
|
|
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="l01015"></a><span class="lineno"> 1015</span> 
|
|
1336
|
-
<div class="line"><a name="l01016"></a><span class="lineno"> 1016</span> 
|
|
1337
|
-
<div class="line"><a name="l01017"></a><span class="lineno"> 1017</span> 
|
|
1338
|
-
<div class="line"><a name="l01018"></a><span class="lineno"> 1018</span> 
|
|
1339
|
-
<div class="line"><a name="l01019"></a><span class="lineno"> 1019</span> 
|
|
1340
|
-
<div class="line"><a name="l01020"></a><span class="lineno"> 1020</span> 
|
|
1341
|
-
<div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>  <span class="
|
|
1342
|
-
<div class="line"><a name="l01022"></a><span class="lineno"> 1022</span> 
|
|
1294
|
+
<div class="line"><a name="l00965"></a><span class="lineno"> 965</span>  }</div>
|
|
1295
|
+
<div class="line"><a name="l00966"></a><span class="lineno"> 966</span>  }</div>
|
|
1296
|
+
<div class="line"><a name="l00967"></a><span class="lineno"> 967</span>  }</div>
|
|
1297
|
+
<div class="line"><a name="l00968"></a><span class="lineno"> 968</span>  <span class="comment">// Find the intersectNames</span></div>
|
|
1298
|
+
<div class="line"><a name="l00969"></a><span class="lineno"> 969</span>  std::set_intersection(</div>
|
|
1299
|
+
<div class="line"><a name="l00970"></a><span class="lineno"> 970</span>  declNames.begin(), declNames.end(), defNames.begin(), defNames.end(),</div>
|
|
1300
|
+
<div class="line"><a name="l00971"></a><span class="lineno"> 971</span>  std::inserter(intersectNames, intersectNames.end()));</div>
|
|
1301
|
+
<div class="line"><a name="l00972"></a><span class="lineno"> 972</span>  </div>
|
|
1302
|
+
<div class="line"><a name="l00974"></a><span class="lineno"> 974</span>  NameToFunDefMapTy nameToFunDefMap;</div>
|
|
1303
|
+
<div class="line"><a name="l00975"></a><span class="lineno"> 975</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fdef : funDefs)</div>
|
|
1304
|
+
<div class="line"><a name="l00976"></a><span class="lineno"> 976</span>  {</div>
|
|
1305
|
+
<div class="line"><a name="l00977"></a><span class="lineno"> 977</span>  <span class="keywordtype">string</span> funName = fdef->getName().str();</div>
|
|
1306
|
+
<div class="line"><a name="l00978"></a><span class="lineno"> 978</span>  <span class="keywordflow">if</span> (intersectNames.find(funName) != intersectNames.end())</div>
|
|
1307
|
+
<div class="line"><a name="l00979"></a><span class="lineno"> 979</span>  {</div>
|
|
1308
|
+
<div class="line"><a name="l00980"></a><span class="lineno"> 980</span>  nameToFunDefMap.emplace(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a72502f7f536418621485e90ab98c2016">std::move</a>(funName), fdef);</div>
|
|
1309
|
+
<div class="line"><a name="l00981"></a><span class="lineno"> 981</span>  }</div>
|
|
1310
|
+
<div class="line"><a name="l00982"></a><span class="lineno"> 982</span>  }</div>
|
|
1311
|
+
<div class="line"><a name="l00983"></a><span class="lineno"> 983</span>  </div>
|
|
1312
|
+
<div class="line"><a name="l00985"></a><span class="lineno"> 985</span>  NameToFunDeclsMapTy nameToFunDeclsMap;</div>
|
|
1313
|
+
<div class="line"><a name="l00986"></a><span class="lineno"> 986</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fdecl : funDecls)</div>
|
|
1314
|
+
<div class="line"><a name="l00987"></a><span class="lineno"> 987</span>  {</div>
|
|
1315
|
+
<div class="line"><a name="l00988"></a><span class="lineno"> 988</span>  <span class="keywordtype">string</span> funName = fdecl->getName().str();</div>
|
|
1316
|
+
<div class="line"><a name="l00989"></a><span class="lineno"> 989</span>  <span class="keywordflow">if</span> (intersectNames.find(funName) != intersectNames.end())</div>
|
|
1317
|
+
<div class="line"><a name="l00990"></a><span class="lineno"> 990</span>  {</div>
|
|
1318
|
+
<div class="line"><a name="l00991"></a><span class="lineno"> 991</span>  <span class="comment">// pair with key funName will be created automatically if it does</span></div>
|
|
1319
|
+
<div class="line"><a name="l00992"></a><span class="lineno"> 992</span>  <span class="comment">// not exist</span></div>
|
|
1320
|
+
<div class="line"><a name="l00993"></a><span class="lineno"> 993</span>  nameToFunDeclsMap[<a class="code" href="namespaceSVF_1_1SVFUtil.html#a72502f7f536418621485e90ab98c2016">std::move</a>(funName)].insert(fdecl);</div>
|
|
1321
|
+
<div class="line"><a name="l00994"></a><span class="lineno"> 994</span>  }</div>
|
|
1322
|
+
<div class="line"><a name="l00995"></a><span class="lineno"> 995</span>  }</div>
|
|
1323
|
+
<div class="line"><a name="l00996"></a><span class="lineno"> 996</span>  </div>
|
|
1324
|
+
<div class="line"><a name="l00998"></a><span class="lineno"> 998</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fdecl : funDecls)</div>
|
|
1325
|
+
<div class="line"><a name="l00999"></a><span class="lineno"> 999</span>  {</div>
|
|
1326
|
+
<div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>  <span class="keywordtype">string</span> funName = fdecl->getName().str();</div>
|
|
1327
|
+
<div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>  NameToFunDefMapTy::iterator mit;</div>
|
|
1328
|
+
<div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>  <span class="keywordflow">if</span> (intersectNames.find(funName) != intersectNames.end() &&</div>
|
|
1329
|
+
<div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>  (mit = nameToFunDefMap.find(funName)) != nameToFunDefMap.end())</div>
|
|
1330
|
+
<div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>  {</div>
|
|
1331
|
+
<div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#aee80b29e5246e3eaa0e30e165346101f">FunDeclToDefMap</a>[fdecl] = mit->second;</div>
|
|
1332
|
+
<div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>  }</div>
|
|
1333
|
+
<div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>  }</div>
|
|
1334
|
+
<div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>  </div>
|
|
1335
|
+
<div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fdef : funDefs)</div>
|
|
1336
|
+
<div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>  {</div>
|
|
1337
|
+
<div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>  <span class="keywordtype">string</span> funName = fdef->getName().str();</div>
|
|
1338
|
+
<div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>  <span class="keywordflow">if</span> (intersectNames.find(funName) == intersectNames.end())</div>
|
|
1339
|
+
<div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>  <span class="keywordflow">continue</span>;</div>
|
|
1340
|
+
<div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>  NameToFunDeclsMapTy::iterator mit = nameToFunDeclsMap.find(funName);</div>
|
|
1341
|
+
<div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>  <span class="keywordflow">if</span> (mit == nameToFunDeclsMap.end())</div>
|
|
1342
|
+
<div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>  <span class="keywordflow">continue</span>;</div>
|
|
1343
|
+
<div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>  </div>
|
|
1344
|
+
<div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>  std::vector<const Function*>& decls = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a377cefaad4b688ab6edf94ba4abe00ee">FunDefToDeclsMap</a>[fdef];</div>
|
|
1345
|
+
<div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>  <span class="keyword">const</span> <span class="keyword">auto</span>& declsSet = mit->second;</div>
|
|
1346
|
+
<div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>  <span class="comment">// Reserve space for decls to avoid more than 1 reallocation</span></div>
|
|
1347
|
+
<div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>  decls.reserve(decls.size() + declsSet.size());</div>
|
|
1343
1348
|
<div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>  </div>
|
|
1344
|
-
<div class="line"><a name="l01024"></a><span class="lineno"> 1024</span> 
|
|
1345
|
-
<div class="line"><a name="l01025"></a><span class="lineno"> 1025</span> 
|
|
1346
|
-
<div class="line"><a name="l01026"></a><span class="lineno"> 1026</span> 
|
|
1347
|
-
<div class="line"><a name="l01027"></a><span class="lineno"> 1027</span> 
|
|
1348
|
-
<div class="line"><a name="l01028"></a><span class="lineno"> 1028</span> 
|
|
1349
|
-
<div class="line"><a name="l01029"></a><span class="lineno"> 1029</span> 
|
|
1350
|
-
<div class="line"><a name="
|
|
1351
|
-
<div class="line"><a name="
|
|
1352
|
-
<div class="line"><a name="
|
|
1353
|
-
<div class="line"><a name="
|
|
1354
|
-
<div class="line"><a name="
|
|
1355
|
-
<div class="line"><a name="l01036"></a><span class="lineno"> 1036</span> 
|
|
1356
|
-
<div class="line"><a name="l01037"></a><span class="lineno"> 1037</span> 
|
|
1357
|
-
<div class="line"><a name="l01038"></a><span class="lineno"> 1038</span> 
|
|
1358
|
-
<div class="line"><a name="l01039"></a><span class="lineno"> 1039</span> 
|
|
1359
|
-
<div class="line"><a name="l01040"></a><span class="lineno"> 1040</span> 
|
|
1360
|
-
<div class="line"><a name="l01041"></a><span class="lineno"> 1041</span> 
|
|
1361
|
-
<div class="line"><a name="l01042"></a><span class="lineno"> 1042</span> 
|
|
1362
|
-
<div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>  <span class="comment">//
|
|
1363
|
-
<div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>  <
|
|
1364
|
-
<div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>  <
|
|
1365
|
-
<div class="line"><a name="l01046"></a><span class="lineno"> 1046</span> 
|
|
1366
|
-
<div class="line"><a name="l01047"></a><span class="lineno"> 1047</span> 
|
|
1367
|
-
<div class="line"><a name="l01048"></a><span class="lineno"> 1048</span> 
|
|
1368
|
-
<div class="line"><a name="l01049"></a><span class="lineno"> 1049</span> 
|
|
1369
|
-
<div class="line"><a name="l01050"></a><span class="lineno"> 1050</span> 
|
|
1370
|
-
<div class="line"><a name="l01051"></a><span class="lineno"> 1051</span> 
|
|
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="l01059"></a><span class="lineno"> 1059</span> 
|
|
1377
|
-
<div class="line"><a name="l01060"></a><span class="lineno"> 1060</span> 
|
|
1378
|
-
<div class="line"><a name="l01061"></a><span class="lineno"> 1061</span> 
|
|
1379
|
-
<div class="line"><a name="l01062"></a><span class="lineno"> 1062</span> 
|
|
1380
|
-
<div class="line"><a name="l01063"></a><span class="lineno"> 1063</span> 
|
|
1381
|
-
<div class="line"><a name="l01064"></a><span class="lineno"> 1064</span> 
|
|
1382
|
-
<div class="line"><a name="l01065"></a><span class="lineno"> 1065</span> 
|
|
1383
|
-
<div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>  <
|
|
1384
|
-
<div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>  <
|
|
1385
|
-
<div class="line"><a name="l01068"></a><span class="lineno"> 1068</span> 
|
|
1386
|
-
<div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>  <span class="
|
|
1387
|
-
<div class="line"><a name="l01070"></a><span class="lineno"> 1070</span> 
|
|
1388
|
-
<div class="line"><a name="l01071"></a><span class="lineno"> 1071</span> 
|
|
1389
|
-
<div class="line"><a name="l01072"></a><span class="lineno"> 1072</span> 
|
|
1390
|
-
<div class="line"><a name="l01073"></a><span class="lineno"> 1073</span> 
|
|
1391
|
-
<div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>  <span class="keywordflow">if</span> (
|
|
1392
|
-
<div class="line"><a name="l01075"></a><span class="lineno"> 1075</span> 
|
|
1393
|
-
<div class="line"><a name="l01076"></a><span class="lineno"> 1076</span> 
|
|
1394
|
-
<div class="line"><a name="l01077"></a><span class="lineno"> 1077</span> 
|
|
1395
|
-
<div class="line"><a name="l01078"></a><span class="lineno"> 1078</span> 
|
|
1396
|
-
<div class="line"><a name="l01079"></a><span class="lineno"> 1079</span> 
|
|
1397
|
-
<div class="line"><a name="l01080"></a><span class="lineno"> 1080</span> 
|
|
1398
|
-
<div class="line"><a name="l01081"></a><span class="lineno"> 1081</span> 
|
|
1399
|
-
<div class="line"><a name="l01082"></a><span class="lineno"> 1082</span> 
|
|
1400
|
-
<div class="line"><a name="l01083"></a><span class="lineno"> 1083</span> 
|
|
1401
|
-
<div class="line"><a name="l01084"></a><span class="lineno"> 1084</span> 
|
|
1402
|
-
<div class="line"><a name="l01085"></a><span class="lineno"> 1085</span> 
|
|
1403
|
-
<div class="line"><a name="l01086"></a><span class="lineno"> 1086</span> 
|
|
1404
|
-
<div class="line"><a name="l01087"></a><span class="lineno"> 1087</span> 
|
|
1405
|
-
<div class="line"><a name="l01088"></a><span class="lineno"> 1088</span> 
|
|
1406
|
-
<div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>  </div>
|
|
1407
|
-
<div class="line"><a name="l01090"></a><span class="lineno"> 1090</span> 
|
|
1408
|
-
<div class="line"><a name="l01091"></a><span class="lineno"> 1091</span> 
|
|
1409
|
-
<div class="line"><a name="l01092"></a><span class="lineno"> 1092</span> 
|
|
1410
|
-
<div class="line"><a name="l01093"></a><span class="lineno"> 1093</span> 
|
|
1411
|
-
<div class="line"><a name="l01094"></a><span class="lineno"> 1094</span> 
|
|
1412
|
-
<div class="line"><a name="l01095"></a><span class="lineno"> 1095</span> 
|
|
1413
|
-
<div class="line"><a name="l01096"></a><span class="lineno"> 1096</span> 
|
|
1414
|
-
<div class="line"><a name="l01097"></a><span class="lineno"> 1097</span> 
|
|
1415
|
-
<div class="line"><a name="l01098"></a><span class="lineno"> 1098</span> 
|
|
1416
|
-
<div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>  <
|
|
1417
|
-
<div class="line"><a name="l01100"></a><span class="lineno"> 1100</span> 
|
|
1418
|
-
<div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>  </div>
|
|
1419
|
-
<div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>  <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>*
|
|
1420
|
-
<div class="line"><a name="l01103"></a><span class="lineno"> 1103</span> 
|
|
1421
|
-
<div class="line"><a name="l01104"></a><span class="lineno"> 1104</span> 
|
|
1422
|
-
<div class="line"><a name="l01105"></a><span class="lineno"> 1105</span> 
|
|
1423
|
-
<div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>  <span class="comment">//
|
|
1424
|
-
<div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>  <a class="code" href="
|
|
1425
|
-
<div class="line"><a name="l01108"></a><span class="lineno"> 1108</span> 
|
|
1426
|
-
<div class="line"><a name="l01109"></a><span class="lineno"> 1109</span> 
|
|
1427
|
-
<div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>  declaration
|
|
1428
|
-
<div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>  <span class="comment">//
|
|
1429
|
-
<div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>  <
|
|
1430
|
-
<div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>  <
|
|
1431
|
-
<div class="line"><a name="l01114"></a><span class="lineno"> 1114</span> 
|
|
1432
|
-
<div class="line"><a name="l01115"></a><span class="lineno"> 1115</span> 
|
|
1433
|
-
<div class="line"><a name="l01116"></a><span class="lineno"> 1116</span> 
|
|
1434
|
-
<div class="line"><a name="l01117"></a><span class="lineno"> 1117</span> 
|
|
1435
|
-
<div class="line"><a name="l01118"></a><span class="lineno"> 1118</span> 
|
|
1436
|
-
<div class="line"><a name="l01119"></a><span class="lineno"> 1119</span> 
|
|
1437
|
-
<div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>  <span class="keywordflow">break</span>;</div>
|
|
1438
|
-
<div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>  }</div>
|
|
1439
|
-
<div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>  }</div>
|
|
1440
|
-
<div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>  }</div>
|
|
1441
|
-
<div class="line"><a name="l01124"></a><span class="lineno"> 1124</span> }</div>
|
|
1349
|
+
<div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* decl : declsSet)</div>
|
|
1350
|
+
<div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>  {</div>
|
|
1351
|
+
<div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>  decls.push_back(decl);</div>
|
|
1352
|
+
<div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>  }</div>
|
|
1353
|
+
<div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>  }</div>
|
|
1354
|
+
<div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>  </div>
|
|
1355
|
+
<div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fdecl : funDecls)</div>
|
|
1356
|
+
<div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>  {</div>
|
|
1357
|
+
<div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> declName = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#af4c9c5d445107b1816a4be93852ba612">LLVMUtil::restoreFuncName</a>(fdecl->getName().str());</div>
|
|
1358
|
+
<div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* extfun : extFuncs)</div>
|
|
1359
|
+
<div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>  {</div>
|
|
1360
|
+
<div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>  <span class="keywordflow">if</span> (extfun->getName().str().compare(declName) == 0)</div>
|
|
1361
|
+
<div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>  {</div>
|
|
1362
|
+
<div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>  <span class="comment">// AppDecl -> ExtDef in Table 1</span></div>
|
|
1363
|
+
<div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#aee80b29e5246e3eaa0e30e165346101f">FunDeclToDefMap</a>[fdecl] = extfun;</div>
|
|
1364
|
+
<div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>  <span class="comment">// ExtDef -> AppDecl in Table 1</span></div>
|
|
1365
|
+
<div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>  std::vector<const Function*>& decls = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a377cefaad4b688ab6edf94ba4abe00ee">FunDefToDeclsMap</a>[extfun];</div>
|
|
1366
|
+
<div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>  decls.push_back(fdecl);</div>
|
|
1367
|
+
<div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>  <span class="comment">// Keep all called functions in extfun</span></div>
|
|
1368
|
+
<div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>  <span class="comment">// ExtDecl -> ExtDecl in Table 1</span></div>
|
|
1369
|
+
<div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>  std::vector<const Function*> calledFunctions = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a47d2af43ff12d9e1014fa19256619466">LLVMUtil::getCalledFunctions</a>(extfun);</div>
|
|
1370
|
+
<div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab932917041e1b1d8b461bfef464330fd">ExtFuncsVec</a>.insert(<a class="code" href="classSVF_1_1LLVMModuleSet.html#ab932917041e1b1d8b461bfef464330fd">ExtFuncsVec</a>.end(), calledFunctions.begin(), calledFunctions.end());</div>
|
|
1371
|
+
<div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>  <span class="keywordflow">break</span>;</div>
|
|
1372
|
+
<div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>  }</div>
|
|
1373
|
+
<div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>  }</div>
|
|
1374
|
+
<div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>  }</div>
|
|
1375
|
+
<div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>  </div>
|
|
1376
|
+
<div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* appfunc : funDefs)</div>
|
|
1377
|
+
<div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>  {</div>
|
|
1378
|
+
<div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> appfuncName = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#af4c9c5d445107b1816a4be93852ba612">LLVMUtil::restoreFuncName</a>(appfunc->getName().str());</div>
|
|
1379
|
+
<div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* owfunc : overwriteExtFuncs)</div>
|
|
1380
|
+
<div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>  {</div>
|
|
1381
|
+
<div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>  <span class="keywordflow">if</span> (appfuncName.compare(owfunc->getName().str()) == 0)</div>
|
|
1382
|
+
<div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>  {</div>
|
|
1383
|
+
<div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>  <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* returnType1 = appfunc->getReturnType();</div>
|
|
1384
|
+
<div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>  <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* returnType2 = owfunc->getReturnType();</div>
|
|
1385
|
+
<div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>  </div>
|
|
1386
|
+
<div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>  <span class="comment">// Check if the return types are compatible:</span></div>
|
|
1387
|
+
<div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>  <span class="comment">// (1) The types are exactly the same,</span></div>
|
|
1388
|
+
<div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>  <span class="comment">// (2) Both are pointer types, and at least one of them is a void*.</span></div>
|
|
1389
|
+
<div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>  <span class="comment">// Note that getPointerElementType() will be deprecated in the future versions of LLVM.</span></div>
|
|
1390
|
+
<div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>  <span class="comment">// Considering compatibility, avoid using getPointerElementType()->isIntegerTy(8) to determine if it is a void * type.</span></div>
|
|
1391
|
+
<div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>  <span class="keywordflow">if</span> (!(returnType1 == returnType2 || (returnType1->isPointerTy() && returnType2->isPointerTy())))</div>
|
|
1392
|
+
<div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>  {</div>
|
|
1393
|
+
<div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>  <span class="keywordflow">continue</span>;</div>
|
|
1394
|
+
<div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>  }</div>
|
|
1395
|
+
<div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>  </div>
|
|
1396
|
+
<div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>  <span class="keywordflow">if</span> (appfunc->arg_size() != owfunc->arg_size())</div>
|
|
1397
|
+
<div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>  <span class="keywordflow">continue</span>;</div>
|
|
1398
|
+
<div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>  </div>
|
|
1399
|
+
<div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>  <span class="keywordtype">bool</span> argMismatch = <span class="keyword">false</span>;</div>
|
|
1400
|
+
<div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>  Function::const_arg_iterator argIter1 = appfunc->arg_begin();</div>
|
|
1401
|
+
<div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>  Function::const_arg_iterator argIter2 = owfunc->arg_begin();</div>
|
|
1402
|
+
<div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>  <span class="keywordflow">while</span> (argIter1 != appfunc->arg_end() && argIter2 != owfunc->arg_end())</div>
|
|
1403
|
+
<div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>  {</div>
|
|
1404
|
+
<div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>  <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* argType1 = argIter1->getType();</div>
|
|
1405
|
+
<div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>  <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* argType2 = argIter2->getType();</div>
|
|
1406
|
+
<div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>  </div>
|
|
1407
|
+
<div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>  <span class="comment">// Check if the parameters types are compatible: (1) The types are exactly the same, (2) Both are pointer types, and at least one of them is a void*.</span></div>
|
|
1408
|
+
<div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>  <span class="keywordflow">if</span> (!(argType1 == argType2 || (argType1->isPointerTy() && argType2->isPointerTy())))</div>
|
|
1409
|
+
<div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>  {</div>
|
|
1410
|
+
<div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>  argMismatch = <span class="keyword">true</span>;</div>
|
|
1411
|
+
<div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>  <span class="keywordflow">break</span>;</div>
|
|
1412
|
+
<div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>  }</div>
|
|
1413
|
+
<div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>  argIter1++;</div>
|
|
1414
|
+
<div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>  argIter2++;</div>
|
|
1415
|
+
<div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>  }</div>
|
|
1416
|
+
<div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>  <span class="keywordflow">if</span> (argMismatch)</div>
|
|
1417
|
+
<div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>  <span class="keywordflow">continue</span>;</div>
|
|
1418
|
+
<div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>  </div>
|
|
1419
|
+
<div class="line"><a name="l01097"></a><span class="lineno"> 1097</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>
|
|
1420
|
+
<div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>  <a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>* mod = fun->getParent();</div>
|
|
1421
|
+
<div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>  <a class="code" href="namespaceSVF.html#a6ec0236303089a01fd9da36a8bb84e0a">FunctionType</a>* funType = fun->getFunctionType();</div>
|
|
1422
|
+
<div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> funName = fun->getName().str();</div>
|
|
1423
|
+
<div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>  <span class="comment">// Replace app function definition with declaration</span></div>
|
|
1424
|
+
<div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>  <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* declaration = Function::Create(funType, GlobalValue::ExternalLinkage, funName, mod);</div>
|
|
1425
|
+
<div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>  fun->replaceAllUsesWith(declaration);</div>
|
|
1426
|
+
<div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>  fun->eraseFromParent();</div>
|
|
1427
|
+
<div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>  declaration->setName(funName);</div>
|
|
1428
|
+
<div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>  <span class="comment">// AppDef -> ExtDef in Table 1, AppDef has been changed to AppDecl</span></div>
|
|
1429
|
+
<div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#aee80b29e5246e3eaa0e30e165346101f">FunDeclToDefMap</a>[declaration] = owfunc;</div>
|
|
1430
|
+
<div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>  <span class="comment">// ExtDef -> AppDef in Table 1</span></div>
|
|
1431
|
+
<div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>  std::vector<const Function*>& decls = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a377cefaad4b688ab6edf94ba4abe00ee">FunDefToDeclsMap</a>[owfunc];</div>
|
|
1432
|
+
<div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>  decls.push_back(declaration);</div>
|
|
1433
|
+
<div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>  <span class="comment">// Keep all called functions in owfunc</span></div>
|
|
1434
|
+
<div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>  <span class="comment">// ExtDecl -> ExtDecl in Table 1</span></div>
|
|
1435
|
+
<div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>  std::vector<const Function*> calledFunctions = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a47d2af43ff12d9e1014fa19256619466">LLVMUtil::getCalledFunctions</a>(owfunc);</div>
|
|
1436
|
+
<div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab932917041e1b1d8b461bfef464330fd">ExtFuncsVec</a>.insert(<a class="code" href="classSVF_1_1LLVMModuleSet.html#ab932917041e1b1d8b461bfef464330fd">ExtFuncsVec</a>.end(), calledFunctions.begin(), calledFunctions.end());</div>
|
|
1437
|
+
<div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>  <span class="keywordflow">break</span>;</div>
|
|
1438
|
+
<div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>  }</div>
|
|
1439
|
+
<div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>  }</div>
|
|
1440
|
+
<div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>  }</div>
|
|
1441
|
+
<div class="line"><a name="l01119"></a><span class="lineno"> 1119</span> }</div>
|
|
1442
1442
|
</div><!-- fragment -->
|
|
1443
1443
|
</div>
|
|
1444
1444
|
</div>
|
|
@@ -1465,47 +1465,47 @@ Friends</h2></td></tr>
|
|
|
1465
1465
|
</table>
|
|
1466
1466
|
</div><div class="memdoc">
|
|
1467
1467
|
|
|
1468
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#
|
|
1469
|
-
<div class="fragment"><div class="line"><a name="
|
|
1470
|
-
<div class="line"><a name="
|
|
1471
|
-
<div class="line"><a name="
|
|
1472
|
-
<div class="line"><a name="
|
|
1473
|
-
<div class="line"><a name="
|
|
1474
|
-
<div class="line"><a name="
|
|
1475
|
-
<div class="line"><a name="
|
|
1476
|
-
<div class="line"><a name="
|
|
1477
|
-
<div class="line"><a name="
|
|
1478
|
-
<div class="line"><a name="
|
|
1479
|
-
<div class="line"><a name="
|
|
1480
|
-
<div class="line"><a name="
|
|
1481
|
-
<div class="line"><a name="
|
|
1482
|
-
<div class="line"><a name="
|
|
1483
|
-
<div class="line"><a name="
|
|
1484
|
-
<div class="line"><a name="
|
|
1485
|
-
<div class="line"><a name="
|
|
1486
|
-
<div class="line"><a name="
|
|
1487
|
-
<div class="line"><a name="
|
|
1488
|
-
<div class="line"><a name="
|
|
1489
|
-
<div class="line"><a name="
|
|
1490
|
-
<div class="line"><a name="
|
|
1491
|
-
<div class="line"><a name="
|
|
1492
|
-
<div class="line"><a name="
|
|
1493
|
-
<div class="line"><a name="
|
|
1494
|
-
<div class="line"><a name="
|
|
1495
|
-
<div class="line"><a name="
|
|
1496
|
-
<div class="line"><a name="
|
|
1497
|
-
<div class="line"><a name="
|
|
1498
|
-
<div class="line"><a name="
|
|
1499
|
-
<div class="line"><a name="
|
|
1500
|
-
<div class="line"><a name="
|
|
1501
|
-
<div class="line"><a name="
|
|
1502
|
-
<div class="line"><a name="
|
|
1503
|
-
<div class="line"><a name="
|
|
1504
|
-
<div class="line"><a name="
|
|
1505
|
-
<div class="line"><a name="
|
|
1506
|
-
<div class="line"><a name="
|
|
1507
|
-
<div class="line"><a name="
|
|
1508
|
-
<div class="line"><a name="
|
|
1468
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01121">1121</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
|
|
1469
|
+
<div class="fragment"><div class="line"><a name="l01122"></a><span class="lineno"> 1122</span> {</div>
|
|
1470
|
+
<div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<string, Set<GlobalVariable*></a>> NameToGlobalsMapTy;</div>
|
|
1471
|
+
<div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>  NameToGlobalsMapTy nameToGlobalsMap;</div>
|
|
1472
|
+
<div class="line"><a name="l01125"></a><span class="lineno"> 1125</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>
|
|
1473
|
+
<div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>  {</div>
|
|
1474
|
+
<div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>  <span class="comment">// Collect ctor and dtor functions</span></div>
|
|
1475
|
+
<div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>& global : mod.globals())</div>
|
|
1476
|
+
<div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>  {</div>
|
|
1477
|
+
<div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>  <span class="keywordflow">if</span> (global.hasPrivateLinkage())</div>
|
|
1478
|
+
<div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>  <span class="keywordflow">continue</span>;</div>
|
|
1479
|
+
<div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>  <span class="keywordtype">string</span> <a class="code" href="cJSON_8h.html#a25d22ecc7e656d2c59332072684e8766">name</a> = global.getName().str();</div>
|
|
1480
|
+
<div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>  <span class="keywordflow">if</span> (<a class="code" href="cJSON_8h.html#a25d22ecc7e656d2c59332072684e8766">name</a>.empty())</div>
|
|
1481
|
+
<div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>  <span class="keywordflow">continue</span>;</div>
|
|
1482
|
+
<div class="line"><a name="l01135"></a><span class="lineno"> 1135</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>
|
|
1483
|
+
<div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>  }</div>
|
|
1484
|
+
<div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>  }</div>
|
|
1485
|
+
<div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>  </div>
|
|
1486
|
+
<div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>& pair : nameToGlobalsMap)</div>
|
|
1487
|
+
<div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>  {</div>
|
|
1488
|
+
<div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<GlobalVariable*></a> &globals = pair.second;</div>
|
|
1489
|
+
<div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>  </div>
|
|
1490
|
+
<div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>  <span class="keyword">const</span> <span class="keyword">auto</span> repIt =</div>
|
|
1491
|
+
<div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>  std::find_if(globals.begin(), globals.end(),</div>
|
|
1492
|
+
<div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>  [](<a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* g)</div>
|
|
1493
|
+
<div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>  {</div>
|
|
1494
|
+
<div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>  return g->hasInitializer();</div>
|
|
1495
|
+
<div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>  });</div>
|
|
1496
|
+
<div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>  <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* rep =</div>
|
|
1497
|
+
<div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>  repIt != globals.end()</div>
|
|
1498
|
+
<div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>  ? *repIt</div>
|
|
1499
|
+
<div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>  <span class="comment">// When there is no initializer, just pick the first one.</span></div>
|
|
1500
|
+
<div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>  : (assert(!globals.empty() && <span class="stringliteral">"Empty global set"</span>),</div>
|
|
1501
|
+
<div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>  *globals.begin());</div>
|
|
1502
|
+
<div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>  </div>
|
|
1503
|
+
<div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* cur : globals)</div>
|
|
1504
|
+
<div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>  {</div>
|
|
1505
|
+
<div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#ae2a1fa0b908cf372c50af90e62c4bf2b">GlobalDefToRepMap</a>[cur] = rep;</div>
|
|
1506
|
+
<div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>  }</div>
|
|
1507
|
+
<div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>  }</div>
|
|
1508
|
+
<div class="line"><a name="l01161"></a><span class="lineno"> 1161</span> }</div>
|
|
1509
1509
|
</div><!-- fragment -->
|
|
1510
1510
|
</div>
|
|
1511
1511
|
</div>
|
|
@@ -1673,59 +1673,59 @@ Friends</h2></td></tr>
|
|
|
1673
1673
|
<p>Array's flatten field infor is the same as its element's flatten infor.</p>
|
|
1674
1674
|
<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>
|
|
1675
1675
|
|
|
1676
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#
|
|
1677
|
-
<div class="fragment"><div class="line"><a name="
|
|
1678
|
-
<div class="line"><a name="
|
|
1679
|
-
<div class="line"><a name="
|
|
1680
|
-
<div class="line"><a name="
|
|
1681
|
-
<div class="line"><a name="
|
|
1682
|
-
<div class="line"><a name="
|
|
1683
|
-
<div class="line"><a name="
|
|
1684
|
-
<div class="line"><a name="
|
|
1685
|
-
<div class="line"><a name="
|
|
1686
|
-
<div class="line"><a name="
|
|
1687
|
-
<div class="line"><a name="
|
|
1688
|
-
<div class="line"><a name="
|
|
1689
|
-
<div class="line"><a name="
|
|
1690
|
-
<div class="line"><a name="
|
|
1691
|
-
<div class="line"><a name="
|
|
1692
|
-
<div class="line"><a name="
|
|
1693
|
-
<div class="line"><a name="
|
|
1694
|
-
<div class="line"><a name="
|
|
1695
|
-
<div class="line"><a name="
|
|
1696
|
-
<div class="line"><a name="
|
|
1697
|
-
<div class="line"><a name="
|
|
1698
|
-
<div class="line"><a name="
|
|
1699
|
-
<div class="line"><a name="
|
|
1700
|
-
<div class="line"><a name="
|
|
1701
|
-
<div class="line"><a name="
|
|
1702
|
-
<div class="line"><a name="
|
|
1703
|
-
<div class="line"><a name="
|
|
1704
|
-
<div class="line"><a name="
|
|
1705
|
-
<div class="line"><a name="
|
|
1706
|
-
<div class="line"><a name="
|
|
1707
|
-
<div class="line"><a name="
|
|
1708
|
-
<div class="line"><a name="
|
|
1709
|
-
<div class="line"><a name="
|
|
1710
|
-
<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="
|
|
1676
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01480">1480</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
|
|
1677
|
+
<div class="fragment"><div class="line"><a name="l01481"></a><span class="lineno"> 1481</span> {</div>
|
|
1678
|
+
<div class="line"><a name="l01482"></a><span class="lineno"> 1482</span>  <a class="code" href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">u64_t</a> totalElemNum = ty->getNumElements();</div>
|
|
1679
|
+
<div class="line"><a name="l01483"></a><span class="lineno"> 1483</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* elemTy = ty->getElementType();</div>
|
|
1680
|
+
<div class="line"><a name="l01484"></a><span class="lineno"> 1484</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>
|
|
1681
|
+
<div class="line"><a name="l01485"></a><span class="lineno"> 1485</span>  {</div>
|
|
1682
|
+
<div class="line"><a name="l01486"></a><span class="lineno"> 1486</span>  totalElemNum *= aty->getNumElements();</div>
|
|
1683
|
+
<div class="line"><a name="l01487"></a><span class="lineno"> 1487</span>  elemTy = aty->getElementType();</div>
|
|
1684
|
+
<div class="line"><a name="l01488"></a><span class="lineno"> 1488</span>  }</div>
|
|
1685
|
+
<div class="line"><a name="l01489"></a><span class="lineno"> 1489</span>  </div>
|
|
1686
|
+
<div class="line"><a name="l01490"></a><span class="lineno"> 1490</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>
|
|
1687
|
+
<div class="line"><a name="l01491"></a><span class="lineno"> 1491</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>
|
|
1688
|
+
<div class="line"><a name="l01492"></a><span class="lineno"> 1492</span>  </div>
|
|
1689
|
+
<div class="line"><a name="l01494"></a><span class="lineno"> 1494</span>  <span class="keywordflow">if</span> (totalElemNum == 0)</div>
|
|
1690
|
+
<div class="line"><a name="l01495"></a><span class="lineno"> 1495</span>  {</div>
|
|
1691
|
+
<div class="line"><a name="l01496"></a><span class="lineno"> 1496</span>  stInfo-><a class="code" href="classSVF_1_1StInfo.html#a00339d1d7074e9222776801ce8689f6b">addFldWithType</a>(0, elemSvfType, 0);</div>
|
|
1692
|
+
<div class="line"><a name="l01497"></a><span class="lineno"> 1497</span>  stInfo-><a class="code" href="classSVF_1_1StInfo.html#a1a07c2b1415c29d7d70791c6dfe602a3">setNumOfFieldsAndElems</a>(1, 1);</div>
|
|
1693
|
+
<div class="line"><a name="l01498"></a><span class="lineno"> 1498</span>  stInfo-><a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>().push_back(elemSvfType);</div>
|
|
1694
|
+
<div class="line"><a name="l01499"></a><span class="lineno"> 1499</span>  stInfo-><a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().push_back(elemSvfType);</div>
|
|
1695
|
+
<div class="line"><a name="l01500"></a><span class="lineno"> 1500</span>  <span class="keywordflow">return</span> stInfo;</div>
|
|
1696
|
+
<div class="line"><a name="l01501"></a><span class="lineno"> 1501</span>  }</div>
|
|
1697
|
+
<div class="line"><a name="l01502"></a><span class="lineno"> 1502</span>  </div>
|
|
1698
|
+
<div class="line"><a name="l01505"></a><span class="lineno"> 1505</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>
|
|
1699
|
+
<div class="line"><a name="l01506"></a><span class="lineno"> 1506</span>  <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> nfF = elemStInfo-><a class="code" href="classSVF_1_1StInfo.html#ae5fad367673315da57a604e64b5889f0">getNumOfFlattenFields</a>();</div>
|
|
1700
|
+
<div class="line"><a name="l01507"></a><span class="lineno"> 1507</span>  <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> nfE = elemStInfo-><a class="code" href="classSVF_1_1StInfo.html#a518c82138fcadc6634980566c1c0f762">getNumOfFlattenElements</a>();</div>
|
|
1701
|
+
<div class="line"><a name="l01508"></a><span class="lineno"> 1508</span>  <span class="keywordflow">for</span> (<a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> j = 0; j < nfF; j++)</div>
|
|
1702
|
+
<div class="line"><a name="l01509"></a><span class="lineno"> 1509</span>  {</div>
|
|
1703
|
+
<div class="line"><a name="l01510"></a><span class="lineno"> 1510</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>
|
|
1704
|
+
<div class="line"><a name="l01511"></a><span class="lineno"> 1511</span>  stInfo-><a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>().push_back(fieldTy);</div>
|
|
1705
|
+
<div class="line"><a name="l01512"></a><span class="lineno"> 1512</span>  }</div>
|
|
1706
|
+
<div class="line"><a name="l01513"></a><span class="lineno"> 1513</span>  </div>
|
|
1707
|
+
<div class="line"><a name="l01516"></a><span class="lineno"> 1516</span>  <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> outArrayElemNum = ty->getNumElements();</div>
|
|
1708
|
+
<div class="line"><a name="l01517"></a><span class="lineno"> 1517</span>  <span class="keywordflow">for</span> (<a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> i = 0; i < outArrayElemNum; ++i)</div>
|
|
1709
|
+
<div class="line"><a name="l01518"></a><span class="lineno"> 1518</span>  {</div>
|
|
1710
|
+
<div class="line"><a name="l01519"></a><span class="lineno"> 1519</span>  <span class="keyword">auto</span> idx = (i * nfE * totalElemNum) / outArrayElemNum;</div>
|
|
1711
|
+
<div class="line"><a name="l01520"></a><span class="lineno"> 1520</span>  stInfo-><a class="code" href="classSVF_1_1StInfo.html#a00339d1d7074e9222776801ce8689f6b">addFldWithType</a>(0, elemSvfType, idx);</div>
|
|
1712
|
+
<div class="line"><a name="l01521"></a><span class="lineno"> 1521</span>  }</div>
|
|
1713
|
+
<div class="line"><a name="l01522"></a><span class="lineno"> 1522</span>  </div>
|
|
1714
|
+
<div class="line"><a name="l01523"></a><span class="lineno"> 1523</span>  <span class="keywordflow">for</span> (<a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> i = 0; i < totalElemNum; ++i)</div>
|
|
1715
|
+
<div class="line"><a name="l01524"></a><span class="lineno"> 1524</span>  {</div>
|
|
1716
|
+
<div class="line"><a name="l01525"></a><span class="lineno"> 1525</span>  <span class="keywordflow">for</span> (<a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> j = 0; j < nfE; ++j)</div>
|
|
1717
|
+
<div class="line"><a name="l01526"></a><span class="lineno"> 1526</span>  {</div>
|
|
1718
|
+
<div class="line"><a name="l01527"></a><span class="lineno"> 1527</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>
|
|
1719
|
+
<div class="line"><a name="l01528"></a><span class="lineno"> 1528</span>  stInfo-><a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().push_back(et);</div>
|
|
1720
|
+
<div class="line"><a name="l01529"></a><span class="lineno"> 1529</span>  }</div>
|
|
1721
|
+
<div class="line"><a name="l01530"></a><span class="lineno"> 1530</span>  }</div>
|
|
1722
|
+
<div class="line"><a name="l01531"></a><span class="lineno"> 1531</span>  </div>
|
|
1723
|
+
<div class="line"><a name="l01532"></a><span class="lineno"> 1532</span>  assert(stInfo-><a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().size() == nfE * totalElemNum &&</div>
|
|
1724
|
+
<div class="line"><a name="l01533"></a><span class="lineno"> 1533</span>  <span class="stringliteral">"typeForArray size incorrect!!!"</span>);</div>
|
|
1725
|
+
<div class="line"><a name="l01534"></a><span class="lineno"> 1534</span>  stInfo-><a class="code" href="classSVF_1_1StInfo.html#a1a07c2b1415c29d7d70791c6dfe602a3">setNumOfFieldsAndElems</a>(nfF, nfE * totalElemNum);</div>
|
|
1722
1726
|
<div class="line"><a name="l01535"></a><span class="lineno"> 1535</span>  </div>
|
|
1723
|
-
<div class="line"><a name="l01536"></a><span class="lineno"> 1536</span> 
|
|
1724
|
-
<div class="line"><a name="l01537"></a><span class="lineno"> 1537</span> 
|
|
1725
|
-
<div class="line"><a name="l01538"></a><span class="lineno"> 1538</span>  stInfo-><a class="code" href="classSVF_1_1StInfo.html#a1a07c2b1415c29d7d70791c6dfe602a3">setNumOfFieldsAndElems</a>(nfF, nfE * totalElemNum);</div>
|
|
1726
|
-
<div class="line"><a name="l01539"></a><span class="lineno"> 1539</span>  </div>
|
|
1727
|
-
<div class="line"><a name="l01540"></a><span class="lineno"> 1540</span>  <span class="keywordflow">return</span> stInfo;</div>
|
|
1728
|
-
<div class="line"><a name="l01541"></a><span class="lineno"> 1541</span> }</div>
|
|
1727
|
+
<div class="line"><a name="l01536"></a><span class="lineno"> 1536</span>  <span class="keywordflow">return</span> stInfo;</div>
|
|
1728
|
+
<div class="line"><a name="l01537"></a><span class="lineno"> 1537</span> }</div>
|
|
1729
1729
|
</div><!-- fragment -->
|
|
1730
1730
|
</div>
|
|
1731
1731
|
</div>
|
|
@@ -1755,54 +1755,54 @@ Friends</h2></td></tr>
|
|
|
1755
1755
|
<p>Non-opaque pointer</p>
|
|
1756
1756
|
<p>Opaque pointer</p>
|
|
1757
1757
|
|
|
1758
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#
|
|
1759
|
-
<div class="fragment"><div class="line"><a name="
|
|
1760
|
-
<div class="line"><a name="
|
|
1761
|
-
<div class="line"><a name="
|
|
1762
|
-
<div class="line"><a name="
|
|
1763
|
-
<div class="line"><a name="
|
|
1764
|
-
<div class="line"><a name="
|
|
1765
|
-
<div class="line"><a name="
|
|
1766
|
-
<div class="line"><a name="
|
|
1767
|
-
<div class="line"><a name="
|
|
1768
|
-
<div class="line"><a name="
|
|
1769
|
-
<div class="line"><a name="
|
|
1770
|
-
<div class="line"><a name="
|
|
1771
|
-
<div class="line"><a name="
|
|
1772
|
-
<div class="line"><a name="
|
|
1773
|
-
<div class="line"><a name="
|
|
1774
|
-
<div class="line"><a name="
|
|
1775
|
-
<div class="line"><a name="
|
|
1776
|
-
<div class="line"><a name="
|
|
1777
|
-
<div class="line"><a name="
|
|
1778
|
-
<div class="line"><a name="
|
|
1779
|
-
<div class="line"><a name="
|
|
1780
|
-
<div class="line"><a name="
|
|
1781
|
-
<div class="line"><a name="
|
|
1782
|
-
<div class="line"><a name="
|
|
1783
|
-
<div class="line"><a name="
|
|
1784
|
-
<div class="line"><a name="
|
|
1785
|
-
<div class="line"><a name="
|
|
1786
|
-
<div class="line"><a name="
|
|
1787
|
-
<div class="line"><a name="
|
|
1788
|
-
<div class="line"><a name="
|
|
1789
|
-
<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="
|
|
1758
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00785">785</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
|
|
1759
|
+
<div class="fragment"><div class="line"><a name="l00786"></a><span class="lineno"> 786</span> {</div>
|
|
1760
|
+
<div class="line"><a name="l00787"></a><span class="lineno"> 787</span>  <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a> *glob = mod->getGlobalVariable(<span class="stringliteral">"llvm.global.annotations"</span>);</div>
|
|
1761
|
+
<div class="line"><a name="l00788"></a><span class="lineno"> 788</span>  <span class="keywordflow">if</span> (glob == <span class="keyword">nullptr</span> || !glob->hasInitializer())</div>
|
|
1762
|
+
<div class="line"><a name="l00789"></a><span class="lineno"> 789</span>  <span class="keywordflow">return</span>;</div>
|
|
1763
|
+
<div class="line"><a name="l00790"></a><span class="lineno"> 790</span>  </div>
|
|
1764
|
+
<div class="line"><a name="l00791"></a><span class="lineno"> 791</span>  <a class="code" href="namespaceSVF.html#a5ae718cba37d8e34d2946530dc098c8e">ConstantArray</a> *ca = SVFUtil::dyn_cast<ConstantArray>(glob->getInitializer());</div>
|
|
1765
|
+
<div class="line"><a name="l00792"></a><span class="lineno"> 792</span>  <span class="keywordflow">if</span> (ca == <span class="keyword">nullptr</span>)</div>
|
|
1766
|
+
<div class="line"><a name="l00793"></a><span class="lineno"> 793</span>  <span class="keywordflow">return</span>;</div>
|
|
1767
|
+
<div class="line"><a name="l00794"></a><span class="lineno"> 794</span>  </div>
|
|
1768
|
+
<div class="line"><a name="l00795"></a><span class="lineno"> 795</span>  <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i < ca->getNumOperands(); ++i)</div>
|
|
1769
|
+
<div class="line"><a name="l00796"></a><span class="lineno"> 796</span>  {</div>
|
|
1770
|
+
<div class="line"><a name="l00797"></a><span class="lineno"> 797</span>  <a class="code" href="namespaceSVF.html#a2b28f48dde0a9a91d251e654ce1f9477">ConstantStruct</a> *structAn = SVFUtil::dyn_cast<ConstantStruct>(ca->getOperand(i));</div>
|
|
1771
|
+
<div class="line"><a name="l00798"></a><span class="lineno"> 798</span>  <span class="keywordflow">if</span> (structAn == <span class="keyword">nullptr</span> || structAn->getNumOperands() == 0)</div>
|
|
1772
|
+
<div class="line"><a name="l00799"></a><span class="lineno"> 799</span>  <span class="keywordflow">continue</span>;</div>
|
|
1773
|
+
<div class="line"><a name="l00800"></a><span class="lineno"> 800</span>  </div>
|
|
1774
|
+
<div class="line"><a name="l00801"></a><span class="lineno"> 801</span>  <span class="comment">// Check if the annotation is for a function</span></div>
|
|
1775
|
+
<div class="line"><a name="l00802"></a><span class="lineno"> 802</span>  <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun = <span class="keyword">nullptr</span>;</div>
|
|
1776
|
+
<div class="line"><a name="l00803"></a><span class="lineno"> 803</span>  <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a> *annotateStr = <span class="keyword">nullptr</span>;</div>
|
|
1777
|
+
<div class="line"><a name="l00805"></a><span class="lineno"> 805</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a> *expr = SVFUtil::dyn_cast<ConstantExpr>(structAn->getOperand(0)))</div>
|
|
1778
|
+
<div class="line"><a name="l00806"></a><span class="lineno"> 806</span>  {</div>
|
|
1779
|
+
<div class="line"><a name="l00807"></a><span class="lineno"> 807</span>  <span class="keywordflow">if</span> (expr->getOpcode() == Instruction::BitCast && SVFUtil::isa<Function>(expr->getOperand(0)))</div>
|
|
1780
|
+
<div class="line"><a name="l00808"></a><span class="lineno"> 808</span>  fun = SVFUtil::cast<Function>(expr->getOperand(0));</div>
|
|
1781
|
+
<div class="line"><a name="l00809"></a><span class="lineno"> 809</span>  </div>
|
|
1782
|
+
<div class="line"><a name="l00810"></a><span class="lineno"> 810</span>  <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a> *note = SVFUtil::cast<ConstantExpr>(structAn->getOperand(1));</div>
|
|
1783
|
+
<div class="line"><a name="l00811"></a><span class="lineno"> 811</span>  <span class="keywordflow">if</span> (note->getOpcode() != Instruction::GetElementPtr)</div>
|
|
1784
|
+
<div class="line"><a name="l00812"></a><span class="lineno"> 812</span>  <span class="keywordflow">continue</span>;</div>
|
|
1785
|
+
<div class="line"><a name="l00813"></a><span class="lineno"> 813</span>  </div>
|
|
1786
|
+
<div class="line"><a name="l00814"></a><span class="lineno"> 814</span>  annotateStr = SVFUtil::dyn_cast<GlobalVariable>(note->getOperand(0));</div>
|
|
1787
|
+
<div class="line"><a name="l00815"></a><span class="lineno"> 815</span>  }</div>
|
|
1788
|
+
<div class="line"><a name="l00817"></a><span class="lineno"> 817</span>  <span class="keywordflow">else</span></div>
|
|
1789
|
+
<div class="line"><a name="l00818"></a><span class="lineno"> 818</span>  {</div>
|
|
1790
|
+
<div class="line"><a name="l00819"></a><span class="lineno"> 819</span>  fun = SVFUtil::dyn_cast<Function>(structAn->getOperand(0));</div>
|
|
1791
|
+
<div class="line"><a name="l00820"></a><span class="lineno"> 820</span>  annotateStr = SVFUtil::dyn_cast<GlobalVariable>(structAn->getOperand(1));</div>
|
|
1792
|
+
<div class="line"><a name="l00821"></a><span class="lineno"> 821</span>  }</div>
|
|
1793
|
+
<div class="line"><a name="l00822"></a><span class="lineno"> 822</span>  </div>
|
|
1794
|
+
<div class="line"><a name="l00823"></a><span class="lineno"> 823</span>  <span class="keywordflow">if</span> (!fun || annotateStr == <span class="keyword">nullptr</span> || !annotateStr->hasInitializer())</div>
|
|
1795
|
+
<div class="line"><a name="l00824"></a><span class="lineno"> 824</span>  <span class="keywordflow">continue</span>;;</div>
|
|
1796
|
+
<div class="line"><a name="l00825"></a><span class="lineno"> 825</span>  </div>
|
|
1797
|
+
<div class="line"><a name="l00826"></a><span class="lineno"> 826</span>  <a class="code" href="namespaceSVF.html#a8ad3aa124fabddc2fdd07c50403d70a9">ConstantDataSequential</a> *data = SVFUtil::dyn_cast<ConstantDataSequential>(annotateStr->getInitializer());</div>
|
|
1798
|
+
<div class="line"><a name="l00827"></a><span class="lineno"> 827</span>  <span class="keywordflow">if</span> (data && data->isString())</div>
|
|
1799
|
+
<div class="line"><a name="l00828"></a><span class="lineno"> 828</span>  {</div>
|
|
1800
|
+
<div class="line"><a name="l00829"></a><span class="lineno"> 829</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> annotation = data->getAsString().str();</div>
|
|
1801
|
+
<div class="line"><a name="l00830"></a><span class="lineno"> 830</span>  <span class="keywordflow">if</span> (!annotation.empty())</div>
|
|
1802
|
+
<div class="line"><a name="l00831"></a><span class="lineno"> 831</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a7968a00d41166d18acb684052ed1eed8">ExtFun2Annotations</a>[fun].push_back(annotation);</div>
|
|
1803
|
+
<div class="line"><a name="l00832"></a><span class="lineno"> 832</span>  }</div>
|
|
1804
|
+
<div class="line"><a name="l00833"></a><span class="lineno"> 833</span>  }</div>
|
|
1805
|
+
<div class="line"><a name="l00834"></a><span class="lineno"> 834</span> }</div>
|
|
1806
1806
|
</div><!-- fragment -->
|
|
1807
1807
|
</div>
|
|
1808
1808
|
</div>
|
|
@@ -1834,18 +1834,18 @@ Friends</h2></td></tr>
|
|
|
1834
1834
|
<p>Collect simple type (non-aggregate) info </p>
|
|
1835
1835
|
<p>Only one field</p>
|
|
1836
1836
|
|
|
1837
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#
|
|
1838
|
-
<div class="fragment"><div class="line"><a name="
|
|
1839
|
-
<div class="line"><a name="
|
|
1840
|
-
<div class="line"><a name="
|
|
1841
|
-
<div class="line"><a name="
|
|
1837
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01600">1600</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
|
|
1838
|
+
<div class="fragment"><div class="line"><a name="l01601"></a><span class="lineno"> 1601</span> {</div>
|
|
1839
|
+
<div class="line"><a name="l01603"></a><span class="lineno"> 1603</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>
|
|
1840
|
+
<div class="line"><a name="l01604"></a><span class="lineno"> 1604</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>
|
|
1841
|
+
<div class="line"><a name="l01605"></a><span class="lineno"> 1605</span>  stInfo-><a class="code" href="classSVF_1_1StInfo.html#a00339d1d7074e9222776801ce8689f6b">addFldWithType</a>(0, svfType, 0);</div>
|
|
1842
|
+
<div class="line"><a name="l01606"></a><span class="lineno"> 1606</span>  </div>
|
|
1843
|
+
<div class="line"><a name="l01607"></a><span class="lineno"> 1607</span>  stInfo-><a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>().push_back(svfType);</div>
|
|
1844
|
+
<div class="line"><a name="l01608"></a><span class="lineno"> 1608</span>  stInfo-><a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().push_back(svfType);</div>
|
|
1845
|
+
<div class="line"><a name="l01609"></a><span class="lineno"> 1609</span>  stInfo-><a class="code" href="classSVF_1_1StInfo.html#a1a07c2b1415c29d7d70791c6dfe602a3">setNumOfFieldsAndElems</a>(1,1);</div>
|
|
1842
1846
|
<div class="line"><a name="l01610"></a><span class="lineno"> 1610</span>  </div>
|
|
1843
|
-
<div class="line"><a name="l01611"></a><span class="lineno"> 1611</span> 
|
|
1844
|
-
<div class="line"><a name="l01612"></a><span class="lineno"> 1612</span> 
|
|
1845
|
-
<div class="line"><a name="l01613"></a><span class="lineno"> 1613</span>  stInfo-><a class="code" href="classSVF_1_1StInfo.html#a1a07c2b1415c29d7d70791c6dfe602a3">setNumOfFieldsAndElems</a>(1,1);</div>
|
|
1846
|
-
<div class="line"><a name="l01614"></a><span class="lineno"> 1614</span>  </div>
|
|
1847
|
-
<div class="line"><a name="l01615"></a><span class="lineno"> 1615</span>  <span class="keywordflow">return</span> stInfo;</div>
|
|
1848
|
-
<div class="line"><a name="l01616"></a><span class="lineno"> 1616</span> }</div>
|
|
1847
|
+
<div class="line"><a name="l01611"></a><span class="lineno"> 1611</span>  <span class="keywordflow">return</span> stInfo;</div>
|
|
1848
|
+
<div class="line"><a name="l01612"></a><span class="lineno"> 1612</span> }</div>
|
|
1849
1849
|
</div><!-- fragment -->
|
|
1850
1850
|
</div>
|
|
1851
1851
|
</div>
|
|
@@ -1887,56 +1887,56 @@ Friends</h2></td></tr>
|
|
|
1887
1887
|
<p>Fill in struct_info for T. Given a Struct type, we recursively extend and record its fields and types. </p>
|
|
1888
1888
|
<p>The struct info should not be processed before</p>
|
|
1889
1889
|
|
|
1890
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#
|
|
1891
|
-
<div class="fragment"><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="
|
|
1904
|
-
<div class="line"><a name="
|
|
1905
|
-
<div class="line"><a name="
|
|
1906
|
-
<div class="line"><a name="
|
|
1907
|
-
<div class="line"><a name="
|
|
1908
|
-
<div class="line"><a name="
|
|
1909
|
-
<div class="line"><a name="
|
|
1910
|
-
<div class="line"><a name="
|
|
1911
|
-
<div class="line"><a name="
|
|
1912
|
-
<div class="line"><a name="
|
|
1913
|
-
<div class="line"><a name="
|
|
1914
|
-
<div class="line"><a name="
|
|
1915
|
-
<div class="line"><a name="
|
|
1916
|
-
<div class="line"><a name="
|
|
1917
|
-
<div class="line"><a name="
|
|
1918
|
-
<div class="line"><a name="
|
|
1919
|
-
<div class="line"><a name="
|
|
1920
|
-
<div class="line"><a name="
|
|
1921
|
-
<div class="line"><a name="
|
|
1922
|
-
<div class="line"><a name="
|
|
1923
|
-
<div class="line"><a name="
|
|
1924
|
-
<div class="line"><a name="
|
|
1925
|
-
<div class="line"><a name="
|
|
1926
|
-
<div class="line"><a name="
|
|
1927
|
-
<div class="line"><a name="
|
|
1928
|
-
<div class="line"><a name="
|
|
1929
|
-
<div class="line"><a name="
|
|
1930
|
-
<div class="line"><a name="
|
|
1931
|
-
<div class="line"><a name="
|
|
1932
|
-
<div class="line"><a name="
|
|
1890
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01543">1543</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
|
|
1891
|
+
<div class="fragment"><div class="line"><a name="l01545"></a><span class="lineno"> 1545</span> {</div>
|
|
1892
|
+
<div class="line"><a name="l01547"></a><span class="lineno"> 1547</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>
|
|
1893
|
+
<div class="line"><a name="l01548"></a><span class="lineno"> 1548</span>  </div>
|
|
1894
|
+
<div class="line"><a name="l01549"></a><span class="lineno"> 1549</span>  <span class="comment">// Number of fields after flattening the struct</span></div>
|
|
1895
|
+
<div class="line"><a name="l01550"></a><span class="lineno"> 1550</span>  numFields = 0;</div>
|
|
1896
|
+
<div class="line"><a name="l01551"></a><span class="lineno"> 1551</span>  <span class="comment">// The offset when considering array stride info</span></div>
|
|
1897
|
+
<div class="line"><a name="l01552"></a><span class="lineno"> 1552</span>  <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> strideOffset = 0;</div>
|
|
1898
|
+
<div class="line"><a name="l01553"></a><span class="lineno"> 1553</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* elemTy : structTy->elements())</div>
|
|
1899
|
+
<div class="line"><a name="l01554"></a><span class="lineno"> 1554</span>  {</div>
|
|
1900
|
+
<div class="line"><a name="l01555"></a><span class="lineno"> 1555</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>
|
|
1901
|
+
<div class="line"><a name="l01556"></a><span class="lineno"> 1556</span>  <span class="comment">// offset with int_32 (s32_t) is large enough and won't overflow</span></div>
|
|
1902
|
+
<div class="line"><a name="l01557"></a><span class="lineno"> 1557</span>  stInfo-><a class="code" href="classSVF_1_1StInfo.html#a00339d1d7074e9222776801ce8689f6b">addFldWithType</a>(numFields, elemSvfTy, strideOffset);</div>
|
|
1903
|
+
<div class="line"><a name="l01558"></a><span class="lineno"> 1558</span>  </div>
|
|
1904
|
+
<div class="line"><a name="l01559"></a><span class="lineno"> 1559</span>  <span class="keywordflow">if</span> (SVFUtil::isa<StructType, ArrayType>(elemTy))</div>
|
|
1905
|
+
<div class="line"><a name="l01560"></a><span class="lineno"> 1560</span>  {</div>
|
|
1906
|
+
<div class="line"><a name="l01561"></a><span class="lineno"> 1561</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>
|
|
1907
|
+
<div class="line"><a name="l01562"></a><span class="lineno"> 1562</span>  <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> nfF = subStInfo-><a class="code" href="classSVF_1_1StInfo.html#ae5fad367673315da57a604e64b5889f0">getNumOfFlattenFields</a>();</div>
|
|
1908
|
+
<div class="line"><a name="l01563"></a><span class="lineno"> 1563</span>  <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> nfE = subStInfo-><a class="code" href="classSVF_1_1StInfo.html#a518c82138fcadc6634980566c1c0f762">getNumOfFlattenElements</a>();</div>
|
|
1909
|
+
<div class="line"><a name="l01564"></a><span class="lineno"> 1564</span>  <span class="comment">// Copy ST's info, whose element 0 is the size of ST itself.</span></div>
|
|
1910
|
+
<div class="line"><a name="l01565"></a><span class="lineno"> 1565</span>  <span class="keywordflow">for</span> (<a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> j = 0; j < nfF; ++j)</div>
|
|
1911
|
+
<div class="line"><a name="l01566"></a><span class="lineno"> 1566</span>  {</div>
|
|
1912
|
+
<div class="line"><a name="l01567"></a><span class="lineno"> 1567</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>
|
|
1913
|
+
<div class="line"><a name="l01568"></a><span class="lineno"> 1568</span>  stInfo-><a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>().push_back(elemTy);</div>
|
|
1914
|
+
<div class="line"><a name="l01569"></a><span class="lineno"> 1569</span>  }</div>
|
|
1915
|
+
<div class="line"><a name="l01570"></a><span class="lineno"> 1570</span>  numFields += nfF;</div>
|
|
1916
|
+
<div class="line"><a name="l01571"></a><span class="lineno"> 1571</span>  strideOffset += nfE;</div>
|
|
1917
|
+
<div class="line"><a name="l01572"></a><span class="lineno"> 1572</span>  <span class="keywordflow">for</span> (<a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> tpj = 0; tpj < nfE; ++tpj)</div>
|
|
1918
|
+
<div class="line"><a name="l01573"></a><span class="lineno"> 1573</span>  {</div>
|
|
1919
|
+
<div class="line"><a name="l01574"></a><span class="lineno"> 1574</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>
|
|
1920
|
+
<div class="line"><a name="l01575"></a><span class="lineno"> 1575</span>  stInfo-><a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().push_back(ty);</div>
|
|
1921
|
+
<div class="line"><a name="l01576"></a><span class="lineno"> 1576</span>  }</div>
|
|
1922
|
+
<div class="line"><a name="l01577"></a><span class="lineno"> 1577</span>  </div>
|
|
1923
|
+
<div class="line"><a name="l01578"></a><span class="lineno"> 1578</span>  }</div>
|
|
1924
|
+
<div class="line"><a name="l01579"></a><span class="lineno"> 1579</span>  <span class="keywordflow">else</span></div>
|
|
1925
|
+
<div class="line"><a name="l01580"></a><span class="lineno"> 1580</span>  {</div>
|
|
1926
|
+
<div class="line"><a name="l01581"></a><span class="lineno"> 1581</span>  <span class="comment">// Simple type</span></div>
|
|
1927
|
+
<div class="line"><a name="l01582"></a><span class="lineno"> 1582</span>  numFields += 1;</div>
|
|
1928
|
+
<div class="line"><a name="l01583"></a><span class="lineno"> 1583</span>  strideOffset += 1;</div>
|
|
1929
|
+
<div class="line"><a name="l01584"></a><span class="lineno"> 1584</span>  stInfo-><a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>().push_back(elemSvfTy);</div>
|
|
1930
|
+
<div class="line"><a name="l01585"></a><span class="lineno"> 1585</span>  stInfo-><a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().push_back(elemSvfTy);</div>
|
|
1931
|
+
<div class="line"><a name="l01586"></a><span class="lineno"> 1586</span>  }</div>
|
|
1932
|
+
<div class="line"><a name="l01587"></a><span class="lineno"> 1587</span>  }</div>
|
|
1933
|
+
<div class="line"><a name="l01588"></a><span class="lineno"> 1588</span>  </div>
|
|
1934
|
+
<div class="line"><a name="l01589"></a><span class="lineno"> 1589</span>  assert(stInfo-><a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().size() == strideOffset &&</div>
|
|
1935
|
+
<div class="line"><a name="l01590"></a><span class="lineno"> 1590</span>  <span class="stringliteral">"typeForStruct size incorrect!"</span>);</div>
|
|
1936
|
+
<div class="line"><a name="l01591"></a><span class="lineno"> 1591</span>  stInfo-><a class="code" href="classSVF_1_1StInfo.html#a1a07c2b1415c29d7d70791c6dfe602a3">setNumOfFieldsAndElems</a>(numFields,strideOffset);</div>
|
|
1933
1937
|
<div class="line"><a name="l01592"></a><span class="lineno"> 1592</span>  </div>
|
|
1934
|
-
<div class="line"><a name="l01593"></a><span class="lineno"> 1593</span> 
|
|
1935
|
-
<div class="line"><a name="l01594"></a><span class="lineno"> 1594</span> 
|
|
1936
|
-
<div class="line"><a name="l01595"></a><span class="lineno"> 1595</span>  stInfo-><a class="code" href="classSVF_1_1StInfo.html#a1a07c2b1415c29d7d70791c6dfe602a3">setNumOfFieldsAndElems</a>(numFields,strideOffset);</div>
|
|
1937
|
-
<div class="line"><a name="l01596"></a><span class="lineno"> 1596</span>  </div>
|
|
1938
|
-
<div class="line"><a name="l01597"></a><span class="lineno"> 1597</span>  <span class="keywordflow">return</span> stInfo;</div>
|
|
1939
|
-
<div class="line"><a name="l01598"></a><span class="lineno"> 1598</span> }</div>
|
|
1938
|
+
<div class="line"><a name="l01593"></a><span class="lineno"> 1593</span>  <span class="keywordflow">return</span> stInfo;</div>
|
|
1939
|
+
<div class="line"><a name="l01594"></a><span class="lineno"> 1594</span> }</div>
|
|
1940
1940
|
</div><!-- fragment -->
|
|
1941
1941
|
</div>
|
|
1942
1942
|
</div>
|
|
@@ -1966,37 +1966,37 @@ Friends</h2></td></tr>
|
|
|
1966
1966
|
|
|
1967
1967
|
<p>Collect a type info. </p>
|
|
1968
1968
|
|
|
1969
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#
|
|
1970
|
-
<div class="fragment"><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="
|
|
1969
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01386">1386</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
|
|
1970
|
+
<div class="fragment"><div class="line"><a name="l01387"></a><span class="lineno"> 1387</span> {</div>
|
|
1971
|
+
<div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>  Type2TypeInfoMap::iterator tit = <a class="code" href="classSVF_1_1LLVMModuleSet.html#af2c555af91679d9e6d3009547ee11486">Type2TypeInfo</a>.find(T);</div>
|
|
1972
|
+
<div class="line"><a name="l01389"></a><span class="lineno"> 1389</span>  <span class="keywordflow">if</span> (tit != <a class="code" href="classSVF_1_1LLVMModuleSet.html#af2c555af91679d9e6d3009547ee11486">Type2TypeInfo</a>.end())</div>
|
|
1973
|
+
<div class="line"><a name="l01390"></a><span class="lineno"> 1390</span>  {</div>
|
|
1974
|
+
<div class="line"><a name="l01391"></a><span class="lineno"> 1391</span>  <span class="keywordflow">return</span> tit->second;</div>
|
|
1975
|
+
<div class="line"><a name="l01392"></a><span class="lineno"> 1392</span>  }</div>
|
|
1976
|
+
<div class="line"><a name="l01393"></a><span class="lineno"> 1393</span>  <span class="comment">// No such StInfo for T, create it now.</span></div>
|
|
1977
|
+
<div class="line"><a name="l01394"></a><span class="lineno"> 1394</span>  <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* stInfo;</div>
|
|
1978
|
+
<div class="line"><a name="l01395"></a><span class="lineno"> 1395</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>
|
|
1979
|
+
<div class="line"><a name="l01396"></a><span class="lineno"> 1396</span>  {</div>
|
|
1980
|
+
<div class="line"><a name="l01397"></a><span class="lineno"> 1397</span>  stInfo = <a class="code" href="classSVF_1_1LLVMModuleSet.html#aa8de934358332505d4805db137d8ec29">collectArrayInfo</a>(aty);</div>
|
|
1981
|
+
<div class="line"><a name="l01398"></a><span class="lineno"> 1398</span>  }</div>
|
|
1982
|
+
<div class="line"><a name="l01399"></a><span class="lineno"> 1399</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>
|
|
1979
1983
|
<div class="line"><a name="l01400"></a><span class="lineno"> 1400</span>  {</div>
|
|
1980
|
-
<div class="line"><a name="l01401"></a><span class="lineno"> 1401</span> 
|
|
1981
|
-
<div class="line"><a name="l01402"></a><span class="lineno"> 1402</span> 
|
|
1982
|
-
<div class="line"><a name="l01403"></a><span class="lineno"> 1403</span> 
|
|
1983
|
-
<div class="line"><a name="l01404"></a><span class="lineno"> 1404</span> 
|
|
1984
|
-
<div class="line"><a name="l01405"></a><span class="lineno"> 1405</span> 
|
|
1985
|
-
<div class="line"><a name="l01406"></a><span class="lineno"> 1406</span> 
|
|
1986
|
-
<div class="line"><a name="l01407"></a><span class="lineno"> 1407</span> 
|
|
1987
|
-
<div class="line"><a name="l01408"></a><span class="lineno"> 1408</span> 
|
|
1988
|
-
<div class="line"><a name="l01409"></a><span class="lineno"> 1409</span> 
|
|
1989
|
-
<div class="line"><a name="l01410"></a><span class="lineno"> 1410</span> 
|
|
1990
|
-
<div class="line"><a name="l01411"></a><span class="lineno"> 1411</span> 
|
|
1984
|
+
<div class="line"><a name="l01401"></a><span class="lineno"> 1401</span>  <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> nf;</div>
|
|
1985
|
+
<div class="line"><a name="l01402"></a><span class="lineno"> 1402</span>  stInfo = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a946d1251501c7e0e33a9210838951258">collectStructInfo</a>(sty, nf);</div>
|
|
1986
|
+
<div class="line"><a name="l01403"></a><span class="lineno"> 1403</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>
|
|
1987
|
+
<div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>  {</div>
|
|
1988
|
+
<div class="line"><a name="l01405"></a><span class="lineno"> 1405</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>
|
|
1989
|
+
<div class="line"><a name="l01406"></a><span class="lineno"> 1406</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>
|
|
1990
|
+
<div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>  }</div>
|
|
1991
|
+
<div class="line"><a name="l01408"></a><span class="lineno"> 1408</span>  }</div>
|
|
1992
|
+
<div class="line"><a name="l01409"></a><span class="lineno"> 1409</span>  <span class="keywordflow">else</span></div>
|
|
1993
|
+
<div class="line"><a name="l01410"></a><span class="lineno"> 1410</span>  {</div>
|
|
1994
|
+
<div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>  stInfo = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a52853bd34a394882c6fd0fc73739c9f2">collectSimpleTypeInfo</a>(T);</div>
|
|
1991
1995
|
<div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>  }</div>
|
|
1992
|
-
<div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>  <
|
|
1993
|
-
<div class="line"><a name="l01414"></a><span class="lineno"> 1414</span> 
|
|
1994
|
-
<div class="line"><a name="l01415"></a><span class="lineno"> 1415</span> 
|
|
1995
|
-
<div class="line"><a name="l01416"></a><span class="lineno"> 1416</span> 
|
|
1996
|
-
<div class="line"><a name="l01417"></a><span class="lineno"> 1417</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#af2c555af91679d9e6d3009547ee11486">Type2TypeInfo</a>.emplace(T, stInfo);</div>
|
|
1997
|
-
<div class="line"><a name="l01418"></a><span class="lineno"> 1418</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>
|
|
1998
|
-
<div class="line"><a name="l01419"></a><span class="lineno"> 1419</span>  <span class="keywordflow">return</span> stInfo;</div>
|
|
1999
|
-
<div class="line"><a name="l01420"></a><span class="lineno"> 1420</span> }</div>
|
|
1996
|
+
<div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#af2c555af91679d9e6d3009547ee11486">Type2TypeInfo</a>.emplace(T, stInfo);</div>
|
|
1997
|
+
<div class="line"><a name="l01414"></a><span class="lineno"> 1414</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>
|
|
1998
|
+
<div class="line"><a name="l01415"></a><span class="lineno"> 1415</span>  <span class="keywordflow">return</span> stInfo;</div>
|
|
1999
|
+
<div class="line"><a name="l01416"></a><span class="lineno"> 1416</span> }</div>
|
|
2000
2000
|
</div><!-- fragment -->
|
|
2001
2001
|
</div>
|
|
2002
2002
|
</div>
|
|
@@ -2123,64 +2123,59 @@ Friends</h2></td></tr>
|
|
|
2123
2123
|
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(func->getFunctionType())),</div>
|
|
2124
2124
|
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  func->isDeclaration(), <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a4638a12f5481dff947b59cf8353e619b">LLVMUtil::isIntrinsicFun</a>(func),</div>
|
|
2125
2125
|
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  func->hasAddressTaken(), func->isVarArg(), <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html">SVFLoopAndDomInfo</a>);</div>
|
|
2126
|
-
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span> 
|
|
2127
|
-
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#
|
|
2128
|
-
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span> 
|
|
2129
|
-
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span> 
|
|
2130
|
-
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span> 
|
|
2131
|
-
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  </div>
|
|
2132
|
-
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span> 
|
|
2133
|
-
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span> 
|
|
2134
|
-
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span> 
|
|
2135
|
-
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <a class="code" href="
|
|
2136
|
-
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span> 
|
|
2137
|
-
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <span class="
|
|
2138
|
-
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span> 
|
|
2139
|
-
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span> 
|
|
2140
|
-
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span> 
|
|
2141
|
-
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span> 
|
|
2142
|
-
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span> 
|
|
2143
|
-
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span> 
|
|
2144
|
-
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span> 
|
|
2145
|
-
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span> 
|
|
2146
|
-
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  </div>
|
|
2147
|
-
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span> 
|
|
2148
|
-
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span> 
|
|
2149
|
-
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <a class="code" href="
|
|
2150
|
-
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span> 
|
|
2151
|
-
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span> 
|
|
2152
|
-
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span> 
|
|
2153
|
-
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span> 
|
|
2154
|
-
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span> 
|
|
2155
|
-
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span> 
|
|
2156
|
-
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span> 
|
|
2157
|
-
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span> 
|
|
2158
|
-
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span> 
|
|
2159
|
-
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span> 
|
|
2160
|
-
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <span class="keywordflow">
|
|
2161
|
-
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  svfInst = <span class="keyword">new</span> <a class="code" href="
|
|
2126
|
+
<div class="line"><a name="l00240"></a><span class="lineno"> 240</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>
|
|
2127
|
+
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1LLVMModuleSet.html#a7968a00d41166d18acb684052ed1eed8">ExtFun2Annotations</a>.find(func) != <a class="code" href="classSVF_1_1LLVMModuleSet.html#a7968a00d41166d18acb684052ed1eed8">ExtFun2Annotations</a>.end())</div>
|
|
2128
|
+
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  svfFunc-><a class="code" href="classSVF_1_1SVFFunction.html#a2731567cd10e2c499c812c33d01a412e">setAnnotations</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a7968a00d41166d18acb684052ed1eed8">ExtFun2Annotations</a>[func]);</div>
|
|
2129
|
+
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab671d5bb9ca5761e2b438a4d4da229cf">addFunctionMap</a>(func, svfFunc);</div>
|
|
2130
|
+
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  </div>
|
|
2131
|
+
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a58cdfbc4160cae08745b67844ac29801">Argument</a>& arg : func->args())</div>
|
|
2132
|
+
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  {</div>
|
|
2133
|
+
<div class="line"><a name="l00247"></a><span class="lineno"> 247</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>
|
|
2134
|
+
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(arg.getType()), svfFunc, arg.getArgNo(),</div>
|
|
2135
|
+
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a428bd75b33fab60988d8758090712f29">LLVMUtil::isArgOfUncalledFunction</a>(&arg));</div>
|
|
2136
|
+
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <span class="comment">// Setting up arg name</span></div>
|
|
2137
|
+
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <span class="keywordflow">if</span> (!arg.hasName())</div>
|
|
2138
|
+
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  svfarg-><a class="code" href="classSVF_1_1SVFValue.html#a8325774df9d65d78ef6a66fef59b9a97">setName</a>(std::to_string(arg.getArgNo()));</div>
|
|
2139
|
+
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  </div>
|
|
2140
|
+
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  svfFunc-><a class="code" href="classSVF_1_1SVFFunction.html#ad865b8440a6e0d5d212798d2213e1e9c">addArgument</a>(svfarg);</div>
|
|
2141
|
+
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5595ec3f7582934dc499770825bf5373">addArgumentMap</a>(&arg, svfarg);</div>
|
|
2142
|
+
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  }</div>
|
|
2143
|
+
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  </div>
|
|
2144
|
+
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>& bb : *func)</div>
|
|
2145
|
+
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  {</div>
|
|
2146
|
+
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* svfBB =</div>
|
|
2147
|
+
<div class="line"><a name="l00261"></a><span class="lineno"> 261</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>
|
|
2148
|
+
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  svfFunc-><a class="code" href="classSVF_1_1SVFFunction.html#a0d5031bd11b6372803082111ec2cb4f6">addBasicBlock</a>(svfBB);</div>
|
|
2149
|
+
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a3eaadb33cd21d0bd868526b5ddb051d9">addBasicBlockMap</a>(&bb, svfBB);</div>
|
|
2150
|
+
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>& inst : bb)</div>
|
|
2151
|
+
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  {</div>
|
|
2152
|
+
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfInst = <span class="keyword">nullptr</span>;</div>
|
|
2153
|
+
<div class="line"><a name="l00267"></a><span class="lineno"> 267</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>
|
|
2154
|
+
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  {</div>
|
|
2155
|
+
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1cppUtil.html#aab1dce633f9a03796c208b6fba2bd2b4">cppUtil::isVirtualCallSite</a>(call))</div>
|
|
2156
|
+
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  svfInst = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFVirtualCallInst.html">SVFVirtualCallInst</a>(</div>
|
|
2157
|
+
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(call->getType()), svfBB,</div>
|
|
2158
|
+
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  call->getFunctionType()->isVarArg(),</div>
|
|
2159
|
+
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  inst.isTerminator());</div>
|
|
2160
|
+
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <span class="keywordflow">else</span></div>
|
|
2161
|
+
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  svfInst = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFCallInst.html">SVFCallInst</a>(</div>
|
|
2162
2162
|
<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(call->getType()), svfBB,</div>
|
|
2163
2163
|
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  call->getFunctionType()->isVarArg(),</div>
|
|
2164
2164
|
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  inst.isTerminator());</div>
|
|
2165
|
-
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span> 
|
|
2166
|
-
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span> 
|
|
2167
|
-
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span> 
|
|
2168
|
-
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span> 
|
|
2169
|
-
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span> 
|
|
2170
|
-
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span> 
|
|
2171
|
-
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span> 
|
|
2172
|
-
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span> 
|
|
2173
|
-
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span> 
|
|
2174
|
-
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span> 
|
|
2175
|
-
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span> 
|
|
2176
|
-
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span> 
|
|
2177
|
-
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span> 
|
|
2178
|
-
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span> 
|
|
2179
|
-
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  svfBB-><a class="code" href="classSVF_1_1SVFBasicBlock.html#ac1b15d8f9c2499add8dbc889ae5cab65">addInstruction</a>(svfInst);</div>
|
|
2180
|
-
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a172084437a8450314a17f7085a32b5d2">addInstructionMap</a>(&inst, svfInst);</div>
|
|
2181
|
-
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  }</div>
|
|
2182
|
-
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  }</div>
|
|
2183
|
-
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span> }</div>
|
|
2165
|
+
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  }</div>
|
|
2166
|
+
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  <span class="keywordflow">else</span></div>
|
|
2167
|
+
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  {</div>
|
|
2168
|
+
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  svfInst =</div>
|
|
2169
|
+
<div class="line"><a name="l00283"></a><span class="lineno"> 283</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>
|
|
2170
|
+
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  svfBB, inst.isTerminator(),</div>
|
|
2171
|
+
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  SVFUtil::isa<ReturnInst>(inst));</div>
|
|
2172
|
+
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  }</div>
|
|
2173
|
+
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  </div>
|
|
2174
|
+
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  svfBB-><a class="code" href="classSVF_1_1SVFBasicBlock.html#ac1b15d8f9c2499add8dbc889ae5cab65">addInstruction</a>(svfInst);</div>
|
|
2175
|
+
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a172084437a8450314a17f7085a32b5d2">addInstructionMap</a>(&inst, svfInst);</div>
|
|
2176
|
+
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  }</div>
|
|
2177
|
+
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  }</div>
|
|
2178
|
+
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span> }</div>
|
|
2184
2179
|
</div><!-- fragment -->
|
|
2185
2180
|
</div>
|
|
2186
2181
|
</div>
|
|
@@ -2200,30 +2195,30 @@ Friends</h2></td></tr>
|
|
|
2200
2195
|
</table>
|
|
2201
2196
|
</div><div class="memdoc">
|
|
2202
2197
|
|
|
2203
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#
|
|
2204
|
-
<div class="fragment"><div class="line"><a name="
|
|
2205
|
-
<div class="line"><a name="
|
|
2206
|
-
<div class="line"><a name="
|
|
2207
|
-
<div class="line"><a name="
|
|
2208
|
-
<div class="line"><a name="
|
|
2209
|
-
<div class="line"><a name="
|
|
2210
|
-
<div class="line"><a name="
|
|
2211
|
-
<div class="line"><a name="
|
|
2212
|
-
<div class="line"><a name="
|
|
2213
|
-
<div class="line"><a name="
|
|
2214
|
-
<div class="line"><a name="
|
|
2215
|
-
<div class="line"><a name="
|
|
2216
|
-
<div class="line"><a name="
|
|
2217
|
-
<div class="line"><a name="
|
|
2218
|
-
<div class="line"><a name="
|
|
2219
|
-
<div class="line"><a name="
|
|
2220
|
-
<div class="line"><a name="
|
|
2221
|
-
<div class="line"><a name="
|
|
2222
|
-
<div class="line"><a name="
|
|
2223
|
-
<div class="line"><a name="
|
|
2224
|
-
<div class="line"><a name="
|
|
2225
|
-
<div class="line"><a name="
|
|
2226
|
-
<div class="line"><a name="
|
|
2198
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01183">1183</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
|
|
2199
|
+
<div class="fragment"><div class="line"><a name="l01184"></a><span class="lineno"> 1184</span> {</div>
|
|
2200
|
+
<div class="line"><a name="l01185"></a><span class="lineno"> 1185</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>
|
|
2201
|
+
<div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>  {</div>
|
|
2202
|
+
<div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> moduleName = mod.getName().str();</div>
|
|
2203
|
+
<div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> OutputFilename;</div>
|
|
2204
|
+
<div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>  std::size_t pos = moduleName.rfind(<span class="charliteral">'.'</span>);</div>
|
|
2205
|
+
<div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>  <span class="keywordflow">if</span> (pos != std::string::npos)</div>
|
|
2206
|
+
<div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>  OutputFilename = moduleName.substr(0, pos) + suffix;</div>
|
|
2207
|
+
<div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>  <span class="keywordflow">else</span></div>
|
|
2208
|
+
<div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>  OutputFilename = moduleName + suffix;</div>
|
|
2209
|
+
<div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>  </div>
|
|
2210
|
+
<div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>  std::error_code EC;</div>
|
|
2211
|
+
<div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>  <a class="code" href="namespaceSVF.html#a1c7c7ac12791c0ae386283c0a4f127ba">raw_fd_ostream</a> OS(OutputFilename.c_str(), EC, llvm::sys::fs::OF_None);</div>
|
|
2212
|
+
<div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>  </div>
|
|
2213
|
+
<div class="line"><a name="l01198"></a><span class="lineno"> 1198</span> <span class="preprocessor">#if (LLVM_VERSION_MAJOR >= 7)</span></div>
|
|
2214
|
+
<div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>  WriteBitcodeToFile(mod, OS);</div>
|
|
2215
|
+
<div class="line"><a name="l01200"></a><span class="lineno"> 1200</span> <span class="preprocessor">#else</span></div>
|
|
2216
|
+
<div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>  WriteBitcodeToFile(&mod, OS);</div>
|
|
2217
|
+
<div class="line"><a name="l01202"></a><span class="lineno"> 1202</span> <span class="preprocessor">#endif</span></div>
|
|
2218
|
+
<div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>  </div>
|
|
2219
|
+
<div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>  OS.flush();</div>
|
|
2220
|
+
<div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>  }</div>
|
|
2221
|
+
<div class="line"><a name="l01206"></a><span class="lineno"> 1206</span> }</div>
|
|
2227
2222
|
</div><!-- fragment -->
|
|
2228
2223
|
</div>
|
|
2229
2224
|
</div>
|
|
@@ -2416,94 +2411,94 @@ Friends</h2></td></tr>
|
|
|
2416
2411
|
</table>
|
|
2417
2412
|
</div><div class="memdoc">
|
|
2418
2413
|
|
|
2419
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#
|
|
2420
|
-
<div class="fragment"><div class="line"><a name="
|
|
2421
|
-
<div class="line"><a name="
|
|
2422
|
-
<div class="line"><a name="
|
|
2423
|
-
<div class="line"><a name="
|
|
2424
|
-
<div class="line"><a name="
|
|
2425
|
-
<div class="line"><a name="
|
|
2426
|
-
<div class="line"><a name="
|
|
2427
|
-
<div class="line"><a name="
|
|
2428
|
-
<div class="line"><a name="
|
|
2429
|
-
<div class="line"><a name="
|
|
2430
|
-
<div class="line"><a name="
|
|
2431
|
-
<div class="line"><a name="
|
|
2432
|
-
<div class="line"><a name="
|
|
2433
|
-
<div class="line"><a name="
|
|
2434
|
-
<div class="line"><a name="
|
|
2435
|
-
<div class="line"><a name="
|
|
2436
|
-
<div class="line"><a name="
|
|
2437
|
-
<div class="line"><a name="
|
|
2438
|
-
<div class="line"><a name="
|
|
2439
|
-
<div class="line"><a name="
|
|
2440
|
-
<div class="line"><a name="
|
|
2441
|
-
<div class="line"><a name="
|
|
2442
|
-
<div class="line"><a name="
|
|
2443
|
-
<div class="line"><a name="
|
|
2444
|
-
<div class="line"><a name="
|
|
2445
|
-
<div class="line"><a name="
|
|
2446
|
-
<div class="line"><a name="
|
|
2447
|
-
<div class="line"><a name="
|
|
2448
|
-
<div class="line"><a name="
|
|
2449
|
-
<div class="line"><a name="
|
|
2450
|
-
<div class="line"><a name="
|
|
2451
|
-
<div class="line"><a name="
|
|
2452
|
-
<div class="line"><a name="
|
|
2453
|
-
<div class="line"><a name="
|
|
2454
|
-
<div class="line"><a name="
|
|
2455
|
-
<div class="line"><a name="
|
|
2456
|
-
<div class="line"><a name="
|
|
2457
|
-
<div class="line"><a name="
|
|
2458
|
-
<div class="line"><a name="
|
|
2459
|
-
<div class="line"><a name="
|
|
2460
|
-
<div class="line"><a name="
|
|
2461
|
-
<div class="line"><a name="
|
|
2414
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00602">602</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
|
|
2415
|
+
<div class="fragment"><div class="line"><a name="l00603"></a><span class="lineno"> 603</span> {</div>
|
|
2416
|
+
<div class="line"><a name="l00604"></a><span class="lineno"> 604</span>  <span class="comment">// This function is used to extract constructor and destructor functions</span></div>
|
|
2417
|
+
<div class="line"><a name="l00605"></a><span class="lineno"> 605</span>  <span class="comment">// sorted by their priority from @llvm.global_ctors or @llvm.global_dtors.</span></div>
|
|
2418
|
+
<div class="line"><a name="l00606"></a><span class="lineno"> 606</span>  <span class="comment">// For example, given following @llvm.global_ctors, the returning sorted</span></div>
|
|
2419
|
+
<div class="line"><a name="l00607"></a><span class="lineno"> 607</span>  <span class="comment">// function list should be [ctor3, ctor1, ctor2].</span></div>
|
|
2420
|
+
<div class="line"><a name="l00608"></a><span class="lineno"> 608</span>  <span class="comment">// ------------------------------------------------------------------</span></div>
|
|
2421
|
+
<div class="line"><a name="l00609"></a><span class="lineno"> 609</span>  <span class="comment">// ; Each struct in the array is {priority, function, associated data}</span></div>
|
|
2422
|
+
<div class="line"><a name="l00610"></a><span class="lineno"> 610</span>  <span class="comment">//</span></div>
|
|
2423
|
+
<div class="line"><a name="l00611"></a><span class="lineno"> 611</span>  <span class="comment">// @llvm.global_ctors = appending global [2 x { i32, void ()*, i8* }]</span></div>
|
|
2424
|
+
<div class="line"><a name="l00612"></a><span class="lineno"> 612</span>  <span class="comment">// [{ i32, void ()*, i8* } { i32 1234, void ()* @ctor1.cpp, i8* null },</span></div>
|
|
2425
|
+
<div class="line"><a name="l00613"></a><span class="lineno"> 613</span>  <span class="comment">// { i32, void ()*, i8* } { i32 2345, void ()* @ctor2.cpp, i8* null },</span></div>
|
|
2426
|
+
<div class="line"><a name="l00614"></a><span class="lineno"> 614</span>  <span class="comment">// { i32, void ()*, i8* } { i32 345, void ()* @ctor3.cpp, i8* null }]</span></div>
|
|
2427
|
+
<div class="line"><a name="l00615"></a><span class="lineno"> 615</span>  <span class="comment">// ------------------------------------------------------------------</span></div>
|
|
2428
|
+
<div class="line"><a name="l00616"></a><span class="lineno"> 616</span>  <span class="comment">// TODO: According to LLVM language reference, if the third field is</span></div>
|
|
2429
|
+
<div class="line"><a name="l00617"></a><span class="lineno"> 617</span>  <span class="comment">// non-null, and points to a global variable or function, the initializer</span></div>
|
|
2430
|
+
<div class="line"><a name="l00618"></a><span class="lineno"> 618</span>  <span class="comment">// function will only run if the associated data from the current module is</span></div>
|
|
2431
|
+
<div class="line"><a name="l00619"></a><span class="lineno"> 619</span>  <span class="comment">// not discarded. However the associated data is currently ignored.</span></div>
|
|
2432
|
+
<div class="line"><a name="l00620"></a><span class="lineno"> 620</span>  </div>
|
|
2433
|
+
<div class="line"><a name="l00621"></a><span class="lineno"> 621</span>  </div>
|
|
2434
|
+
<div class="line"><a name="l00622"></a><span class="lineno"> 622</span>  <span class="comment">// This class is used for the priority queue that sorts the functions by</span></div>
|
|
2435
|
+
<div class="line"><a name="l00623"></a><span class="lineno"> 623</span>  <span class="comment">// their priority. Each object of this class stands for an item in the</span></div>
|
|
2436
|
+
<div class="line"><a name="l00624"></a><span class="lineno"> 624</span>  <span class="comment">// function array.</span></div>
|
|
2437
|
+
<div class="line"><a name="l00625"></a><span class="lineno"> 625</span>  <span class="keyword">class </span>LLVMGlobalFunction</div>
|
|
2438
|
+
<div class="line"><a name="l00626"></a><span class="lineno"> 626</span>  {</div>
|
|
2439
|
+
<div class="line"><a name="l00627"></a><span class="lineno"> 627</span>  <span class="keyword">public</span>:</div>
|
|
2440
|
+
<div class="line"><a name="l00628"></a><span class="lineno"> 628</span>  <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> priority;</div>
|
|
2441
|
+
<div class="line"><a name="l00629"></a><span class="lineno"> 629</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func;</div>
|
|
2442
|
+
<div class="line"><a name="l00630"></a><span class="lineno"> 630</span>  LLVMGlobalFunction() {};</div>
|
|
2443
|
+
<div class="line"><a name="l00631"></a><span class="lineno"> 631</span>  LLVMGlobalFunction(<a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> _priority, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* _func)</div>
|
|
2444
|
+
<div class="line"><a name="l00632"></a><span class="lineno"> 632</span>  : priority(_priority), func(_func) {};</div>
|
|
2445
|
+
<div class="line"><a name="l00633"></a><span class="lineno"> 633</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>
|
|
2446
|
+
<div class="line"><a name="l00634"></a><span class="lineno"> 634</span> <span class="keyword"> </span>{</div>
|
|
2447
|
+
<div class="line"><a name="l00635"></a><span class="lineno"> 635</span>  <span class="keywordflow">if</span> (priority != other.priority)</div>
|
|
2448
|
+
<div class="line"><a name="l00636"></a><span class="lineno"> 636</span>  {</div>
|
|
2449
|
+
<div class="line"><a name="l00637"></a><span class="lineno"> 637</span>  <span class="keywordflow">return</span> priority > other.priority;</div>
|
|
2450
|
+
<div class="line"><a name="l00638"></a><span class="lineno"> 638</span>  }</div>
|
|
2451
|
+
<div class="line"><a name="l00639"></a><span class="lineno"> 639</span>  <span class="keywordflow">else</span></div>
|
|
2452
|
+
<div class="line"><a name="l00640"></a><span class="lineno"> 640</span>  {</div>
|
|
2453
|
+
<div class="line"><a name="l00641"></a><span class="lineno"> 641</span>  <span class="keywordflow">return</span> func > other.func;</div>
|
|
2454
|
+
<div class="line"><a name="l00642"></a><span class="lineno"> 642</span>  }</div>
|
|
2455
|
+
<div class="line"><a name="l00643"></a><span class="lineno"> 643</span>  }</div>
|
|
2456
|
+
<div class="line"><a name="l00644"></a><span class="lineno"> 644</span>  };</div>
|
|
2457
|
+
<div class="line"><a name="l00645"></a><span class="lineno"> 645</span>  </div>
|
|
2458
|
+
<div class="line"><a name="l00646"></a><span class="lineno"> 646</span>  std::priority_queue<LLVMGlobalFunction, std::vector<LLVMGlobalFunction>,</div>
|
|
2459
|
+
<div class="line"><a name="l00647"></a><span class="lineno"> 647</span>  greater<LLVMGlobalFunction>></div>
|
|
2460
|
+
<div class="line"><a name="l00648"></a><span class="lineno"> 648</span>  queue;</div>
|
|
2461
|
+
<div class="line"><a name="l00649"></a><span class="lineno"> 649</span>  std::vector<const Function* > result;</div>
|
|
2462
2462
|
<div class="line"><a name="l00650"></a><span class="lineno"> 650</span>  </div>
|
|
2463
|
-
<div class="line"><a name="l00651"></a><span class="lineno"> 651</span> 
|
|
2464
|
-
<div class="line"><a name="l00652"></a><span class="lineno"> 652</span> 
|
|
2465
|
-
<div class="line"><a name="l00653"></a><span class="lineno"> 653</span> 
|
|
2466
|
-
<div class="line"><a name="l00654"></a><span class="lineno"> 654</span> 
|
|
2467
|
-
<div class="line"><a name="l00655"></a><span class="lineno"> 655</span> 
|
|
2468
|
-
<div class="line"><a name="l00656"></a><span class="lineno"> 656</span> 
|
|
2469
|
-
<div class="line"><a name="l00657"></a><span class="lineno"> 657</span> 
|
|
2470
|
-
<div class="line"><a name="l00658"></a><span class="lineno"> 658</span> 
|
|
2471
|
-
<div class="line"><a name="l00659"></a><span class="lineno"> 659</span> 
|
|
2472
|
-
<div class="line"><a name="l00660"></a><span class="lineno"> 660</span> 
|
|
2473
|
-
<div class="line"><a name="l00661"></a><span class="lineno"> 661</span> 
|
|
2474
|
-
<div class="line"><a name="l00662"></a><span class="lineno"> 662</span> 
|
|
2475
|
-
<div class="line"><a name="l00663"></a><span class="lineno"> 663</span> 
|
|
2476
|
-
<div class="line"><a name="l00664"></a><span class="lineno"> 664</span> 
|
|
2477
|
-
<div class="line"><a name="l00665"></a><span class="lineno"> 665</span> 
|
|
2478
|
-
<div class="line"><a name="l00666"></a><span class="lineno"> 666</span>  <span class="
|
|
2479
|
-
<div class="line"><a name="l00667"></a><span class="lineno"> 667</span> 
|
|
2480
|
-
<div class="line"><a name="l00668"></a><span class="lineno"> 668</span> 
|
|
2481
|
-
<div class="line"><a name="l00669"></a><span class="lineno"> 669</span> 
|
|
2482
|
-
<div class="line"><a name="l00670"></a><span class="lineno"> 670</span> 
|
|
2483
|
-
<div class="line"><a name="l00671"></a><span class="lineno"> 671</span> 
|
|
2484
|
-
<div class="line"><a name="l00672"></a><span class="lineno"> 672</span>  <span class="
|
|
2485
|
-
<div class="line"><a name="l00673"></a><span class="lineno"> 673</span> 
|
|
2486
|
-
<div class="line"><a name="l00674"></a><span class="lineno"> 674</span> 
|
|
2487
|
-
<div class="line"><a name="l00675"></a><span class="lineno"> 675</span> 
|
|
2488
|
-
<div class="line"><a name="l00676"></a><span class="lineno"> 676</span> 
|
|
2489
|
-
<div class="line"><a name="l00677"></a><span class="lineno"> 677</span> 
|
|
2490
|
-
<div class="line"><a name="l00678"></a><span class="lineno"> 678</span> 
|
|
2491
|
-
<div class="line"><a name="l00679"></a><span class="lineno"> 679</span> 
|
|
2492
|
-
<div class="line"><a name="l00680"></a><span class="lineno"> 680</span> 
|
|
2493
|
-
<div class="line"><a name="l00681"></a><span class="lineno"> 681</span> 
|
|
2494
|
-
<div class="line"><a name="l00682"></a><span class="lineno"> 682</span> 
|
|
2495
|
-
<div class="line"><a name="l00683"></a><span class="lineno"> 683</span> 
|
|
2496
|
-
<div class="line"><a name="l00684"></a><span class="lineno"> 684</span> 
|
|
2497
|
-
<div class="line"><a name="l00685"></a><span class="lineno"> 685</span> 
|
|
2498
|
-
<div class="line"><a name="l00686"></a><span class="lineno"> 686</span> 
|
|
2499
|
-
<div class="line"><a name="l00687"></a><span class="lineno"> 687</span> 
|
|
2500
|
-
<div class="line"><a name="l00688"></a><span class="lineno"> 688</span>  <span class="keywordflow">
|
|
2501
|
-
<div class="line"><a name="l00689"></a><span class="lineno"> 689</span> 
|
|
2502
|
-
<div class="line"><a name="l00690"></a><span class="lineno"> 690</span>  result.push_back(queue.top().func);</div>
|
|
2503
|
-
<div class="line"><a name="l00691"></a><span class="lineno"> 691</span>  queue.pop();</div>
|
|
2504
|
-
<div class="line"><a name="l00692"></a><span class="lineno"> 692</span>  }</div>
|
|
2505
|
-
<div class="line"><a name="l00693"></a><span class="lineno"> 693</span>  <span class="keywordflow">return</span> result;</div>
|
|
2506
|
-
<div class="line"><a name="l00694"></a><span class="lineno"> 694</span> }</div>
|
|
2463
|
+
<div class="line"><a name="l00651"></a><span class="lineno"> 651</span>  <span class="comment">// The @llvm.global_ctors/dtors global variable is an array of struct. Each</span></div>
|
|
2464
|
+
<div class="line"><a name="l00652"></a><span class="lineno"> 652</span>  <span class="comment">// struct has three fields: {i32 priority, void ()* @ctor/dtor, i8* @data}.</span></div>
|
|
2465
|
+
<div class="line"><a name="l00653"></a><span class="lineno"> 653</span>  <span class="comment">// First get the array here.</span></div>
|
|
2466
|
+
<div class="line"><a name="l00654"></a><span class="lineno"> 654</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5ae718cba37d8e34d2946530dc098c8e">ConstantArray</a> *globalFuncArray =</div>
|
|
2467
|
+
<div class="line"><a name="l00655"></a><span class="lineno"> 655</span>  SVFUtil::dyn_cast<ConstantArray>(global->getInitializer()))</div>
|
|
2468
|
+
<div class="line"><a name="l00656"></a><span class="lineno"> 656</span>  {</div>
|
|
2469
|
+
<div class="line"><a name="l00657"></a><span class="lineno"> 657</span>  <span class="comment">// Get each struct in the array.</span></div>
|
|
2470
|
+
<div class="line"><a name="l00658"></a><span class="lineno"> 658</span>  <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < globalFuncArray->getNumOperands(); ++i)</div>
|
|
2471
|
+
<div class="line"><a name="l00659"></a><span class="lineno"> 659</span>  {</div>
|
|
2472
|
+
<div class="line"><a name="l00660"></a><span class="lineno"> 660</span>  <span class="keywordflow">if</span> (</div>
|
|
2473
|
+
<div class="line"><a name="l00661"></a><span class="lineno"> 661</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a2b28f48dde0a9a91d251e654ce1f9477">ConstantStruct</a> *globalFuncItem =</div>
|
|
2474
|
+
<div class="line"><a name="l00662"></a><span class="lineno"> 662</span>  SVFUtil::dyn_cast<ConstantStruct>(</div>
|
|
2475
|
+
<div class="line"><a name="l00663"></a><span class="lineno"> 663</span>  globalFuncArray->getOperand(i)))</div>
|
|
2476
|
+
<div class="line"><a name="l00664"></a><span class="lineno"> 664</span>  {</div>
|
|
2477
|
+
<div class="line"><a name="l00665"></a><span class="lineno"> 665</span>  </div>
|
|
2478
|
+
<div class="line"><a name="l00666"></a><span class="lineno"> 666</span>  <span class="comment">// Extract priority and function from the struct</span></div>
|
|
2479
|
+
<div class="line"><a name="l00667"></a><span class="lineno"> 667</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a>* priority = SVFUtil::dyn_cast<ConstantInt>(</div>
|
|
2480
|
+
<div class="line"><a name="l00668"></a><span class="lineno"> 668</span>  globalFuncItem->getOperand(0));</div>
|
|
2481
|
+
<div class="line"><a name="l00669"></a><span class="lineno"> 669</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func = SVFUtil::dyn_cast<Function>(</div>
|
|
2482
|
+
<div class="line"><a name="l00670"></a><span class="lineno"> 670</span>  globalFuncItem->getOperand(1));</div>
|
|
2483
|
+
<div class="line"><a name="l00671"></a><span class="lineno"> 671</span>  </div>
|
|
2484
|
+
<div class="line"><a name="l00672"></a><span class="lineno"> 672</span>  <span class="keywordflow">if</span> (priority && func)</div>
|
|
2485
|
+
<div class="line"><a name="l00673"></a><span class="lineno"> 673</span>  {</div>
|
|
2486
|
+
<div class="line"><a name="l00674"></a><span class="lineno"> 674</span>  queue.push(LLVMGlobalFunction(priority</div>
|
|
2487
|
+
<div class="line"><a name="l00675"></a><span class="lineno"> 675</span>  ->getZExtValue(),</div>
|
|
2488
|
+
<div class="line"><a name="l00676"></a><span class="lineno"> 676</span>  func));</div>
|
|
2489
|
+
<div class="line"><a name="l00677"></a><span class="lineno"> 677</span>  }</div>
|
|
2490
|
+
<div class="line"><a name="l00678"></a><span class="lineno"> 678</span>  }</div>
|
|
2491
|
+
<div class="line"><a name="l00679"></a><span class="lineno"> 679</span>  }</div>
|
|
2492
|
+
<div class="line"><a name="l00680"></a><span class="lineno"> 680</span>  }</div>
|
|
2493
|
+
<div class="line"><a name="l00681"></a><span class="lineno"> 681</span>  </div>
|
|
2494
|
+
<div class="line"><a name="l00682"></a><span class="lineno"> 682</span>  <span class="comment">// Generate a sorted vector of functions from the priority queue.</span></div>
|
|
2495
|
+
<div class="line"><a name="l00683"></a><span class="lineno"> 683</span>  <span class="keywordflow">while</span> (!queue.empty())</div>
|
|
2496
|
+
<div class="line"><a name="l00684"></a><span class="lineno"> 684</span>  {</div>
|
|
2497
|
+
<div class="line"><a name="l00685"></a><span class="lineno"> 685</span>  result.push_back(queue.top().func);</div>
|
|
2498
|
+
<div class="line"><a name="l00686"></a><span class="lineno"> 686</span>  queue.pop();</div>
|
|
2499
|
+
<div class="line"><a name="l00687"></a><span class="lineno"> 687</span>  }</div>
|
|
2500
|
+
<div class="line"><a name="l00688"></a><span class="lineno"> 688</span>  <span class="keywordflow">return</span> result;</div>
|
|
2501
|
+
<div class="line"><a name="l00689"></a><span class="lineno"> 689</span> }</div>
|
|
2507
2502
|
</div><!-- fragment -->
|
|
2508
2503
|
</div>
|
|
2509
2504
|
</div>
|
|
@@ -2587,16 +2582,16 @@ Friends</h2></td></tr>
|
|
|
2587
2582
|
|
|
2588
2583
|
<p>Get LLVM Type. </p>
|
|
2589
2584
|
|
|
2590
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#
|
|
2591
|
-
<div class="fragment"><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="
|
|
2585
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01359">1359</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
|
|
2586
|
+
<div class="fragment"><div class="line"><a name="l01360"></a><span class="lineno"> 1360</span> {</div>
|
|
2587
|
+
<div class="line"><a name="l01361"></a><span class="lineno"> 1361</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>
|
|
2588
|
+
<div class="line"><a name="l01362"></a><span class="lineno"> 1362</span>  {</div>
|
|
2589
|
+
<div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>  <span class="keywordflow">if</span> (it->second == T)</div>
|
|
2590
|
+
<div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>  <span class="keywordflow">return</span> it->first;</div>
|
|
2591
|
+
<div class="line"><a name="l01365"></a><span class="lineno"> 1365</span>  }</div>
|
|
2592
|
+
<div class="line"><a name="l01366"></a><span class="lineno"> 1366</span>  assert(<span class="keyword">false</span> && <span class="stringliteral">"can't find the corresponding LLVM Type"</span>);</div>
|
|
2593
|
+
<div class="line"><a name="l01367"></a><span class="lineno"> 1367</span>  abort();</div>
|
|
2594
|
+
<div class="line"><a name="l01368"></a><span class="lineno"> 1368</span> }</div>
|
|
2600
2595
|
</div><!-- fragment -->
|
|
2601
2596
|
</div>
|
|
2602
2597
|
</div>
|
|
@@ -2782,21 +2777,21 @@ Friends</h2></td></tr>
|
|
|
2782
2777
|
</table>
|
|
2783
2778
|
</div><div class="memdoc">
|
|
2784
2779
|
|
|
2785
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#
|
|
2786
|
-
<div class="fragment"><div class="line"><a name="
|
|
2787
|
-
<div class="line"><a name="
|
|
2788
|
-
<div class="line"><a name="
|
|
2780
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01301">1301</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
|
|
2781
|
+
<div class="fragment"><div class="line"><a name="l01302"></a><span class="lineno"> 1302</span> {</div>
|
|
2782
|
+
<div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>  LLVMConst2SVFConstMap::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a4b94c96898dbbc71bc1cee04786cf3dc">LLVMConst2SVFConst</a>.find(oc);</div>
|
|
2783
|
+
<div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>  <span class="keywordflow">if</span>(it!=<a class="code" href="classSVF_1_1LLVMModuleSet.html#a4b94c96898dbbc71bc1cee04786cf3dc">LLVMConst2SVFConst</a>.end())</div>
|
|
2784
|
+
<div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>  {</div>
|
|
2785
|
+
<div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>  <span class="keywordflow">return</span> it->second;</div>
|
|
2786
|
+
<div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>  }</div>
|
|
2787
|
+
<div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>  <span class="keywordflow">else</span></div>
|
|
2789
2788
|
<div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>  {</div>
|
|
2790
|
-
<div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>  <span class="
|
|
2791
|
-
<div class="line"><a name="l01311"></a><span class="lineno"> 1311</span> 
|
|
2792
|
-
<div class="line"><a name="l01312"></a><span class="lineno"> 1312</span> 
|
|
2793
|
-
<div class="line"><a name="l01313"></a><span class="lineno"> 1313</span> 
|
|
2794
|
-
<div class="line"><a name="l01314"></a><span class="lineno"> 1314</span> 
|
|
2795
|
-
<div class="line"><a name="l01315"></a><span class="lineno"> 1315</span> 
|
|
2796
|
-
<div class="line"><a name="l01316"></a><span class="lineno"> 1316</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5badf03aeb1ebda02bc186bbb58a892a">addOtherConstantMap</a>(oc,svfoc);</div>
|
|
2797
|
-
<div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>  <span class="keywordflow">return</span> svfoc;</div>
|
|
2798
|
-
<div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>  }</div>
|
|
2799
|
-
<div class="line"><a name="l01319"></a><span class="lineno"> 1319</span> }</div>
|
|
2789
|
+
<div class="line"><a name="l01310"></a><span class="lineno"> 1310</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>
|
|
2790
|
+
<div class="line"><a name="l01311"></a><span class="lineno"> 1311</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>
|
|
2791
|
+
<div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5badf03aeb1ebda02bc186bbb58a892a">addOtherConstantMap</a>(oc,svfoc);</div>
|
|
2792
|
+
<div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>  <span class="keywordflow">return</span> svfoc;</div>
|
|
2793
|
+
<div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>  }</div>
|
|
2794
|
+
<div class="line"><a name="l01315"></a><span class="lineno"> 1315</span> }</div>
|
|
2800
2795
|
</div><!-- fragment -->
|
|
2801
2796
|
</div>
|
|
2802
2797
|
</div>
|
|
@@ -2883,68 +2878,67 @@ Friends</h2></td></tr>
|
|
|
2883
2878
|
</div><div class="memdoc">
|
|
2884
2879
|
<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>
|
|
2885
2880
|
|
|
2886
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#
|
|
2887
|
-
<div class="fragment"><div class="line"><a name="
|
|
2888
|
-
<div class="line"><a name="
|
|
2889
|
-
<div class="line"><a name="
|
|
2890
|
-
<div class="line"><a name="
|
|
2891
|
-
<div class="line"><a name="
|
|
2892
|
-
<div class="line"><a name="
|
|
2893
|
-
<div class="line"><a name="
|
|
2894
|
-
<div class="line"><a name="
|
|
2895
|
-
<div class="line"><a name="
|
|
2896
|
-
<div class="line"><a name="
|
|
2897
|
-
<div class="line"><a name="
|
|
2898
|
-
<div class="line"><a name="
|
|
2899
|
-
<div class="line"><a name="
|
|
2900
|
-
<div class="line"><a name="
|
|
2901
|
-
<div class="line"><a name="
|
|
2902
|
-
<div class="line"><a name="
|
|
2903
|
-
<div class="line"><a name="
|
|
2904
|
-
<div class="line"><a name="
|
|
2905
|
-
<div class="line"><a name="
|
|
2906
|
-
<div class="line"><a name="
|
|
2907
|
-
<div class="line"><a name="
|
|
2908
|
-
<div class="line"><a name="
|
|
2909
|
-
<div class="line"><a name="
|
|
2910
|
-
<div class="line"><a name="
|
|
2911
|
-
<div class="line"><a name="
|
|
2912
|
-
<div class="line"><a name="
|
|
2913
|
-
<div class="line"><a name="
|
|
2914
|
-
<div class="line"><a name="
|
|
2915
|
-
<div class="line"><a name="
|
|
2916
|
-
<div class="line"><a name="
|
|
2917
|
-
<div class="line"><a name="
|
|
2918
|
-
<div class="line"><a name="
|
|
2919
|
-
<div class="line"><a name="
|
|
2920
|
-
<div class="line"><a name="
|
|
2921
|
-
<div class="line"><a name="
|
|
2922
|
-
<div class="line"><a name="
|
|
2923
|
-
<div class="line"><a name="
|
|
2924
|
-
<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="
|
|
2941
|
-
<div class="line"><a name="
|
|
2942
|
-
<div class="line"><a name="
|
|
2943
|
-
<div class="line"><a name="
|
|
2944
|
-
<div class="line"><a name="
|
|
2945
|
-
<div class="line"><a name="
|
|
2946
|
-
<div class="line"><a name="
|
|
2947
|
-
<div class="line"><a name="l01303"></a><span class="lineno"> 1303</span> }</div>
|
|
2881
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01236">1236</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
|
|
2882
|
+
<div class="fragment"><div class="line"><a name="l01237"></a><span class="lineno"> 1237</span> {</div>
|
|
2883
|
+
<div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>  LLVMConst2SVFConstMap::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a4b94c96898dbbc71bc1cee04786cf3dc">LLVMConst2SVFConst</a>.find(cd);</div>
|
|
2884
|
+
<div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>  <span class="keywordflow">if</span>(it!=<a class="code" href="classSVF_1_1LLVMModuleSet.html#a4b94c96898dbbc71bc1cee04786cf3dc">LLVMConst2SVFConst</a>.end())</div>
|
|
2885
|
+
<div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>  {</div>
|
|
2886
|
+
<div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>  assert(SVFUtil::isa<SVFConstantData>(it->second) && <span class="stringliteral">"not a SVFConstantData type!"</span>);</div>
|
|
2887
|
+
<div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>  <span class="keywordflow">return</span> SVFUtil::cast<SVFConstantData>(it->second);</div>
|
|
2888
|
+
<div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>  }</div>
|
|
2889
|
+
<div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>  <span class="keywordflow">else</span></div>
|
|
2890
|
+
<div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>  {</div>
|
|
2891
|
+
<div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>  <a class="code" href="classSVF_1_1SVFConstantData.html">SVFConstantData</a>* svfcd = <span class="keyword">nullptr</span>;</div>
|
|
2892
|
+
<div class="line"><a name="l01247"></a><span class="lineno"> 1247</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>
|
|
2893
|
+
<div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>  {</div>
|
|
2894
|
+
<div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>  <span class="keywordflow">if</span>(cint->getBitWidth() == 1)</div>
|
|
2895
|
+
<div class="line"><a name="l01253"></a><span class="lineno"> 1253</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>
|
|
2896
|
+
<div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(cint->getBitWidth() <= 64 && cint->getBitWidth() > 1)</div>
|
|
2897
|
+
<div class="line"><a name="l01255"></a><span class="lineno"> 1255</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>
|
|
2898
|
+
<div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>  <span class="keywordflow">else</span></div>
|
|
2899
|
+
<div class="line"><a name="l01257"></a><span class="lineno"> 1257</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>
|
|
2900
|
+
<div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>  }</div>
|
|
2901
|
+
<div class="line"><a name="l01259"></a><span class="lineno"> 1259</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>
|
|
2902
|
+
<div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>  {</div>
|
|
2903
|
+
<div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>  <span class="keywordtype">double</span> dval = 0;</div>
|
|
2904
|
+
<div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>  <span class="comment">// TODO: Why only double is considered? What about float?</span></div>
|
|
2905
|
+
<div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>  <span class="keywordflow">if</span> (cfp->isNormalFP())</div>
|
|
2906
|
+
<div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>  {</div>
|
|
2907
|
+
<div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>  <span class="keyword">const</span> llvm::fltSemantics& semantics = cfp->getValueAPF().getSemantics();</div>
|
|
2908
|
+
<div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>  <span class="keywordflow">if</span> (&semantics == &llvm::APFloat::IEEEhalf() ||</div>
|
|
2909
|
+
<div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>  &semantics == &llvm::APFloat::IEEEsingle() ||</div>
|
|
2910
|
+
<div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>  &semantics == &llvm::APFloat::IEEEdouble() ||</div>
|
|
2911
|
+
<div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>  &semantics == &llvm::APFloat::IEEEquad() ||</div>
|
|
2912
|
+
<div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>  &semantics == &llvm::APFloat::x87DoubleExtended())</div>
|
|
2913
|
+
<div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>  {</div>
|
|
2914
|
+
<div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>  dval = cfp->getValueAPF().convertToDouble();</div>
|
|
2915
|
+
<div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>  }</div>
|
|
2916
|
+
<div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>  <span class="keywordflow">else</span></div>
|
|
2917
|
+
<div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>  {</div>
|
|
2918
|
+
<div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>  assert (<span class="keyword">false</span> && <span class="stringliteral">"Unsupported floating point type"</span>);</div>
|
|
2919
|
+
<div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>  abort();</div>
|
|
2920
|
+
<div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>  }</div>
|
|
2921
|
+
<div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>  }</div>
|
|
2922
|
+
<div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>  <span class="keywordflow">else</span></div>
|
|
2923
|
+
<div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>  {</div>
|
|
2924
|
+
<div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>  <span class="comment">// other cfp type, like isZero(), isInfinity(), isNegative(), etc.</span></div>
|
|
2925
|
+
<div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>  <span class="comment">// do nothing</span></div>
|
|
2926
|
+
<div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>  }</div>
|
|
2927
|
+
<div class="line"><a name="l01285"></a><span class="lineno"> 1285</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>
|
|
2928
|
+
<div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>  }</div>
|
|
2929
|
+
<div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa<ConstantPointerNull>(cd))</div>
|
|
2930
|
+
<div class="line"><a name="l01288"></a><span class="lineno"> 1288</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>
|
|
2931
|
+
<div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<UndefValue>(cd))</div>
|
|
2932
|
+
<div class="line"><a name="l01290"></a><span class="lineno"> 1290</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>
|
|
2933
|
+
<div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>  <span class="keywordflow">else</span></div>
|
|
2934
|
+
<div class="line"><a name="l01292"></a><span class="lineno"> 1292</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>
|
|
2935
|
+
<div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>  </div>
|
|
2936
|
+
<div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>  </div>
|
|
2937
|
+
<div class="line"><a name="l01295"></a><span class="lineno"> 1295</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>
|
|
2938
|
+
<div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#af4bd487b3b6efe55bf869b869f5e8a80">addConstantDataMap</a>(cd,svfcd);</div>
|
|
2939
|
+
<div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>  <span class="keywordflow">return</span> svfcd;</div>
|
|
2940
|
+
<div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>  }</div>
|
|
2941
|
+
<div class="line"><a name="l01299"></a><span class="lineno"> 1299</span> }</div>
|
|
2948
2942
|
</div><!-- fragment -->
|
|
2949
2943
|
</div>
|
|
2950
2944
|
</div>
|
|
@@ -3138,24 +3132,24 @@ Friends</h2></td></tr>
|
|
|
3138
3132
|
</table>
|
|
3139
3133
|
</div><div class="memdoc">
|
|
3140
3134
|
|
|
3141
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#
|
|
3142
|
-
<div class="fragment"><div class="line"><a name="
|
|
3143
|
-
<div class="line"><a name="
|
|
3144
|
-
<div class="line"><a name="
|
|
3135
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01317">1317</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
|
|
3136
|
+
<div class="fragment"><div class="line"><a name="l01318"></a><span class="lineno"> 1318</span> {</div>
|
|
3137
|
+
<div class="line"><a name="l01319"></a><span class="lineno"> 1319</span>  LLVMValue2SVFOtherValueMap::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#ac3e70bd338be3a54330be5dc10321eb3">LLVMValue2SVFOtherValue</a>.find(ov);</div>
|
|
3138
|
+
<div class="line"><a name="l01320"></a><span class="lineno"> 1320</span>  <span class="keywordflow">if</span>(it!=<a class="code" href="classSVF_1_1LLVMModuleSet.html#ac3e70bd338be3a54330be5dc10321eb3">LLVMValue2SVFOtherValue</a>.end())</div>
|
|
3139
|
+
<div class="line"><a name="l01321"></a><span class="lineno"> 1321</span>  {</div>
|
|
3140
|
+
<div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>  <span class="keywordflow">return</span> it->second;</div>
|
|
3141
|
+
<div class="line"><a name="l01323"></a><span class="lineno"> 1323</span>  }</div>
|
|
3142
|
+
<div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>  <span class="keywordflow">else</span></div>
|
|
3145
3143
|
<div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>  {</div>
|
|
3146
|
-
<div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>  <
|
|
3147
|
-
<div class="line"><a name="l01327"></a><span class="lineno"> 1327</span> 
|
|
3148
|
-
<div class="line"><a name="l01328"></a><span class="lineno"> 1328</span> 
|
|
3149
|
-
<div class="line"><a name="l01329"></a><span class="lineno"> 1329</span> 
|
|
3150
|
-
<div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>  <a class="code" href="
|
|
3151
|
-
<div class="line"><a name="l01331"></a><span class="lineno"> 1331</span> 
|
|
3152
|
-
<div class="line"><a name="l01332"></a><span class="lineno"> 1332</span> 
|
|
3153
|
-
<div class="line"><a name="l01333"></a><span class="lineno"> 1333</span> 
|
|
3154
|
-
<div class="line"><a name="l01334"></a><span class="lineno"> 1334</span> 
|
|
3155
|
-
<div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a023ea6f179433fa4d007c98ddc38e3c5">addOtherValueMap</a>(ov,svfov);</div>
|
|
3156
|
-
<div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>  <span class="keywordflow">return</span> svfov;</div>
|
|
3157
|
-
<div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>  }</div>
|
|
3158
|
-
<div class="line"><a name="l01338"></a><span class="lineno"> 1338</span> }</div>
|
|
3144
|
+
<div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>  <a class="code" href="classSVF_1_1SVFOtherValue.html">SVFOtherValue</a>* svfov =</div>
|
|
3145
|
+
<div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>  SVFUtil::isa<MetadataAsValue>(ov)</div>
|
|
3146
|
+
<div class="line"><a name="l01328"></a><span class="lineno"> 1328</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>
|
|
3147
|
+
<div class="line"><a name="l01329"></a><span class="lineno"> 1329</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>
|
|
3148
|
+
<div class="line"><a name="l01330"></a><span class="lineno"> 1330</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>
|
|
3149
|
+
<div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a023ea6f179433fa4d007c98ddc38e3c5">addOtherValueMap</a>(ov,svfov);</div>
|
|
3150
|
+
<div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>  <span class="keywordflow">return</span> svfov;</div>
|
|
3151
|
+
<div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>  }</div>
|
|
3152
|
+
<div class="line"><a name="l01334"></a><span class="lineno"> 1334</span> }</div>
|
|
3159
3153
|
</div><!-- fragment -->
|
|
3160
3154
|
</div>
|
|
3161
3155
|
</div>
|
|
@@ -3178,18 +3172,18 @@ Friends</h2></td></tr>
|
|
|
3178
3172
|
<p>Get or create <a class="el" href="classSVF_1_1SVFType.html">SVFType</a> and typeinfo. </p>
|
|
3179
3173
|
<p>Get or create <a class="el" href="classSVF_1_1SVFType.html">SVFType</a> and typeinfo </p>
|
|
3180
3174
|
|
|
3181
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#
|
|
3182
|
-
<div class="fragment"><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="
|
|
3175
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01373">1373</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
|
|
3176
|
+
<div class="fragment"><div class="line"><a name="l01374"></a><span class="lineno"> 1374</span> {</div>
|
|
3177
|
+
<div class="line"><a name="l01375"></a><span class="lineno"> 1375</span>  assert(T && <span class="stringliteral">"SVFType should not be null"</span>);</div>
|
|
3178
|
+
<div class="line"><a name="l01376"></a><span class="lineno"> 1376</span>  LLVMType2SVFTypeMap::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">LLVMType2SVFType</a>.find(T);</div>
|
|
3179
|
+
<div class="line"><a name="l01377"></a><span class="lineno"> 1377</span>  <span class="keywordflow">if</span> (it != <a class="code" href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">LLVMType2SVFType</a>.end())</div>
|
|
3180
|
+
<div class="line"><a name="l01378"></a><span class="lineno"> 1378</span>  <span class="keywordflow">return</span> it->second;</div>
|
|
3181
|
+
<div class="line"><a name="l01379"></a><span class="lineno"> 1379</span>  </div>
|
|
3182
|
+
<div class="line"><a name="l01380"></a><span class="lineno"> 1380</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>
|
|
3183
|
+
<div class="line"><a name="l01381"></a><span class="lineno"> 1381</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>
|
|
3184
|
+
<div class="line"><a name="l01382"></a><span class="lineno"> 1382</span>  svfType-><a class="code" href="classSVF_1_1SVFType.html#aef5999ada62dac3cc946d832ac66948c">setTypeInfo</a>(stinfo);</div>
|
|
3185
|
+
<div class="line"><a name="l01383"></a><span class="lineno"> 1383</span>  <span class="keywordflow">return</span> svfType;</div>
|
|
3186
|
+
<div class="line"><a name="l01384"></a><span class="lineno"> 1384</span> }</div>
|
|
3193
3187
|
</div><!-- fragment -->
|
|
3194
3188
|
</div>
|
|
3195
3189
|
</div>
|
|
@@ -3209,28 +3203,28 @@ Friends</h2></td></tr>
|
|
|
3209
3203
|
</table>
|
|
3210
3204
|
</div><div class="memdoc">
|
|
3211
3205
|
|
|
3212
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#
|
|
3213
|
-
<div class="fragment"><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="
|
|
3224
|
-
<div class="line"><a name="
|
|
3225
|
-
<div class="line"><a name="
|
|
3226
|
-
<div class="line"><a name="
|
|
3227
|
-
<div class="line"><a name="
|
|
3228
|
-
<div class="line"><a name="
|
|
3229
|
-
<div class="line"><a name="
|
|
3230
|
-
<div class="line"><a name="
|
|
3231
|
-
<div class="line"><a name="
|
|
3232
|
-
<div class="line"><a name="
|
|
3233
|
-
<div class="line"><a name="
|
|
3206
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01336">1336</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
|
|
3207
|
+
<div class="fragment"><div class="line"><a name="l01337"></a><span class="lineno"> 1337</span> {</div>
|
|
3208
|
+
<div class="line"><a name="l01338"></a><span class="lineno"> 1338</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>
|
|
3209
|
+
<div class="line"><a name="l01339"></a><span class="lineno"> 1339</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">getSVFFunction</a>(fun);</div>
|
|
3210
|
+
<div class="line"><a name="l01340"></a><span class="lineno"> 1340</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>
|
|
3211
|
+
<div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">getSVFBasicBlock</a>(bb);</div>
|
|
3212
|
+
<div class="line"><a name="l01342"></a><span class="lineno"> 1342</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>
|
|
3213
|
+
<div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(inst);</div>
|
|
3214
|
+
<div class="line"><a name="l01344"></a><span class="lineno"> 1344</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>
|
|
3215
|
+
<div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#ad3f66b40ad360003845253f452d6a711">getSVFArgument</a>(arg);</div>
|
|
3216
|
+
<div class="line"><a name="l01346"></a><span class="lineno"> 1346</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>
|
|
3217
|
+
<div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>  {</div>
|
|
3218
|
+
<div class="line"><a name="l01348"></a><span class="lineno"> 1348</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>
|
|
3219
|
+
<div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a25821b0feeb3b08e00ec9d444520b727">getSVFConstantData</a>(cd);</div>
|
|
3220
|
+
<div class="line"><a name="l01350"></a><span class="lineno"> 1350</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>
|
|
3221
|
+
<div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a3cbba2eb702a3481478b2590dfffa352">getSVFGlobalValue</a>(glob);</div>
|
|
3222
|
+
<div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>  <span class="keywordflow">else</span></div>
|
|
3223
|
+
<div class="line"><a name="l01353"></a><span class="lineno"> 1353</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a74256f36f0fdc242df9729906c34efbc">getOtherSVFConstant</a>(cons);</div>
|
|
3224
|
+
<div class="line"><a name="l01354"></a><span class="lineno"> 1354</span>  }</div>
|
|
3225
|
+
<div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>  <span class="keywordflow">else</span></div>
|
|
3226
|
+
<div class="line"><a name="l01356"></a><span class="lineno"> 1356</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a0ef17c1d5e6a95c597d2334ea577a965">getSVFOtherValue</a>(value);</div>
|
|
3227
|
+
<div class="line"><a name="l01357"></a><span class="lineno"> 1357</span> }</div>
|
|
3234
3228
|
</div><!-- fragment -->
|
|
3235
3229
|
</div>
|
|
3236
3230
|
</div>
|
|
@@ -3396,74 +3390,74 @@ Friends</h2></td></tr>
|
|
|
3396
3390
|
</table>
|
|
3397
3391
|
</div><div class="memdoc">
|
|
3398
3392
|
|
|
3399
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#
|
|
3400
|
-
<div class="fragment"><div class="line"><a name="
|
|
3401
|
-
<div class="line"><a name="
|
|
3402
|
-
<div class="line"><a name="
|
|
3403
|
-
<div class="line"><a name="
|
|
3404
|
-
<div class="line"><a name="
|
|
3405
|
-
<div class="line"><a name="
|
|
3406
|
-
<div class="line"><a name="
|
|
3407
|
-
<div class="line"><a name="
|
|
3408
|
-
<div class="line"><a name="
|
|
3409
|
-
<div class="line"><a name="
|
|
3410
|
-
<div class="line"><a name="
|
|
3411
|
-
<div class="line"><a name="
|
|
3412
|
-
<div class="line"><a name="
|
|
3413
|
-
<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="
|
|
3422
|
-
<div class="line"><a name="
|
|
3423
|
-
<div class="line"><a name="
|
|
3424
|
-
<div class="line"><a name="
|
|
3425
|
-
<div class="line"><a name="
|
|
3426
|
-
<div class="line"><a name="
|
|
3427
|
-
<div class="line"><a name="
|
|
3428
|
-
<div class="line"><a name="
|
|
3429
|
-
<div class="line"><a name="
|
|
3430
|
-
<div class="line"><a name="
|
|
3431
|
-
<div class="line"><a name="
|
|
3432
|
-
<div class="line"><a name="
|
|
3433
|
-
<div class="line"><a name="
|
|
3434
|
-
<div class="line"><a name="
|
|
3435
|
-
<div class="line"><a name="
|
|
3436
|
-
<div class="line"><a name="
|
|
3437
|
-
<div class="line"><a name="
|
|
3438
|
-
<div class="line"><a name="
|
|
3439
|
-
<div class="line"><a name="
|
|
3440
|
-
<div class="line"><a name="
|
|
3441
|
-
<div class="line"><a name="
|
|
3442
|
-
<div class="line"><a name="
|
|
3443
|
-
<div class="line"><a name="
|
|
3444
|
-
<div class="line"><a name="
|
|
3445
|
-
<div class="line"><a name="
|
|
3446
|
-
<div class="line"><a name="
|
|
3447
|
-
<div class="line"><a name="
|
|
3448
|
-
<div class="line"><a name="
|
|
3449
|
-
<div class="line"><a name="
|
|
3450
|
-
<div class="line"><a name="
|
|
3451
|
-
<div class="line"><a name="
|
|
3452
|
-
<div class="line"><a name="
|
|
3453
|
-
<div class="line"><a name="
|
|
3454
|
-
<div class="line"><a name="
|
|
3455
|
-
<div class="line"><a name="
|
|
3456
|
-
<div class="line"><a name="
|
|
3457
|
-
<div class="line"><a name="
|
|
3458
|
-
<div class="line"><a name="
|
|
3459
|
-
<div class="line"><a name="
|
|
3460
|
-
<div class="line"><a name="
|
|
3461
|
-
<div class="line"><a name="
|
|
3462
|
-
<div class="line"><a name="
|
|
3463
|
-
<div class="line"><a name="
|
|
3464
|
-
<div class="line"><a name="
|
|
3465
|
-
<div class="line"><a name="
|
|
3466
|
-
<div class="line"><a name="
|
|
3393
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00380">380</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
|
|
3394
|
+
<div class="fragment"><div class="line"><a name="l00381"></a><span class="lineno"> 381</span> {</div>
|
|
3395
|
+
<div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  <span class="keywordflow">if</span> (fun->isDeclaration())</div>
|
|
3396
|
+
<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  <span class="keywordflow">return</span>;</div>
|
|
3397
|
+
<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  <span class="comment">//process and stored dt & df</span></div>
|
|
3398
|
+
<div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  <a class="code" href="namespaceSVF.html#aecbb42b8e9d17fa0189c50dda9fd5fdd">DominatorTree</a> dt;</div>
|
|
3399
|
+
<div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  <a class="code" href="namespaceSVF.html#ab44d20f806be99699895260b14a942d7">DominanceFrontier</a> df;</div>
|
|
3400
|
+
<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  dt.recalculate(<span class="keyword">const_cast<</span><a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>&<span class="keyword">></span>(*fun));</div>
|
|
3401
|
+
<div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  df.analyze(dt);</div>
|
|
3402
|
+
<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  <a class="code" href="namespaceSVF.html#a77e088bfe47c0b0ddcbbe0693dec6fe5">LoopInfo</a> loopInfo = <a class="code" href="namespaceSVF.html#a77e088bfe47c0b0ddcbbe0693dec6fe5">LoopInfo</a>(dt);</div>
|
|
3403
|
+
<div class="line"><a name="l00390"></a><span class="lineno"> 390</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>
|
|
3404
|
+
<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  <a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html">SVFLoopAndDomInfo</a>* ld = svffun->getLoopAndDomInfo();</div>
|
|
3405
|
+
<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  </div>
|
|
3406
|
+
<div class="line"><a name="l00393"></a><span class="lineno"> 393</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>
|
|
3407
|
+
<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  <span class="keywordflow">for</span> (DominanceFrontierBase::const_iterator dfIter = df.begin(), eDfIter = df.end(); dfIter != eDfIter; dfIter++)</div>
|
|
3408
|
+
<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  {</div>
|
|
3409
|
+
<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* keyBB = dfIter->first;</div>
|
|
3410
|
+
<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  <span class="keyword">const</span> std::set<BasicBlock* >& domSet = dfIter->second;</div>
|
|
3411
|
+
<div class="line"><a name="l00398"></a><span class="lineno"> 398</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>
|
|
3412
|
+
<div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bbValue:domSet)</div>
|
|
3413
|
+
<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  {</div>
|
|
3414
|
+
<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  valueBasicBlocks.insert(<a class="code" href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">getSVFBasicBlock</a>(bbValue));</div>
|
|
3415
|
+
<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  }</div>
|
|
3416
|
+
<div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  }</div>
|
|
3417
|
+
<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  std::vector<const SVFBasicBlock*> reachableBBs;</div>
|
|
3418
|
+
<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a9bd6f54920929e5ad35102ba2f2223da">LLVMUtil::getFunReachableBBs</a>(fun, reachableBBs);</div>
|
|
3419
|
+
<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  ld-><a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#acc409e328f641a2c9512beeb727f58c7">setReachableBBs</a>(reachableBBs);</div>
|
|
3420
|
+
<div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  </div>
|
|
3421
|
+
<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  <span class="keywordflow">for</span> (Function::const_iterator bit = fun->begin(), beit = fun->end(); bit!=beit; ++bit)</div>
|
|
3422
|
+
<div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  {</div>
|
|
3423
|
+
<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> &bb = *bit;</div>
|
|
3424
|
+
<div class="line"><a name="l00411"></a><span class="lineno"> 411</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>
|
|
3425
|
+
<div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF.html#a827d09974dc7bf0849f96823cc2fee89">DomTreeNode</a>* dtNode = dt.getNode(&bb))</div>
|
|
3426
|
+
<div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  {</div>
|
|
3427
|
+
<div class="line"><a name="l00414"></a><span class="lineno"> 414</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>
|
|
3428
|
+
<div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> domBB : *dtNode)</div>
|
|
3429
|
+
<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  {</div>
|
|
3430
|
+
<div class="line"><a name="l00417"></a><span class="lineno"> 417</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>
|
|
3431
|
+
<div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  bbSet.insert(domSVFBB);</div>
|
|
3432
|
+
<div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  }</div>
|
|
3433
|
+
<div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  }</div>
|
|
3434
|
+
<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  </div>
|
|
3435
|
+
<div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF.html#a827d09974dc7bf0849f96823cc2fee89">DomTreeNode</a>* pdtNode = pdt.getNode(&bb))</div>
|
|
3436
|
+
<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  {</div>
|
|
3437
|
+
<div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> level = pdtNode->getLevel();</div>
|
|
3438
|
+
<div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  ld-><a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#ac285502846c993f149b6bcc3e04f767e">getBBPDomLevel</a>()[svfBB] = level;</div>
|
|
3439
|
+
<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* idomBB = pdtNode->getIDom()->getBlock();</div>
|
|
3440
|
+
<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* idom = idomBB == <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a> ? <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>: <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">getSVFBasicBlock</a>(idomBB);</div>
|
|
3441
|
+
<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  ld-><a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#ae8a308d5ee34c0eb4a6c1278565e5907">getBB2PIdom</a>()[svfBB] = idom;</div>
|
|
3442
|
+
<div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  </div>
|
|
3443
|
+
<div class="line"><a name="l00430"></a><span class="lineno"> 430</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>
|
|
3444
|
+
<div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> domBB : *pdtNode)</div>
|
|
3445
|
+
<div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  {</div>
|
|
3446
|
+
<div class="line"><a name="l00433"></a><span class="lineno"> 433</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>
|
|
3447
|
+
<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  bbSet.insert(domSVFBB);</div>
|
|
3448
|
+
<div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  }</div>
|
|
3449
|
+
<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  }</div>
|
|
3450
|
+
<div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  </div>
|
|
3451
|
+
<div class="line"><a name="l00438"></a><span class="lineno"> 438</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>
|
|
3452
|
+
<div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  {</div>
|
|
3453
|
+
<div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* loopBlock : loop->getBlocks())</div>
|
|
3454
|
+
<div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  {</div>
|
|
3455
|
+
<div class="line"><a name="l00442"></a><span class="lineno"> 442</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>
|
|
3456
|
+
<div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  ld-><a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#aed2f125f7b8c21092b23d9727568ba50">addToBB2LoopMap</a>(svfBB, loopbb);</div>
|
|
3457
|
+
<div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  }</div>
|
|
3458
|
+
<div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  }</div>
|
|
3459
|
+
<div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  }</div>
|
|
3460
|
+
<div class="line"><a name="l00447"></a><span class="lineno"> 447</span> }</div>
|
|
3467
3461
|
</div><!-- fragment -->
|
|
3468
3462
|
</div>
|
|
3469
3463
|
</div>
|
|
@@ -3492,71 +3486,71 @@ Friends</h2></td></tr>
|
|
|
3492
3486
|
</div><div class="memdoc">
|
|
3493
3487
|
<p>set exit block: exit basic block must have no successors and have a return instruction</p>
|
|
3494
3488
|
|
|
3495
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#
|
|
3496
|
-
<div class="fragment"><div class="line"><a name="
|
|
3497
|
-
<div class="line"><a name="
|
|
3498
|
-
<div class="line"><a name="
|
|
3499
|
-
<div class="line"><a name="
|
|
3500
|
-
<div class="line"><a name="
|
|
3501
|
-
<div class="line"><a name="
|
|
3502
|
-
<div class="line"><a name="
|
|
3489
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00312">312</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
|
|
3490
|
+
<div class="fragment"><div class="line"><a name="l00313"></a><span class="lineno"> 313</span> {</div>
|
|
3491
|
+
<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *svfFun = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">getSVFFunction</a>(func);</div>
|
|
3492
|
+
<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  <span class="keywordflow">for</span> (Function::const_iterator bit = func->begin(), ebit = func->end(); bit != ebit; ++bit)</div>
|
|
3493
|
+
<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  {</div>
|
|
3494
|
+
<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb = &*bit;</div>
|
|
3495
|
+
<div class="line"><a name="l00318"></a><span class="lineno"> 318</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>
|
|
3496
|
+
<div class="line"><a name="l00319"></a><span class="lineno"> 319</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>
|
|
3497
|
+
<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  {</div>
|
|
3498
|
+
<div class="line"><a name="l00321"></a><span class="lineno"> 321</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>
|
|
3499
|
+
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  svfbb-><a class="code" href="classSVF_1_1SVFBasicBlock.html#abfe3a1ce5fa364d9db7cd2d0e6a144ff">addSuccBasicBlock</a>(svf_scc_bb);</div>
|
|
3500
|
+
<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  }</div>
|
|
3501
|
+
<div class="line"><a name="l00324"></a><span class="lineno"> 324</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>
|
|
3503
3502
|
<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  {</div>
|
|
3504
|
-
<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>*
|
|
3505
|
-
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  svfbb-><a class="code" href="classSVF_1_1SVFBasicBlock.html#
|
|
3503
|
+
<div class="line"><a name="l00326"></a><span class="lineno"> 326</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>
|
|
3504
|
+
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  svfbb-><a class="code" href="classSVF_1_1SVFBasicBlock.html#a38f8fdd93ef7222f408cbbb2a98a1cd5">addPredBasicBlock</a>(svf_pred_bb);</div>
|
|
3506
3505
|
<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  }</div>
|
|
3507
|
-
<div class="line"><a name="l00329"></a><span class="lineno"> 329</span> 
|
|
3508
|
-
<div class="line"><a name="
|
|
3509
|
-
<div class="line"><a name="
|
|
3510
|
-
<div class="line"><a name="
|
|
3511
|
-
<div class="line"><a name="
|
|
3512
|
-
<div class="line"><a name="
|
|
3513
|
-
<div class="line"><a name="l00336"></a><span class="lineno"> 336</span> 
|
|
3514
|
-
<div class="line"><a name="l00337"></a><span class="lineno"> 337</span> 
|
|
3515
|
-
<div class="line"><a name="l00338"></a><span class="lineno"> 338</span> 
|
|
3516
|
-
<div class="line"><a name="l00339"></a><span class="lineno"> 339</span> 
|
|
3517
|
-
<div class="line"><a name="l00340"></a><span class="lineno"> 340</span> 
|
|
3518
|
-
<div class="line"><a name="l00341"></a><span class="lineno"> 341</span> 
|
|
3519
|
-
<div class="line"><a name="l00342"></a><span class="lineno"> 342</span> 
|
|
3520
|
-
<div class="line"><a name="l00343"></a><span class="lineno"> 343</span> 
|
|
3521
|
-
<div class="line"><a name="l00344"></a><span class="lineno"> 344</span> 
|
|
3522
|
-
<div class="line"><a name="l00345"></a><span class="lineno"> 345</span> 
|
|
3523
|
-
<div class="line"><a name="l00346"></a><span class="lineno"> 346</span> 
|
|
3524
|
-
<div class="line"><a name="l00347"></a><span class="lineno"> 347</span> 
|
|
3525
|
-
<div class="line"><a name="l00348"></a><span class="lineno"> 348</span> 
|
|
3526
|
-
<div class="line"><a name="l00349"></a><span class="lineno"> 349</span> 
|
|
3527
|
-
<div class="line"><a name="l00350"></a><span class="lineno"> 350</span> 
|
|
3528
|
-
<div class="line"><a name="l00351"></a><span class="lineno"> 351</span> 
|
|
3529
|
-
<div class="line"><a name="l00352"></a><span class="lineno"> 352</span> 
|
|
3530
|
-
<div class="line"><a name="l00353"></a><span class="lineno"> 353</span> 
|
|
3531
|
-
<div class="line"><a name="l00354"></a><span class="lineno"> 354</span> 
|
|
3532
|
-
<div class="line"><a name="l00355"></a><span class="lineno"> 355</span> 
|
|
3533
|
-
<div class="line"><a name="l00356"></a><span class="lineno"> 356</span> 
|
|
3534
|
-
<div class="line"><a name="l00357"></a><span class="lineno"> 357</span> 
|
|
3535
|
-
<div class="line"><a name="l00358"></a><span class="lineno"> 358</span> 
|
|
3536
|
-
<div class="line"><a name="l00359"></a><span class="lineno"> 359</span> 
|
|
3537
|
-
<div class="line"><a name="l00360"></a><span class="lineno"> 360</span> 
|
|
3538
|
-
<div class="line"><a name="l00361"></a><span class="lineno"> 361</span> 
|
|
3539
|
-
<div class="line"><a name="l00362"></a><span class="lineno"> 362</span> 
|
|
3540
|
-
<div class="line"><a name="l00363"></a><span class="lineno"> 363</span> 
|
|
3541
|
-
<div class="line"><a name="l00364"></a><span class="lineno"> 364</span> 
|
|
3542
|
-
<div class="line"><a name="l00365"></a><span class="lineno"> 365</span> 
|
|
3543
|
-
<div class="line"><a name="l00366"></a><span class="lineno"> 366</span> 
|
|
3506
|
+
<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  </div>
|
|
3507
|
+
<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  <span class="keywordflow">if</span> (svfbb-><a class="code" href="classSVF_1_1SVFBasicBlock.html#a66f51cd41e93ad055c4a0c2874e73fae">getSuccessors</a>().empty())</div>
|
|
3508
|
+
<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  {</div>
|
|
3509
|
+
<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#abb4b5ed04ec70a2e7fca8198132370cf">LLVMUtil::basicBlockHasRetInst</a>(bb))</div>
|
|
3510
|
+
<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  {</div>
|
|
3511
|
+
<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  svfFun-><a class="code" href="classSVF_1_1SVFFunction.html#abd458bb5a035d3f7db32fac5f01b57f3">setExitBlock</a>(svfbb);</div>
|
|
3512
|
+
<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  }</div>
|
|
3513
|
+
<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  }</div>
|
|
3514
|
+
<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  </div>
|
|
3515
|
+
<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  <span class="keywordflow">for</span> (BasicBlock::const_iterator iit = bb->begin(), eiit = bb->end(); iit != eiit; ++iit)</div>
|
|
3516
|
+
<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  {</div>
|
|
3517
|
+
<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst = &*iit;</div>
|
|
3518
|
+
<div class="line"><a name="l00342"></a><span class="lineno"> 342</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>
|
|
3519
|
+
<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  {</div>
|
|
3520
|
+
<div class="line"><a name="l00344"></a><span class="lineno"> 344</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>
|
|
3521
|
+
<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  <a class="code" href="classSVF_1_1SVFCallInst.html">SVFCallInst</a>* svfcall = SVFUtil::cast<SVFCallInst>(svfinst);</div>
|
|
3522
|
+
<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  <span class="keyword">auto</span> called_llvmval = call->getCalledOperand()->stripPointerCasts();</div>
|
|
3523
|
+
<div class="line"><a name="l00347"></a><span class="lineno"> 347</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>
|
|
3524
|
+
<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  {</div>
|
|
3525
|
+
<div class="line"><a name="l00349"></a><span class="lineno"> 349</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#a21636200f17c62034720c4287aa818b5">LLVMUtil::getDefFunForMultipleModule</a>(called_llvmfunc);</div>
|
|
3526
|
+
<div class="line"><a name="l00350"></a><span class="lineno"> 350</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>
|
|
3527
|
+
<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  svfcall-><a class="code" href="classSVF_1_1SVFCallInst.html#a6dd304f555d2d2388c4430e57b0d2b91">setCalledOperand</a>(callee);</div>
|
|
3528
|
+
<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  }</div>
|
|
3529
|
+
<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  <span class="keywordflow">else</span></div>
|
|
3530
|
+
<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  {</div>
|
|
3531
|
+
<div class="line"><a name="l00355"></a><span class="lineno"> 355</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>
|
|
3532
|
+
<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  }</div>
|
|
3533
|
+
<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SVFVirtualCallInst.html">SVFVirtualCallInst</a>* virtualCall = SVFUtil::dyn_cast<SVFVirtualCallInst>(svfcall))</div>
|
|
3534
|
+
<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  {</div>
|
|
3535
|
+
<div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  virtualCall->setVtablePtr(<a class="code" href="classSVF_1_1LLVMModuleSet.html#afdd77bc1fca91f70b2ec362f1dacd392">getSVFValue</a>(<a class="code" href="namespaceSVF_1_1cppUtil.html#a374e7c0b161a77f4d693e13b99ed6283">cppUtil::getVCallVtblPtr</a>(call)));</div>
|
|
3536
|
+
<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  virtualCall->setFunIdxInVtable(<a class="code" href="namespaceSVF_1_1cppUtil.html#a279fa78f7a2e45b458a0358de9c061b8">cppUtil::getVCallIdx</a>(call));</div>
|
|
3537
|
+
<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  virtualCall->setFunNameOfVirtualCall(<a class="code" href="namespaceSVF_1_1cppUtil.html#a120e9fc3aa1dc2db3e0c2ea9a85b38b6">cppUtil::getFunNameOfVCallSite</a>(call));</div>
|
|
3538
|
+
<div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  }</div>
|
|
3539
|
+
<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  <span class="keywordflow">for</span>(<a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> i = 0; i < call->arg_size(); i++)</div>
|
|
3540
|
+
<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  {</div>
|
|
3541
|
+
<div class="line"><a name="l00365"></a><span class="lineno"> 365</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>
|
|
3542
|
+
<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  svfcall-><a class="code" href="classSVF_1_1SVFCallInst.html#ac979b49b449b97b2a23f195cb107ec77">addArgument</a>(svfval);</div>
|
|
3544
3543
|
<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  }</div>
|
|
3545
|
-
<div class="line"><a name="l00368"></a><span class="lineno"> 368</span> 
|
|
3546
|
-
<div class="line"><a name="l00369"></a><span class="lineno"> 369</span> 
|
|
3547
|
-
<div class="line"><a name="l00370"></a><span class="lineno"> 370</span> 
|
|
3548
|
-
<div class="line"><a name="l00371"></a><span class="lineno"> 371</span> 
|
|
3549
|
-
<div class="line"><a name="l00372"></a><span class="lineno"> 372</span> 
|
|
3550
|
-
<div class="line"><a name="l00373"></a><span class="lineno"> 373</span> 
|
|
3551
|
-
<div class="line"><a name="l00374"></a><span class="lineno"> 374</span> 
|
|
3552
|
-
<div class="line"><a name="l00375"></a><span class="lineno"> 375</span> 
|
|
3553
|
-
<div class="line"><a name="l00376"></a><span class="lineno"> 376</span> 
|
|
3554
|
-
<div class="line"><a name="l00377"></a><span class="lineno"> 377</span> 
|
|
3555
|
-
<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  <span class="comment">// For no return functions, we set the last block as exit BB</span></div>
|
|
3556
|
-
<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  <span class="comment">// This ensures that each function that has definition must have an exit BB</span></div>
|
|
3557
|
-
<div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  <span class="keywordflow">if</span>(svfFun-><a class="code" href="classSVF_1_1SVFFunction.html#a374cbaa780f540cb4b4ccac562a82632">exitBlock</a> == <span class="keyword">nullptr</span> && svfFun-><a class="code" href="classSVF_1_1SVFFunction.html#a9a7f1f56b6cfc33e7fa241286a07fd63">hasBasicBlock</a>()) svfFun-><a class="code" href="classSVF_1_1SVFFunction.html#abd458bb5a035d3f7db32fac5f01b57f3">setExitBlock</a>(</div>
|
|
3558
|
-
<div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  <span class="keyword">const_cast<</span><a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a> *<span class="keyword">></span>(svfFun-><a class="code" href="classSVF_1_1SVFFunction.html#a60797e9e8b9cbd6b32cc71fa5d00d80c">back</a>()));</div>
|
|
3559
|
-
<div class="line"><a name="l00382"></a><span class="lineno"> 382</span> }</div>
|
|
3544
|
+
<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  }</div>
|
|
3545
|
+
<div class="line"><a name="l00369"></a><span class="lineno"> 369</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>
|
|
3546
|
+
<div class="line"><a name="l00370"></a><span class="lineno"> 370</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>
|
|
3547
|
+
<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  }</div>
|
|
3548
|
+
<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  }</div>
|
|
3549
|
+
<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  <span class="comment">// For no return functions, we set the last block as exit BB</span></div>
|
|
3550
|
+
<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  <span class="comment">// This ensures that each function that has definition must have an exit BB</span></div>
|
|
3551
|
+
<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  <span class="keywordflow">if</span>(svfFun-><a class="code" href="classSVF_1_1SVFFunction.html#a374cbaa780f540cb4b4ccac562a82632">exitBlock</a> == <span class="keyword">nullptr</span> && svfFun-><a class="code" href="classSVF_1_1SVFFunction.html#a9a7f1f56b6cfc33e7fa241286a07fd63">hasBasicBlock</a>()) svfFun-><a class="code" href="classSVF_1_1SVFFunction.html#abd458bb5a035d3f7db32fac5f01b57f3">setExitBlock</a>(</div>
|
|
3552
|
+
<div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  <span class="keyword">const_cast<</span><a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a> *<span class="keyword">></span>(svfFun-><a class="code" href="classSVF_1_1SVFFunction.html#a60797e9e8b9cbd6b32cc71fa5d00d80c">back</a>()));</div>
|
|
3553
|
+
<div class="line"><a name="l00377"></a><span class="lineno"> 377</span> }</div>
|
|
3560
3554
|
</div><!-- fragment -->
|
|
3561
3555
|
</div>
|
|
3562
3556
|
</div>
|
|
@@ -3584,22 +3578,22 @@ Friends</h2></td></tr>
|
|
|
3584
3578
|
</div><div class="memdoc">
|
|
3585
3579
|
<p>Function</p>
|
|
3586
3580
|
|
|
3587
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#
|
|
3588
|
-
<div class="fragment"><div class="line"><a name="
|
|
3589
|
-
<div class="line"><a name="
|
|
3590
|
-
<div class="line"><a name="
|
|
3591
|
-
<div class="line"><a name="
|
|
3592
|
-
<div class="line"><a name="
|
|
3593
|
-
<div class="line"><a name="
|
|
3594
|
-
<div class="line"><a name="
|
|
3595
|
-
<div class="line"><a name="
|
|
3596
|
-
<div class="line"><a name="
|
|
3597
|
-
<div class="line"><a name="
|
|
3598
|
-
<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="
|
|
3581
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00294">294</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
|
|
3582
|
+
<div class="fragment"><div class="line"><a name="l00295"></a><span class="lineno"> 295</span> {</div>
|
|
3583
|
+
<div class="line"><a name="l00296"></a><span class="lineno"> 296</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>
|
|
3584
|
+
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  {</div>
|
|
3585
|
+
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>& f : mod.functions())</div>
|
|
3586
|
+
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  {</div>
|
|
3587
|
+
<div class="line"><a name="l00301"></a><span class="lineno"> 301</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>
|
|
3588
|
+
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a20162d2894d6a12ba29410311fba4002">initSVFBasicBlock</a>(&f);</div>
|
|
3589
|
+
<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  </div>
|
|
3590
|
+
<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <span class="keywordflow">if</span> (!<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">SVFUtil::isExtCall</a>(svffun))</div>
|
|
3591
|
+
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  {</div>
|
|
3592
|
+
<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a8ba9092747108e0289014d52465a692d">initDomTree</a>(svffun, &f);</div>
|
|
3593
|
+
<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  }</div>
|
|
3594
|
+
<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  }</div>
|
|
3595
|
+
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  }</div>
|
|
3596
|
+
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span> }</div>
|
|
3603
3597
|
</div><!-- fragment -->
|
|
3604
3598
|
</div>
|
|
3605
3599
|
</div>
|
|
@@ -3666,44 +3660,44 @@ Friends</h2></td></tr>
|
|
|
3666
3660
|
</table>
|
|
3667
3661
|
</div><div class="memdoc">
|
|
3668
3662
|
|
|
3669
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#
|
|
3670
|
-
<div class="fragment"><div class="line"><a name="
|
|
3671
|
-
<div class="line"><a name="
|
|
3672
|
-
<div class="line"><a name="
|
|
3673
|
-
<div class="line"><a name="
|
|
3674
|
-
<div class="line"><a name="
|
|
3675
|
-
<div class="line"><a name="
|
|
3676
|
-
<div class="line"><a name="
|
|
3677
|
-
<div class="line"><a name="
|
|
3678
|
-
<div class="line"><a name="
|
|
3679
|
-
<div class="line"><a name="
|
|
3680
|
-
<div class="line"><a name="
|
|
3681
|
-
<div class="line"><a name="
|
|
3682
|
-
<div class="line"><a name="
|
|
3683
|
-
<div class="line"><a name="
|
|
3684
|
-
<div class="line"><a name="
|
|
3685
|
-
<div class="line"><a name="
|
|
3686
|
-
<div class="line"><a name="
|
|
3687
|
-
<div class="line"><a name="
|
|
3688
|
-
<div class="line"><a name="
|
|
3689
|
-
<div class="line"><a name="
|
|
3690
|
-
<div class="line"><a name="
|
|
3691
|
-
<div class="line"><a name="
|
|
3692
|
-
<div class="line"><a name="
|
|
3693
|
-
<div class="line"><a name="
|
|
3694
|
-
<div class="line"><a name="
|
|
3695
|
-
<div class="line"><a name="
|
|
3696
|
-
<div class="line"><a name="
|
|
3697
|
-
<div class="line"><a name="
|
|
3698
|
-
<div class="line"><a name="
|
|
3699
|
-
<div class="line"><a name="
|
|
3700
|
-
<div class="line"><a name="
|
|
3701
|
-
<div class="line"><a name="
|
|
3702
|
-
<div class="line"><a name="
|
|
3703
|
-
<div class="line"><a name="
|
|
3704
|
-
<div class="line"><a name="
|
|
3705
|
-
<div class="line"><a name="
|
|
3706
|
-
<div class="line"><a name="
|
|
3663
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00563">563</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
|
|
3664
|
+
<div class="fragment"><div class="line"><a name="l00564"></a><span class="lineno"> 564</span> {</div>
|
|
3665
|
+
<div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  <span class="comment">// This function loads the ExtAPI bitcode file as an LLVM module. Note that it is important that</span></div>
|
|
3666
|
+
<div class="line"><a name="l00566"></a><span class="lineno"> 566</span>  <span class="comment">// the same LLVMContext object is used to load this bitcode file as is used by the other modules</span></div>
|
|
3667
|
+
<div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  <span class="comment">// being analysed.</span></div>
|
|
3668
|
+
<div class="line"><a name="l00568"></a><span class="lineno"> 568</span>  <span class="comment">// When the modules are loaded from bitcode files (i.e. passing filenames to files containing</span></div>
|
|
3669
|
+
<div class="line"><a name="l00569"></a><span class="lineno"> 569</span>  <span class="comment">// LLVM IR to `buildSVFModule({file1.bc, file2.bc, ...})) the context is created while loading</span></div>
|
|
3670
|
+
<div class="line"><a name="l00570"></a><span class="lineno"> 570</span>  <span class="comment">// the modules in `loadModules()`, which populates this->modules and this->owned_modules.</span></div>
|
|
3671
|
+
<div class="line"><a name="l00571"></a><span class="lineno"> 571</span>  <span class="comment">// If, however, an LLVM Module object is passed to `buildSVFModule` (e.g. from an LLVM pass),</span></div>
|
|
3672
|
+
<div class="line"><a name="l00572"></a><span class="lineno"> 572</span>  <span class="comment">// the context should be retrieved from the module itself (note that the garbage collection from</span></div>
|
|
3673
|
+
<div class="line"><a name="l00573"></a><span class="lineno"> 573</span>  <span class="comment">// `std::unique_ptr<LLVMContext> LLVMModuleSet::owned_ctx` should be avoided in this case). This</span></div>
|
|
3674
|
+
<div class="line"><a name="l00574"></a><span class="lineno"> 574</span>  <span class="comment">// function populates only this->modules.</span></div>
|
|
3675
|
+
<div class="line"><a name="l00575"></a><span class="lineno"> 575</span>  <span class="comment">// In both cases, fetching the context from the main LLVM module (through `getContext`) works</span></div>
|
|
3676
|
+
<div class="line"><a name="l00576"></a><span class="lineno"> 576</span>  assert(!<a class="code" href="classSVF_1_1LLVMModuleSet.html#ae19e38054c55d5822dfc83a12f12aa60">empty</a>() && <span class="stringliteral">"LLVMModuleSet contains no modules; cannot load ExtAPI module without LLVMContext!"</span>);</div>
|
|
3677
|
+
<div class="line"><a name="l00577"></a><span class="lineno"> 577</span>  </div>
|
|
3678
|
+
<div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  <span class="comment">// Load external API module (extapi.bc)</span></div>
|
|
3679
|
+
<div class="line"><a name="l00579"></a><span class="lineno"> 579</span>  <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1ExtAPI.html#a58a764c27354d5f9b70995d30de65f1d">ExtAPI::getExtAPI</a>()->getExtBcPath().<a class="code" href="classSVF_1_1LLVMModuleSet.html#ae19e38054c55d5822dfc83a12f12aa60">empty</a>())</div>
|
|
3680
|
+
<div class="line"><a name="l00580"></a><span class="lineno"> 580</span>  {</div>
|
|
3681
|
+
<div class="line"><a name="l00581"></a><span class="lineno"> 581</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> extModuleName = <a class="code" href="classSVF_1_1ExtAPI.html#a58a764c27354d5f9b70995d30de65f1d">ExtAPI::getExtAPI</a>()-><a class="code" href="classSVF_1_1ExtAPI.html#a26bc352dbfd1b2fe34106a73f1f6d50c">getExtBcPath</a>();</div>
|
|
3682
|
+
<div class="line"><a name="l00582"></a><span class="lineno"> 582</span>  <span class="keywordflow">if</span> (!<a class="code" href="namespaceSVF_1_1LLVMUtil.html#ad8a8c32a09340f491fffffcb07dd7a41">LLVMUtil::isIRFile</a>(extModuleName))</div>
|
|
3683
|
+
<div class="line"><a name="l00583"></a><span class="lineno"> 583</span>  {</div>
|
|
3684
|
+
<div class="line"><a name="l00584"></a><span class="lineno"> 584</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>
|
|
3685
|
+
<div class="line"><a name="l00585"></a><span class="lineno"> 585</span>  abort();</div>
|
|
3686
|
+
<div class="line"><a name="l00586"></a><span class="lineno"> 586</span>  }</div>
|
|
3687
|
+
<div class="line"><a name="l00587"></a><span class="lineno"> 587</span>  <a class="code" href="namespaceSVF.html#a86863d104a3930b3a806935d92ddbf30">SMDiagnostic</a> Err;</div>
|
|
3688
|
+
<div class="line"><a name="l00588"></a><span class="lineno"> 588</span>  std::unique_ptr<Module> mod = parseIRFile(extModuleName, Err, <a class="code" href="classSVF_1_1LLVMModuleSet.html#ac1a9d20d62066ec4e181fad223669e32">getContext</a>());</div>
|
|
3689
|
+
<div class="line"><a name="l00589"></a><span class="lineno"> 589</span>  <span class="keywordflow">if</span> (mod == <span class="keyword">nullptr</span>)</div>
|
|
3690
|
+
<div class="line"><a name="l00590"></a><span class="lineno"> 590</span>  {</div>
|
|
3691
|
+
<div class="line"><a name="l00591"></a><span class="lineno"> 591</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>
|
|
3692
|
+
<div class="line"><a name="l00592"></a><span class="lineno"> 592</span>  Err.print(<span class="stringliteral">"SVFModuleLoader"</span>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">llvm::errs</a>());</div>
|
|
3693
|
+
<div class="line"><a name="l00593"></a><span class="lineno"> 593</span>  abort();</div>
|
|
3694
|
+
<div class="line"><a name="l00594"></a><span class="lineno"> 594</span>  }</div>
|
|
3695
|
+
<div class="line"><a name="l00595"></a><span class="lineno"> 595</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>
|
|
3696
|
+
<div class="line"><a name="l00596"></a><span class="lineno"> 596</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>
|
|
3697
|
+
<div class="line"><a name="l00597"></a><span class="lineno"> 597</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>
|
|
3698
|
+
<div class="line"><a name="l00598"></a><span class="lineno"> 598</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>
|
|
3699
|
+
<div class="line"><a name="l00599"></a><span class="lineno"> 599</span>  }</div>
|
|
3700
|
+
<div class="line"><a name="l00600"></a><span class="lineno"> 600</span> }</div>
|
|
3707
3701
|
</div><!-- fragment -->
|
|
3708
3702
|
</div>
|
|
3709
3703
|
</div>
|
|
@@ -3731,70 +3725,70 @@ Friends</h2></td></tr>
|
|
|
3731
3725
|
</table>
|
|
3732
3726
|
</div><div class="memdoc">
|
|
3733
3727
|
|
|
3734
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#
|
|
3735
|
-
<div class="fragment"><div class="line"><a name="
|
|
3736
|
-
<div class="line"><a name="
|
|
3737
|
-
<div class="line"><a name="
|
|
3738
|
-
<div class="line"><a name="
|
|
3739
|
-
<div class="line"><a name="
|
|
3740
|
-
<div class="line"><a name="
|
|
3741
|
-
<div class="line"><a name="
|
|
3742
|
-
<div class="line"><a name="
|
|
3743
|
-
<div class="line"><a name="
|
|
3744
|
-
<div class="line"><a name="
|
|
3745
|
-
<div class="line"><a name="
|
|
3746
|
-
<div class="line"><a name="
|
|
3747
|
-
<div class="line"><a name="
|
|
3748
|
-
<div class="line"><a name="
|
|
3749
|
-
<div class="line"><a name="
|
|
3750
|
-
<div class="line"><a name="
|
|
3728
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00498">498</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
|
|
3729
|
+
<div class="fragment"><div class="line"><a name="l00499"></a><span class="lineno"> 499</span> {</div>
|
|
3730
|
+
<div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  </div>
|
|
3731
|
+
<div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  <span class="comment">// We read SVFIR from LLVM IR</span></div>
|
|
3732
|
+
<div class="line"><a name="l00502"></a><span class="lineno"> 502</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>
|
|
3733
|
+
<div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  {</div>
|
|
3734
|
+
<div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  <span class="keywordflow">if</span>(moduleNameVec.empty())</div>
|
|
3735
|
+
<div class="line"><a name="l00505"></a><span class="lineno"> 505</span>  {</div>
|
|
3736
|
+
<div class="line"><a name="l00506"></a><span class="lineno"> 506</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>
|
|
3737
|
+
<div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  exit(0);</div>
|
|
3738
|
+
<div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  }</div>
|
|
3739
|
+
<div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  <span class="comment">//assert(!moduleNameVec.empty() && "no LLVM bc file is found!");</span></div>
|
|
3740
|
+
<div class="line"><a name="l00510"></a><span class="lineno"> 510</span>  }</div>
|
|
3741
|
+
<div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  <span class="comment">// We read SVFIR from a user-defined txt instead of parsing SVFIR from LLVM IR</span></div>
|
|
3742
|
+
<div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  <span class="keywordflow">else</span></div>
|
|
3743
|
+
<div class="line"><a name="l00513"></a><span class="lineno"> 513</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>
|
|
3744
|
+
<div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  </div>
|
|
3745
|
+
<div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  <span class="comment">//</span></div>
|
|
3746
|
+
<div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  <span class="comment">// LLVMContext objects separate global LLVM settings (from which e.g. types are</span></div>
|
|
3747
|
+
<div class="line"><a name="l00517"></a><span class="lineno"> 517</span>  <span class="comment">// derived); multiple LLVMContext objects can coexist and each context can "own"</span></div>
|
|
3748
|
+
<div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  <span class="comment">// multiple modules (modules can only have one context). Mixing contexts can lead</span></div>
|
|
3749
|
+
<div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  <span class="comment">// to unintended inequalities, such as the following:</span></div>
|
|
3751
3750
|
<div class="line"><a name="l00520"></a><span class="lineno"> 520</span>  <span class="comment">//</span></div>
|
|
3752
|
-
<div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  <span class="comment">//
|
|
3753
|
-
<div class="line"><a name="l00522"></a><span class="lineno"> 522</span>  <span class="comment">//
|
|
3754
|
-
<div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  <span class="comment">//
|
|
3755
|
-
<div class="line"><a name="l00524"></a><span class="lineno"> 524</span>  <span class="comment">//
|
|
3756
|
-
<div class="line"><a name="l00525"></a><span class="lineno"> 525</span>  <span class="comment"
|
|
3757
|
-
<div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  <span class="comment">//
|
|
3758
|
-
<div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  <span class="comment">//
|
|
3759
|
-
<div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  <span class="comment">//
|
|
3760
|
-
<div class="line"><a name="l00529"></a><span class="lineno"> 529</span>  <span class="comment">//
|
|
3761
|
-
<div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  <span class="comment">//
|
|
3762
|
-
<div class="line"><a name="l00531"></a><span class="lineno"> 531</span>  <span class="comment"
|
|
3763
|
-
<div class="line"><a name="l00532"></a><span class="lineno"> 532</span>  <span class="comment">//
|
|
3764
|
-
<div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  <span class="comment">//
|
|
3765
|
-
<div class="line"><a name="l00534"></a><span class="lineno"> 534</span>  <span class="comment">//
|
|
3766
|
-
<div class="line"><a name="l00535"></a><span class="lineno"> 535</span>  <span class="comment">//
|
|
3767
|
-
<div class="line"><a name="l00536"></a><span class="lineno"> 536</span>  <span class="comment"
|
|
3768
|
-
<div class="line"><a name="l00537"></a><span class="lineno"> 537</span>  <span class="comment"
|
|
3769
|
-
<div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  <span class="comment">//
|
|
3770
|
-
<div class="line"><a name="l00539"></a><span class="lineno"> 539</span>  <span class="comment">//
|
|
3771
|
-
<div class="line"><a name="l00540"></a><span class="lineno"> 540</span> 
|
|
3772
|
-
<div class="line"><a name="l00541"></a><span class="lineno"> 541</span>  <
|
|
3773
|
-
<div class="line"><a name="l00542"></a><span class="lineno"> 542</span>  <span class="
|
|
3774
|
-
<div class="line"><a name="l00543"></a><span class="lineno"> 543</span> 
|
|
3775
|
-
<div class="line"><a name="l00544"></a><span class="lineno"> 544</span> 
|
|
3776
|
-
<div class="line"><a name="l00545"></a><span class="lineno"> 545</span> 
|
|
3777
|
-
<div class="line"><a name="l00546"></a><span class="lineno"> 546</span> 
|
|
3778
|
-
<div class="line"><a name="l00547"></a><span class="lineno"> 547</span> 
|
|
3779
|
-
<div class="line"><a name="l00548"></a><span class="lineno"> 548</span> 
|
|
3780
|
-
<div class="line"><a name="l00549"></a><span class="lineno"> 549</span> 
|
|
3781
|
-
<div class="line"><a name="l00550"></a><span class="lineno"> 550</span> 
|
|
3782
|
-
<div class="line"><a name="l00551"></a><span class="lineno"> 551</span> 
|
|
3783
|
-
<div class="line"><a name="l00552"></a><span class="lineno"> 552</span> 
|
|
3784
|
-
<div class="line"><a name="l00553"></a><span class="lineno"> 553</span> 
|
|
3785
|
-
<div class="line"><a name="l00554"></a><span class="lineno"> 554</span>  </div>
|
|
3786
|
-
<div class="line"><a name="l00555"></a><span class="lineno"> 555</span> 
|
|
3787
|
-
<div class="line"><a name="l00556"></a><span class="lineno"> 556</span> 
|
|
3788
|
-
<div class="line"><a name="l00557"></a><span class="lineno"> 557</span> 
|
|
3789
|
-
<div class="line"><a name="l00558"></a><span class="lineno"> 558</span> 
|
|
3790
|
-
<div class="line"><a name="l00559"></a><span class="lineno"> 559</span> 
|
|
3791
|
-
<div class="line"><a name="l00560"></a><span class="lineno"> 560</span> 
|
|
3792
|
-
<div class="line"><a name="l00561"></a><span class="lineno"> 561</span> 
|
|
3793
|
-
<div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  }</div>
|
|
3794
|
-
<div class="line"><a name="l00563"></a><span class="lineno"> 563</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#acde6292e719c80f93d3d1c344ab442cd">modules</a>.emplace_back(*mod);</div>
|
|
3795
|
-
<div class="line"><a name="l00564"></a><span class="lineno"> 564</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>
|
|
3796
|
-
<div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  }</div>
|
|
3797
|
-
<div class="line"><a name="l00566"></a><span class="lineno"> 566</span> }</div>
|
|
3751
|
+
<div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  <span class="comment">// ------------------------------------------------------------------</span></div>
|
|
3752
|
+
<div class="line"><a name="l00522"></a><span class="lineno"> 522</span>  <span class="comment">// LLVMContext ctxa,ctxb;</span></div>
|
|
3753
|
+
<div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  <span class="comment">// IntegerType * t1 = IntegerType::get(ctxa,32);</span></div>
|
|
3754
|
+
<div class="line"><a name="l00524"></a><span class="lineno"> 524</span>  <span class="comment">// IntegerType * t2 = IntegerType::get(ctxa,32);</span></div>
|
|
3755
|
+
<div class="line"><a name="l00525"></a><span class="lineno"> 525</span>  <span class="comment">// assert(t1 == t2);</span></div>
|
|
3756
|
+
<div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  <span class="comment">// IntegerType * t3 = IntegerType::get(ctxb,32);</span></div>
|
|
3757
|
+
<div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  <span class="comment">// IntegerType * t4 = IntegerType::get(ctxb,32);</span></div>
|
|
3758
|
+
<div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  <span class="comment">// assert(t3 == t4);</span></div>
|
|
3759
|
+
<div class="line"><a name="l00529"></a><span class="lineno"> 529</span>  <span class="comment">// assert(t1 != t3);</span></div>
|
|
3760
|
+
<div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  <span class="comment">// ------------------------------------------------------------------</span></div>
|
|
3761
|
+
<div class="line"><a name="l00531"></a><span class="lineno"> 531</span>  <span class="comment">//</span></div>
|
|
3762
|
+
<div class="line"><a name="l00532"></a><span class="lineno"> 532</span>  <span class="comment">// When loading bytecode files, SVF will use the same LLVMContext object for all</span></div>
|
|
3763
|
+
<div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  <span class="comment">// modules (i.e. the context owns all loaded modules). This applies to ExtAPI as</span></div>
|
|
3764
|
+
<div class="line"><a name="l00534"></a><span class="lineno"> 534</span>  <span class="comment">// well, which *must* be loaded using the same LLVMContext object. Hence, when</span></div>
|
|
3765
|
+
<div class="line"><a name="l00535"></a><span class="lineno"> 535</span>  <span class="comment">// loading modules from bitcode files, a new LLVMContext is created (using a</span></div>
|
|
3766
|
+
<div class="line"><a name="l00536"></a><span class="lineno"> 536</span>  <span class="comment">// `std::unique_ptr<LLVMContext>` type to ensure automatic garbage collection).</span></div>
|
|
3767
|
+
<div class="line"><a name="l00537"></a><span class="lineno"> 537</span>  <span class="comment">//</span></div>
|
|
3768
|
+
<div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  <span class="comment">// This garbage collection should be avoided when building an SVF module from an LLVM</span></div>
|
|
3769
|
+
<div class="line"><a name="l00539"></a><span class="lineno"> 539</span>  <span class="comment">// module instance; see the comment(s) in `buildSVFModule` and `loadExtAPIModules()`</span></div>
|
|
3770
|
+
<div class="line"><a name="l00540"></a><span class="lineno"> 540</span>  </div>
|
|
3771
|
+
<div class="line"><a name="l00541"></a><span class="lineno"> 541</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a4b678ce8642fcdab0582cd626b7ac7c5">owned_ctx</a> = std::make_unique<LLVMContext>();</div>
|
|
3772
|
+
<div class="line"><a name="l00542"></a><span class="lineno"> 542</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>
|
|
3773
|
+
<div class="line"><a name="l00543"></a><span class="lineno"> 543</span>  {</div>
|
|
3774
|
+
<div class="line"><a name="l00544"></a><span class="lineno"> 544</span>  <span class="keywordflow">if</span> (!<a class="code" href="namespaceSVF_1_1LLVMUtil.html#ad8a8c32a09340f491fffffcb07dd7a41">LLVMUtil::isIRFile</a>(moduleName))</div>
|
|
3775
|
+
<div class="line"><a name="l00545"></a><span class="lineno"> 545</span>  {</div>
|
|
3776
|
+
<div class="line"><a name="l00546"></a><span class="lineno"> 546</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>
|
|
3777
|
+
<div class="line"><a name="l00547"></a><span class="lineno"> 547</span>  abort();</div>
|
|
3778
|
+
<div class="line"><a name="l00548"></a><span class="lineno"> 548</span>  }</div>
|
|
3779
|
+
<div class="line"><a name="l00549"></a><span class="lineno"> 549</span>  </div>
|
|
3780
|
+
<div class="line"><a name="l00550"></a><span class="lineno"> 550</span>  <a class="code" href="namespaceSVF.html#a86863d104a3930b3a806935d92ddbf30">SMDiagnostic</a> Err;</div>
|
|
3781
|
+
<div class="line"><a name="l00551"></a><span class="lineno"> 551</span>  std::unique_ptr<Module> mod = parseIRFile(moduleName, Err, *<a class="code" href="classSVF_1_1LLVMModuleSet.html#a4b678ce8642fcdab0582cd626b7ac7c5">owned_ctx</a>);</div>
|
|
3782
|
+
<div class="line"><a name="l00552"></a><span class="lineno"> 552</span>  <span class="keywordflow">if</span> (mod == <span class="keyword">nullptr</span>)</div>
|
|
3783
|
+
<div class="line"><a name="l00553"></a><span class="lineno"> 553</span>  {</div>
|
|
3784
|
+
<div class="line"><a name="l00554"></a><span class="lineno"> 554</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>
|
|
3785
|
+
<div class="line"><a name="l00555"></a><span class="lineno"> 555</span>  Err.print(<span class="stringliteral">"SVFModuleLoader"</span>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">llvm::errs</a>());</div>
|
|
3786
|
+
<div class="line"><a name="l00556"></a><span class="lineno"> 556</span>  abort();</div>
|
|
3787
|
+
<div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  }</div>
|
|
3788
|
+
<div class="line"><a name="l00558"></a><span class="lineno"> 558</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#acde6292e719c80f93d3d1c344ab442cd">modules</a>.emplace_back(*mod);</div>
|
|
3789
|
+
<div class="line"><a name="l00559"></a><span class="lineno"> 559</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>
|
|
3790
|
+
<div class="line"><a name="l00560"></a><span class="lineno"> 560</span>  }</div>
|
|
3791
|
+
<div class="line"><a name="l00561"></a><span class="lineno"> 561</span> }</div>
|
|
3798
3792
|
</div><!-- fragment -->
|
|
3799
3793
|
</div>
|
|
3800
3794
|
</div>
|
|
@@ -3826,27 +3820,27 @@ Friends</h2></td></tr>
|
|
|
3826
3820
|
<p><a class="el" href="classSVF_1_1BreakConstantGEPs.html">BreakConstantGEPs</a> Pass</p>
|
|
3827
3821
|
<p><a class="el" href="classSVF_1_1MergeFunctionRets.html">MergeFunctionRets</a> Pass</p>
|
|
3828
3822
|
|
|
3829
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#
|
|
3830
|
-
<div class="fragment"><div class="line"><a name="
|
|
3831
|
-
<div class="line"><a name="
|
|
3832
|
-
<div class="line"><a name="
|
|
3833
|
-
<div class="line"><a name="
|
|
3834
|
-
<div class="line"><a name="
|
|
3835
|
-
<div class="line"><a name="
|
|
3836
|
-
<div class="line"><a name="
|
|
3837
|
-
<div class="line"><a name="
|
|
3838
|
-
<div class="line"><a name="
|
|
3839
|
-
<div class="line"><a name="
|
|
3840
|
-
<div class="line"><a name="
|
|
3841
|
-
<div class="line"><a name="
|
|
3842
|
-
<div class="line"><a name="
|
|
3843
|
-
<div class="line"><a name="
|
|
3844
|
-
<div class="line"><a name="
|
|
3845
|
-
<div class="line"><a name="
|
|
3846
|
-
<div class="line"><a name="
|
|
3847
|
-
<div class="line"><a name="
|
|
3848
|
-
<div class="line"><a name="
|
|
3849
|
-
<div class="line"><a name="
|
|
3823
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00453">453</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
|
|
3824
|
+
<div class="fragment"><div class="line"><a name="l00454"></a><span class="lineno"> 454</span> {</div>
|
|
3825
|
+
<div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  std::unique_ptr<BreakConstantGEPs> p1 = std::make_unique<BreakConstantGEPs>();</div>
|
|
3826
|
+
<div class="line"><a name="l00457"></a><span class="lineno"> 457</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>
|
|
3827
|
+
<div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  {</div>
|
|
3828
|
+
<div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  p1->runOnModule(M);</div>
|
|
3829
|
+
<div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  }</div>
|
|
3830
|
+
<div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  </div>
|
|
3831
|
+
<div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  std::unique_ptr<UnifyFunctionExitNodes> p2 =</div>
|
|
3832
|
+
<div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  std::make_unique<UnifyFunctionExitNodes>();</div>
|
|
3833
|
+
<div class="line"><a name="l00465"></a><span class="lineno"> 465</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>
|
|
3834
|
+
<div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  {</div>
|
|
3835
|
+
<div class="line"><a name="l00467"></a><span class="lineno"> 467</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>
|
|
3836
|
+
<div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  {</div>
|
|
3837
|
+
<div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> &fun = *<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>;</div>
|
|
3838
|
+
<div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  <span class="keywordflow">if</span> (fun.isDeclaration())</div>
|
|
3839
|
+
<div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  <span class="keywordflow">continue</span>;</div>
|
|
3840
|
+
<div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  p2->runOnFunction(fun);</div>
|
|
3841
|
+
<div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  }</div>
|
|
3842
|
+
<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  }</div>
|
|
3843
|
+
<div class="line"><a name="l00475"></a><span class="lineno"> 475</span> }</div>
|
|
3850
3844
|
</div><!-- fragment -->
|
|
3851
3845
|
</div>
|
|
3852
3846
|
</div>
|
|
@@ -3874,26 +3868,26 @@ Friends</h2></td></tr>
|
|
|
3874
3868
|
</table>
|
|
3875
3869
|
</div><div class="memdoc">
|
|
3876
3870
|
|
|
3877
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#
|
|
3878
|
-
<div class="fragment"><div class="line"><a name="
|
|
3879
|
-
<div class="line"><a name="
|
|
3880
|
-
<div class="line"><a name="
|
|
3881
|
-
<div class="line"><a name="
|
|
3882
|
-
<div class="line"><a name="
|
|
3883
|
-
<div class="line"><a name="
|
|
3884
|
-
<div class="line"><a name="
|
|
3885
|
-
<div class="line"><a name="
|
|
3886
|
-
<div class="line"><a name="
|
|
3887
|
-
<div class="line"><a name="
|
|
3888
|
-
<div class="line"><a name="
|
|
3889
|
-
<div class="line"><a name="
|
|
3890
|
-
<div class="line"><a name="
|
|
3891
|
-
<div class="line"><a name="
|
|
3892
|
-
<div class="line"><a name="
|
|
3893
|
-
<div class="line"><a name="
|
|
3894
|
-
<div class="line"><a name="
|
|
3895
|
-
<div class="line"><a name="
|
|
3896
|
-
<div class="line"><a name="
|
|
3871
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00477">477</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
|
|
3872
|
+
<div class="fragment"><div class="line"><a name="l00478"></a><span class="lineno"> 478</span> {</div>
|
|
3873
|
+
<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html">LLVMModuleSet</a>* mset = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">getLLVMModuleSet</a>();</div>
|
|
3874
|
+
<div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  mset-><a class="code" href="classSVF_1_1LLVMModuleSet.html#a298966366b02d0a34f409c2c77da3789">loadModules</a>(moduleNameVec);</div>
|
|
3875
|
+
<div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  mset-><a class="code" href="classSVF_1_1LLVMModuleSet.html#a8820d1df9098db6eadf3a9c67e380e55">loadExtAPIModules</a>();</div>
|
|
3876
|
+
<div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  mset-><a class="code" href="classSVF_1_1LLVMModuleSet.html#a8b5f24c873db1f6a0614d1dac48bb4bb">prePassSchedule</a>();</div>
|
|
3877
|
+
<div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  </div>
|
|
3878
|
+
<div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> preProcessSuffix = <span class="stringliteral">".pre.bc"</span>;</div>
|
|
3879
|
+
<div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  <span class="comment">// Get the existing module names, remove old extension, add preProcessSuffix</span></div>
|
|
3880
|
+
<div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  <span class="keywordflow">for</span> (<a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> i = 0; i < moduleNameVec.size(); i++)</div>
|
|
3881
|
+
<div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  {</div>
|
|
3882
|
+
<div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> lastIndex = moduleNameVec[i].find_last_of(<span class="stringliteral">"."</span>);</div>
|
|
3883
|
+
<div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> rawName = moduleNameVec[i].substr(0, lastIndex);</div>
|
|
3884
|
+
<div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  moduleNameVec[i] = (rawName + preProcessSuffix);</div>
|
|
3885
|
+
<div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  }</div>
|
|
3886
|
+
<div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  </div>
|
|
3887
|
+
<div class="line"><a name="l00493"></a><span class="lineno"> 493</span>  mset-><a class="code" href="classSVF_1_1LLVMModuleSet.html#af37b9976b282c875cac7bb1777da635c">dumpModulesToFile</a>(preProcessSuffix);</div>
|
|
3888
|
+
<div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a3204400c52ec55da70418471d5c9bad5">preProcessed</a> = <span class="keyword">true</span>;</div>
|
|
3889
|
+
<div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a2f8e91c075d90be66412a079fe73e936">releaseLLVMModuleSet</a>();</div>
|
|
3890
|
+
<div class="line"><a name="l00496"></a><span class="lineno"> 496</span> }</div>
|
|
3897
3891
|
</div><!-- fragment -->
|
|
3898
3892
|
</div>
|
|
3899
3893
|
</div>
|
|
@@ -3951,24 +3945,24 @@ Friends</h2></td></tr>
|
|
|
3951
3945
|
</table>
|
|
3952
3946
|
</div><div class="memdoc">
|
|
3953
3947
|
|
|
3954
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#
|
|
3955
|
-
<div class="fragment"><div class="line"><a name="
|
|
3956
|
-
<div class="line"><a name="
|
|
3957
|
-
<div class="line"><a name="
|
|
3958
|
-
<div class="line"><a name="
|
|
3959
|
-
<div class="line"><a name="
|
|
3960
|
-
<div class="line"><a name="
|
|
3961
|
-
<div class="line"><a name="
|
|
3962
|
-
<div class="line"><a name="
|
|
3963
|
-
<div class="line"><a name="
|
|
3964
|
-
<div class="line"><a name="
|
|
3965
|
-
<div class="line"><a name="
|
|
3966
|
-
<div class="line"><a name="
|
|
3967
|
-
<div class="line"><a name="
|
|
3968
|
-
<div class="line"><a name="
|
|
3969
|
-
<div class="line"><a name="
|
|
3970
|
-
<div class="line"><a name="
|
|
3971
|
-
<div class="line"><a name="
|
|
3948
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01163">1163</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
|
|
3949
|
+
<div class="fragment"><div class="line"><a name="l01164"></a><span class="lineno"> 1164</span> {</div>
|
|
3950
|
+
<div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>  <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<Function*></a> removedFuncList;</div>
|
|
3951
|
+
<div class="line"><a name="l01166"></a><span class="lineno"> 1166</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>
|
|
3952
|
+
<div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>  {</div>
|
|
3953
|
+
<div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>  <span class="keywordflow">if</span> (mod.getName().str() != <a class="code" href="classSVF_1_1ExtAPI.html#a58a764c27354d5f9b70995d30de65f1d">ExtAPI::getExtAPI</a>()-><a class="code" href="classSVF_1_1ExtAPI.html#a26bc352dbfd1b2fe34106a73f1f6d50c">getExtBcPath</a>())</div>
|
|
3954
|
+
<div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>  <span class="keywordflow">continue</span>;</div>
|
|
3955
|
+
<div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>& func : mod.functions())</div>
|
|
3956
|
+
<div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>  {</div>
|
|
3957
|
+
<div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1LLVMModuleSet.html#abbca1044dc59299224598ec2ba17fe7e">isCalledExtFunction</a>(&func))</div>
|
|
3958
|
+
<div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>  {</div>
|
|
3959
|
+
<div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>  removedFuncList.insert(&func);</div>
|
|
3960
|
+
<div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a7968a00d41166d18acb684052ed1eed8">ExtFun2Annotations</a>.erase(&func);</div>
|
|
3961
|
+
<div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>  }</div>
|
|
3962
|
+
<div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>  }</div>
|
|
3963
|
+
<div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>  }</div>
|
|
3964
|
+
<div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>  <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a484bbbc9713fc4be173943e6bc177fb5">LLVMUtil::removeUnusedFuncsAndAnnotationsAndGlobalVariables</a>(removedFuncList);</div>
|
|
3965
|
+
<div class="line"><a name="l01180"></a><span class="lineno"> 1180</span> }</div>
|
|
3972
3966
|
</div><!-- fragment -->
|
|
3973
3967
|
</div>
|
|
3974
3968
|
</div>
|
|
@@ -4006,31 +4000,33 @@ Friends</h2></td></tr>
|
|
|
4006
4000
|
</table>
|
|
4007
4001
|
</div><div class="memdoc">
|
|
4008
4002
|
|
|
4009
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#
|
|
4010
|
-
<div class="fragment"><div class="line"><a name="
|
|
4011
|
-
<div class="line"><a name="
|
|
4012
|
-
<div class="line"><a name="
|
|
4013
|
-
<div class="line"><a name="
|
|
4014
|
-
<div class="line"><a name="
|
|
4015
|
-
<div class="line"><a name="
|
|
4016
|
-
<div class="line"><a name="
|
|
4017
|
-
<div class="line"><a name="
|
|
4018
|
-
<div class="line"><a name="
|
|
4019
|
-
<div class="line"><a name="
|
|
4020
|
-
<div class="line"><a name="
|
|
4021
|
-
<div class="line"><a name="
|
|
4022
|
-
<div class="line"><a name="
|
|
4023
|
-
<div class="line"><a name="
|
|
4024
|
-
<div class="line"><a name="
|
|
4025
|
-
<div class="line"><a name="
|
|
4026
|
-
<div class="line"><a name="
|
|
4027
|
-
<div class="line"><a name="
|
|
4028
|
-
<div class="line"><a name="
|
|
4029
|
-
<div class="line"><a name="
|
|
4030
|
-
<div class="line"><a name="
|
|
4031
|
-
<div class="line"><a name="
|
|
4032
|
-
<div class="line"><a name="
|
|
4033
|
-
<div class="line"><a name="
|
|
4003
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01208">1208</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
|
|
4004
|
+
<div class="fragment"><div class="line"><a name="l01209"></a><span class="lineno"> 1209</span> {</div>
|
|
4005
|
+
<div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a7f8e61cf5d838d7a2e862bc6955f16be">SVFValue2LLVMValue</a>[svfvalue] = val;</div>
|
|
4006
|
+
<div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>  </div>
|
|
4007
|
+
<div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>  <span class="keywordflow">if</span>(val->hasName())</div>
|
|
4008
|
+
<div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>  svfvalue->setName(val->getName().str());</div>
|
|
4009
|
+
<div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a07c785d931cef3c61e3dab4c615770be">LLVMUtil::isPtrInUncalledFunction</a>(val))</div>
|
|
4010
|
+
<div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>  svfvalue->setPtrInUncalledFunction();</div>
|
|
4011
|
+
<div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a8a77403306e97ab4cb31a56d38bba5be">LLVMUtil::isConstDataOrAggData</a>(val))</div>
|
|
4012
|
+
<div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>  svfvalue->setConstDataOrAggData();</div>
|
|
4013
|
+
<div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>  </div>
|
|
4014
|
+
<div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFGlobalValue.html">SVFGlobalValue</a>* glob = SVFUtil::dyn_cast<SVFGlobalValue>(svfvalue))</div>
|
|
4015
|
+
<div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>  {</div>
|
|
4016
|
+
<div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* llvmVal = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a973ee05189ca5bbe832be00f2be9baa4">LLVMUtil::getGlobalRep</a>(val);</div>
|
|
4017
|
+
<div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>  assert(SVFUtil::isa<GlobalValue>(llvmVal) && <span class="stringliteral">"not a GlobalValue?"</span>);</div>
|
|
4018
|
+
<div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>  glob->setDefGlobalForMultipleModule(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a3cbba2eb702a3481478b2590dfffa352">getSVFGlobalValue</a>(SVFUtil::cast<GlobalValue>(llvmVal)));</div>
|
|
4019
|
+
<div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>  }</div>
|
|
4020
|
+
<div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svffun = SVFUtil::dyn_cast<SVFFunction>(svfvalue))</div>
|
|
4021
|
+
<div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>  {</div>
|
|
4022
|
+
<div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func = SVFUtil::cast<Function>(val);</div>
|
|
4023
|
+
<div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>  svffun->setIsNotRet(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a651b6a1cf3665277d2241220bb145aed">LLVMUtil::functionDoesNotRet</a>(func));</div>
|
|
4024
|
+
<div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>  svffun->setIsUncalledFunction(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2c61d741afbcfa853b505cd391f29f9b">LLVMUtil::isUncalledFunction</a>(func));</div>
|
|
4025
|
+
<div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>  svffun->setDefFunForMultipleModule(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">getSVFFunction</a>(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a21636200f17c62034720c4287aa818b5">LLVMUtil::getDefFunForMultipleModule</a>(func)));</div>
|
|
4026
|
+
<div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>  }</div>
|
|
4027
|
+
<div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>  </div>
|
|
4028
|
+
<div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>  svfvalue->setSourceLoc(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a8e4add30bd0ce00d3f2aa2e31c64fef8">LLVMUtil::getSourceLoc</a>(val));</div>
|
|
4029
|
+
<div class="line"><a name="l01234"></a><span class="lineno"> 1234</span> }</div>
|
|
4034
4030
|
</div><!-- fragment -->
|
|
4035
4031
|
</div>
|
|
4036
4032
|
</div>
|
|
@@ -4612,7 +4608,7 @@ Friends</h2></td></tr>
|
|
|
4612
4608
|
<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#l00094">LLVMModule.h:94</a></div></div>
|
|
4613
4609
|
<div class="ttc" id="anamespaceSVF_1_1cppUtil_html_a374e7c0b161a77f4d693e13b99ed6283"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a374e7c0b161a77f4d693e13b99ed6283">SVF::cppUtil::getVCallVtblPtr</a></div><div class="ttdeci">const Value * getVCallVtblPtr(const CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#l00472">CppUtil.cpp:472</a></div></div>
|
|
4614
4610
|
<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#l00131">LLVMModule.h:131</a></div></div>
|
|
4615
|
-
<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#
|
|
4611
|
+
<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#l01121">LLVMModule.cpp:1121</a></div></div>
|
|
4616
4612
|
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a8e4add30bd0ce00d3f2aa2e31c64fef8"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a8e4add30bd0ce00d3f2aa2e31c64fef8">SVF::LLVMUtil::getSourceLoc</a></div><div class="ttdeci">const std::string getSourceLoc(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00678">LLVMUtil.cpp:678</a></div></div>
|
|
4617
4613
|
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a484bbbc9713fc4be173943e6bc177fb5"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a484bbbc9713fc4be173943e6bc177fb5">SVF::LLVMUtil::removeUnusedFuncsAndAnnotationsAndGlobalVariables</a></div><div class="ttdeci">void removeUnusedFuncsAndAnnotationsAndGlobalVariables(Set< Function * > removedFuncList)</div><div class="ttdoc">Delete unused functions, annotations and global variables in extapi.bc.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00564">LLVMUtil.cpp:564</a></div></div>
|
|
4618
4614
|
<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#l00071">LLVMModule.cpp:71</a></div></div>
|
|
@@ -4623,7 +4619,7 @@ Friends</h2></td></tr>
|
|
|
4623
4619
|
<div class="ttc" id="anamespaceSVF_html_aecbb42b8e9d17fa0189c50dda9fd5fdd"><div class="ttname"><a href="namespaceSVF.html#aecbb42b8e9d17fa0189c50dda9fd5fdd">SVF::DominatorTree</a></div><div class="ttdeci">llvm::DominatorTree DominatorTree</div><div class="ttdoc">LLVM Dominators.</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00133">BasicTypes.h:133</a></div></div>
|
|
4624
4620
|
<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>
|
|
4625
4621
|
<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#l00086">LLVMModule.h:86</a></div></div>
|
|
4626
|
-
<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#
|
|
4622
|
+
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_aab7b08db9252ef7e21e54d019f44b073"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#aab7b08db9252ef7e21e54d019f44b073">SVF::LLVMModuleSet::addSVFTypeInfo</a></div><div class="ttdeci">SVFType * addSVFTypeInfo(const Type *t)</div><div class="ttdoc">Create SVFTypes.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01418">LLVMModule.cpp:1418</a></div></div>
|
|
4627
4623
|
<div class="ttc" id="aclassSVF_1_1SVFBasicBlock_html_ac1b15d8f9c2499add8dbc889ae5cab65"><div class="ttname"><a href="classSVF_1_1SVFBasicBlock.html#ac1b15d8f9c2499add8dbc889ae5cab65">SVF::SVFBasicBlock::addInstruction</a></div><div class="ttdeci">void addInstruction(const SVFInstruction *inst)</div><div class="ttdoc">Function where this BasicBlock is.</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00546">SVFValue.h:546</a></div></div>
|
|
4628
4624
|
<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#l00136">LLVMModule.h:136</a></div></div>
|
|
4629
4625
|
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_af4c9c5d445107b1816a4be93852ba612"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#af4c9c5d445107b1816a4be93852ba612">SVF::LLVMUtil::restoreFuncName</a></div><div class="ttdeci">std::string restoreFuncName(std::string funcName)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00612">LLVMUtil.cpp:612</a></div></div>
|
|
@@ -4634,7 +4630,7 @@ Friends</h2></td></tr>
|
|
|
4634
4630
|
<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#l00175">LLVMModule.h:175</a></div></div>
|
|
4635
4631
|
<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#l00098">BasicTypes.h:98</a></div></div>
|
|
4636
4632
|
<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#l00146">LLVMModule.h:146</a></div></div>
|
|
4637
|
-
<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#
|
|
4633
|
+
<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#l00899">LLVMModule.cpp:899</a></div></div>
|
|
4638
4634
|
<div class="ttc" id="anamespaceSVF_1_1cppUtil_html_a120e9fc3aa1dc2db3e0c2ea9a85b38b6"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a120e9fc3aa1dc2db3e0c2ea9a85b38b6">SVF::cppUtil::getFunNameOfVCallSite</a></div><div class="ttdeci">std::string getFunNameOfVCallSite(const CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#l00570">CppUtil.cpp:570</a></div></div>
|
|
4639
4635
|
<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#l00717">SVFValue.h:717</a></div></div>
|
|
4640
4636
|
<div class="ttc" id="aclassSVF_1_1SVFType_html_a6474965ec2cbc5173e313449c4868f81"><div class="ttname"><a href="classSVF_1_1SVFType.html#a6474965ec2cbc5173e313449c4868f81">SVF::SVFType::svfPtrTy</a></div><div class="ttdeci">static SVFType * svfPtrTy</div><div class="ttdoc">ptr type</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00192">SVFType.h:192</a></div></div>
|
|
@@ -4646,7 +4642,7 @@ Friends</h2></td></tr>
|
|
|
4646
4642
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a6e670254385050b9a5e612f881b07b9c"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a6e670254385050b9a5e612f881b07b9c">SVF::LLVMModuleSet::getDefinition</a></div><div class="ttdeci">const Function * getDefinition(const Function *fun) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00283">LLVMModule.h:283</a></div></div>
|
|
4647
4643
|
<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#l00086">BasicTypes.h:86</a></div></div>
|
|
4648
4644
|
<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#l00080">LLVMModule.h:80</a></div></div>
|
|
4649
|
-
<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#
|
|
4645
|
+
<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#l01183">LLVMModule.cpp:1183</a></div></div>
|
|
4650
4646
|
<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#l00226">LLVMModule.h:226</a></div></div>
|
|
4651
4647
|
<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#l00247">SVFValue.h:247</a></div></div>
|
|
4652
4648
|
<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#l00097">BasicTypes.h:97</a></div></div>
|
|
@@ -4659,17 +4655,17 @@ Friends</h2></td></tr>
|
|
|
4659
4655
|
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a21636200f17c62034720c4287aa818b5"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a21636200f17c62034720c4287aa818b5">SVF::LLVMUtil::getDefFunForMultipleModule</a></div><div class="ttdeci">const Function * getDefFunForMultipleModule(const Function *fun)</div><div class="ttdoc">Get the definition of a function across multiple modules.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00039">LLVMUtil.cpp:39</a></div></div>
|
|
4660
4656
|
<div class="ttc" id="aSVFType_8h_html_a1aeda3370621dc00e9a0fe8e7aabc736"><div class="ttname"><a href="SVFType_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a></div><div class="ttdeci">#define TIMEINTERVAL</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00512">SVFType.h:512</a></div></div>
|
|
4661
4657
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a3eaadb33cd21d0bd868526b5ddb051d9"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a3eaadb33cd21d0bd868526b5ddb051d9">SVF::LLVMModuleSet::addBasicBlockMap</a></div><div class="ttdeci">void addBasicBlockMap(const BasicBlock *bb, SVFBasicBlock *svfBB)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00160">LLVMModule.h:160</a></div></div>
|
|
4662
|
-
<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#
|
|
4658
|
+
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a0ef17c1d5e6a95c597d2334ea577a965"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a0ef17c1d5e6a95c597d2334ea577a965">SVF::LLVMModuleSet::getSVFOtherValue</a></div><div class="ttdeci">SVFOtherValue * getSVFOtherValue(const Value *ov)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01317">LLVMModule.cpp:1317</a></div></div>
|
|
4663
4659
|
<div class="ttc" id="aclassSVF_1_1StInfo_html_a518c82138fcadc6634980566c1c0f762"><div class="ttname"><a href="classSVF_1_1StInfo.html#a518c82138fcadc6634980566c1c0f762">SVF::StInfo::getNumOfFlattenElements</a></div><div class="ttdeci">u32_t getNumOfFlattenElements() const</div><div class="ttdoc">Return number of elements after flattening (including array elements)</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00139">SVFType.h:139</a></div></div>
|
|
4664
4660
|
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a2c61d741afbcfa853b505cd391f29f9b"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a2c61d741afbcfa853b505cd391f29f9b">SVF::LLVMUtil::isUncalledFunction</a></div><div class="ttdeci">bool isUncalledFunction(const Function *fun)</div><div class="ttdoc">whether this is a function without any possible caller?</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00169">LLVMUtil.cpp:169</a></div></div>
|
|
4665
4661
|
<div class="ttc" id="aclassSVF_1_1SVFConstantData_html"><div class="ttname"><a href="classSVF_1_1SVFConstantData.html">SVF::SVFConstantData</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00937">SVFValue.h:937</a></div></div>
|
|
4666
|
-
<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#
|
|
4662
|
+
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a5f0bd932f3129a9c565f3a09711f7b99"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">SVF::LLVMModuleSet::getSVFType</a></div><div class="ttdeci">SVFType * getSVFType(const Type *T)</div><div class="ttdoc">Get or create SVFType and typeinfo.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01373">LLVMModule.cpp:1373</a></div></div>
|
|
4667
4663
|
<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>
|
|
4668
4664
|
<div class="ttc" id="aclassSVF_1_1SVFMetadataAsValue_html"><div class="ttname"><a href="classSVF_1_1SVFMetadataAsValue.html">SVF::SVFMetadataAsValue</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l01091">SVFValue.h:1091</a></div></div>
|
|
4669
4665
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a4b94c96898dbbc71bc1cee04786cf3dc"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a4b94c96898dbbc71bc1cee04786cf3dc">SVF::LLVMModuleSet::LLVMConst2SVFConst</a></div><div class="ttdeci">LLVMConst2SVFConstMap LLVMConst2SVFConst</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00090">LLVMModule.h:90</a></div></div>
|
|
4670
4666
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a2f8e91c075d90be66412a079fe73e936"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a2f8e91c075d90be66412a079fe73e936">SVF::LLVMModuleSet::releaseLLVMModuleSet</a></div><div class="ttdeci">static void releaseLLVMModuleSet()</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00112">LLVMModule.h:112</a></div></div>
|
|
4671
4667
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a50fc24901350df9db890ba16a9b87e33"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">SVF::LLVMModuleSet::getSVFFunction</a></div><div class="ttdeci">SVFFunction * getSVFFunction(const Function *fun) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00205">LLVMModule.h:205</a></div></div>
|
|
4672
|
-
<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#
|
|
4668
|
+
<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#l01543">LLVMModule.cpp:1543</a></div></div>
|
|
4673
4669
|
<div class="ttc" id="anamespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdoc">LLVM Basic classes.</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00082">BasicTypes.h:82</a></div></div>
|
|
4674
4670
|
<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>
|
|
4675
4671
|
<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#l00141">LLVMModule.h:141</a></div></div>
|
|
@@ -4694,7 +4690,7 @@ Friends</h2></td></tr>
|
|
|
4694
4690
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_ab0c0f321b6bfbfab2e4ff06d81920ab9"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">SVF::LLVMModuleSet::getSVFBasicBlock</a></div><div class="ttdeci">SVFBasicBlock * getSVFBasicBlock(const BasicBlock *bb) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00212">LLVMModule.h:212</a></div></div>
|
|
4695
4691
|
<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#l00087">LLVMModule.h:87</a></div></div>
|
|
4696
4692
|
<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#l00130">BasicTypes.h:130</a></div></div>
|
|
4697
|
-
<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#
|
|
4693
|
+
<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#l00602">LLVMModule.cpp:602</a></div></div>
|
|
4698
4694
|
<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#l00093">SVFStat.h:93</a></div></div>
|
|
4699
4695
|
<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#l00128">BasicTypes.h:128</a></div></div>
|
|
4700
4696
|
<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="ttdef"><b>Definition:</b> <a href="IntervalValue_8h_source.html#l00633">IntervalValue.h:633</a></div></div>
|
|
@@ -4716,7 +4712,7 @@ Friends</h2></td></tr>
|
|
|
4716
4712
|
<div class="ttc" id="aclassSVF_1_1SVFLoopAndDomInfo_html_ac285502846c993f149b6bcc3e04f767e"><div class="ttname"><a href="classSVF_1_1SVFLoopAndDomInfo.html#ac285502846c993f149b6bcc3e04f767e">SVF::SVFLoopAndDomInfo::getBBPDomLevel</a></div><div class="ttdeci">const Map< const SVFBasicBlock *, u32_t > & getBBPDomLevel() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00118">SVFValue.h:118</a></div></div>
|
|
4717
4713
|
<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#l00069">LLVMModule.cpp:69</a></div></div>
|
|
4718
4714
|
<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#l00088">LLVMModule.h:88</a></div></div>
|
|
4719
|
-
<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#
|
|
4715
|
+
<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#l00563">LLVMModule.cpp:563</a></div></div>
|
|
4720
4716
|
<div class="ttc" id="anamespaceSVF_1_1cppUtil_html_a279fa78f7a2e45b458a0358de9c061b8"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a279fa78f7a2e45b458a0358de9c061b8">SVF::cppUtil::getVCallIdx</a></div><div class="ttdeci">s32_t getVCallIdx(const CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#l00581">CppUtil.cpp:581</a></div></div>
|
|
4721
4717
|
<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#l00156">SVFType.h:156</a></div></div>
|
|
4722
4718
|
<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>
|
|
@@ -4725,7 +4721,7 @@ Friends</h2></td></tr>
|
|
|
4725
4721
|
<div class="ttc" id="aclassSVF_1_1SVFStructType_html"><div class="ttname"><a href="classSVF_1_1SVFStructType.html">SVF::SVFStructType</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00344">SVFType.h:344</a></div></div>
|
|
4726
4722
|
<div class="ttc" id="aclassSVF_1_1SVFConstant_html"><div class="ttname"><a href="classSVF_1_1SVFConstant.html">SVF::SVFConstant</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00833">SVFValue.h:833</a></div></div>
|
|
4727
4723
|
<div class="ttc" id="anamespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00087">BasicTypes.h:87</a></div></div>
|
|
4728
|
-
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_aeaf96b0a6ee4b321a173374137ebe5e4"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#aeaf96b0a6ee4b321a173374137ebe5e4">SVF::LLVMModuleSet::removeUnusedExtAPIs</a></div><div class="ttdeci">void removeUnusedExtAPIs()</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#
|
|
4724
|
+
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_aeaf96b0a6ee4b321a173374137ebe5e4"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#aeaf96b0a6ee4b321a173374137ebe5e4">SVF::LLVMModuleSet::removeUnusedExtAPIs</a></div><div class="ttdeci">void removeUnusedExtAPIs()</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01163">LLVMModule.cpp:1163</a></div></div>
|
|
4729
4725
|
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a8a77403306e97ab4cb31a56d38bba5be"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a8a77403306e97ab4cb31a56d38bba5be">SVF::LLVMUtil::isConstDataOrAggData</a></div><div class="ttdeci">bool isConstDataOrAggData(const Value *val)</div><div class="ttdoc">Return true if the value refers to constant data, e.g., i32 0.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00342">LLVMUtil.h:342</a></div></div>
|
|
4730
4726
|
<div class="ttc" id="anamespaceSVF_html_a2bf58575ac7d068e0f1a4cf953b9e6cb"><div class="ttname"><a href="namespaceSVF.html#a2bf58575ac7d068e0f1a4cf953b9e6cb">SVF::StructType</a></div><div class="ttdeci">llvm::StructType StructType</div><div class="ttdoc">LLVM types.</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00094">BasicTypes.h:94</a></div></div>
|
|
4731
4727
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_afcde3a8e7d5eff76d017bd5c4b84cd1c"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#afcde3a8e7d5eff76d017bd5c4b84cd1c">SVF::LLVMModuleSet::getTypeInference</a></div><div class="ttdeci">ObjTypeInference * getTypeInference()</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00088">LLVMModule.cpp:88</a></div></div>
|
|
@@ -4738,12 +4734,12 @@ Friends</h2></td></tr>
|
|
|
4738
4734
|
<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#l00329">LLVMModule.h:329</a></div></div>
|
|
4739
4735
|
<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#l00966">SVFValue.h:966</a></div></div>
|
|
4740
4736
|
<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#l01000">SVFValue.h:1000</a></div></div>
|
|
4741
|
-
<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#
|
|
4737
|
+
<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#l00498">LLVMModule.cpp:498</a></div></div>
|
|
4742
4738
|
<div class="ttc" id="aclassSVF_1_1SVFFunction_html_abd458bb5a035d3f7db32fac5f01b57f3"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#abd458bb5a035d3f7db32fac5f01b57f3">SVF::SVFFunction::setExitBlock</a></div><div class="ttdeci">void setExitBlock(SVFBasicBlock *bb)</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8cpp_source.html#l00200">SVFValue.cpp:200</a></div></div>
|
|
4743
4739
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a32558da64f03452c502ec57d1e106427"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a32558da64f03452c502ec57d1e106427">SVF::LLVMModuleSet::hasDefinition</a></div><div class="ttdeci">bool hasDefinition(const Function *fun) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00276">LLVMModule.h:276</a></div></div>
|
|
4744
4740
|
<div class="ttc" id="aclassSVF_1_1SVFGlobalValue_html"><div class="ttname"><a href="classSVF_1_1SVFGlobalValue.html">SVF::SVFGlobalValue</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00856">SVFValue.h:856</a></div></div>
|
|
4745
4741
|
<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>
|
|
4746
|
-
<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#
|
|
4742
|
+
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a52853bd34a394882c6fd0fc73739c9f2"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a52853bd34a394882c6fd0fc73739c9f2">SVF::LLVMModuleSet::collectSimpleTypeInfo</a></div><div class="ttdeci">StInfo * collectSimpleTypeInfo(const Type *T)</div><div class="ttdoc">Collect simple type (non-aggregate) info.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01600">LLVMModule.cpp:1600</a></div></div>
|
|
4747
4743
|
<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#l00072">LLVMModule.h:72</a></div></div>
|
|
4748
4744
|
<div class="ttc" id="aclassSVF_1_1SVFBasicBlock_html_a66f51cd41e93ad055c4a0c2874e73fae"><div class="ttname"><a href="classSVF_1_1SVFBasicBlock.html#a66f51cd41e93ad055c4a0c2874e73fae">SVF::SVFBasicBlock::getSuccessors</a></div><div class="ttdeci">const std::vector< const SVFBasicBlock * > & getSuccessors() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00612">SVFValue.h:612</a></div></div>
|
|
4749
4745
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a43832e93a42ae43d44b0cc160981678f"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a43832e93a42ae43d44b0cc160981678f">SVF::LLVMModuleSet::svfModule</a></div><div class="ttdeci">SVFModule * svfModule</div><div class="ttdoc">Borrowed from singleton SVFModule::svfModule.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00070">LLVMModule.h:70</a></div></div>
|
|
@@ -4751,9 +4747,9 @@ Friends</h2></td></tr>
|
|
|
4751
4747
|
<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#l00132">SVFType.h:132</a></div></div>
|
|
4752
4748
|
<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#l00080">SymbolTableInfo.cpp:80</a></div></div>
|
|
4753
4749
|
<div class="ttc" id="aclassSVF_1_1ExtAPI_html_a58a764c27354d5f9b70995d30de65f1d"><div class="ttname"><a href="classSVF_1_1ExtAPI.html#a58a764c27354d5f9b70995d30de65f1d">SVF::ExtAPI::getExtAPI</a></div><div class="ttdeci">static ExtAPI * getExtAPI()</div><div class="ttdef"><b>Definition:</b> <a href="ExtAPI_8cpp_source.html#l00042">ExtAPI.cpp:42</a></div></div>
|
|
4754
|
-
<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#
|
|
4750
|
+
<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#l00691">LLVMModule.cpp:691</a></div></div>
|
|
4755
4751
|
<div class="ttc" id="anamespaceSVF_1_1cppUtil_html_aab1dce633f9a03796c208b6fba2bd2b4"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#aab1dce633f9a03796c208b6fba2bd2b4">SVF::cppUtil::isVirtualCallSite</a></div><div class="ttdeci">bool isVirtualCallSite(const CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#l00287">CppUtil.cpp:287</a></div></div>
|
|
4756
|
-
<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#
|
|
4752
|
+
<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#l00380">LLVMModule.cpp:380</a></div></div>
|
|
4757
4753
|
<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#l00084">BasicTypes.h:84</a></div></div>
|
|
4758
4754
|
<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#l00090">BasicTypes.h:90</a></div></div>
|
|
4759
4755
|
<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#l00350">LLVMModule.h:350</a></div></div>
|
|
@@ -4762,7 +4758,7 @@ Friends</h2></td></tr>
|
|
|
4762
4758
|
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a428bd75b33fab60988d8758090712f29"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a428bd75b33fab60988d8758090712f29">SVF::LLVMUtil::isArgOfUncalledFunction</a></div><div class="ttdeci">bool isArgOfUncalledFunction(const Value *val)</div><div class="ttdoc">Return true if the argument in a function does not have a caller.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00154">LLVMUtil.h:154</a></div></div>
|
|
4763
4759
|
<div class="ttc" id="aclassSVF_1_1SVFCallInst_html_ac979b49b449b97b2a23f195cb107ec77"><div class="ttname"><a href="classSVF_1_1SVFCallInst.html#ac979b49b449b97b2a23f195cb107ec77">SVF::SVFCallInst::addArgument</a></div><div class="ttdeci">void addArgument(const SVFValue *a)</div><div class="ttdoc">attributes to be set only through Module builders e.g., LLVMModule</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00713">SVFValue.h:713</a></div></div>
|
|
4764
4760
|
<div class="ttc" id="anamespaceSVF_html_ab34383ee87cd45eb485fa29db482ffef"><div class="ttname"><a href="namespaceSVF.html#ab34383ee87cd45eb485fa29db482ffef">SVF::PostDominatorTree</a></div><div class="ttdeci">llvm::PostDominatorTree PostDominatorTree</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00136">BasicTypes.h:136</a></div></div>
|
|
4765
|
-
<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#
|
|
4761
|
+
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_aa8de934358332505d4805db137d8ec29"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#aa8de934358332505d4805db137d8ec29">SVF::LLVMModuleSet::collectArrayInfo</a></div><div class="ttdeci">StInfo * collectArrayInfo(const ArrayType *T)</div><div class="ttdoc">Collect the array info.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01480">LLVMModule.cpp:1480</a></div></div>
|
|
4766
4762
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a4ca8c4678a7fefe26372fc1f4b2880fd"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a4ca8c4678a7fefe26372fc1f4b2880fd">SVF::LLVMModuleSet::createSVFDataStructure</a></div><div class="ttdeci">void createSVFDataStructure()</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00166">LLVMModule.cpp:166</a></div></div>
|
|
4767
4763
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a7f8e61cf5d838d7a2e862bc6955f16be"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a7f8e61cf5d838d7a2e862bc6955f16be">SVF::LLVMModuleSet::SVFValue2LLVMValue</a></div><div class="ttdeci">SVFValue2LLVMValueMap SVFValue2LLVMValue</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00092">LLVMModule.h:92</a></div></div>
|
|
4768
4764
|
<div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_a72502f7f536418621485e90ab98c2016"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a72502f7f536418621485e90ab98c2016">SVF::SVFUtil::move</a></div><div class="ttdeci">constexpr std::remove_reference< T >::type && move(T &&t) noexcept</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00621">SVFUtil.h:621</a></div></div>
|
|
@@ -4781,14 +4777,14 @@ Friends</h2></td></tr>
|
|
|
4781
4777
|
<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="GeneralType_8h_source.html#l00105">GeneralType.h:105</a></div></div>
|
|
4782
4778
|
<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#l00201">Options.h:201</a></div></div>
|
|
4783
4779
|
<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#l00155">LLVMModule.h:155</a></div></div>
|
|
4784
|
-
<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#
|
|
4780
|
+
<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#l00294">LLVMModule.cpp:294</a></div></div>
|
|
4785
4781
|
<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#l00276">BasicTypes.h:276</a></div></div>
|
|
4786
4782
|
<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#l00044">SymbolTableBuilder.h:44</a></div></div>
|
|
4787
|
-
<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#
|
|
4783
|
+
<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#l01236">LLVMModule.cpp:1236</a></div></div>
|
|
4788
4784
|
<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>
|
|
4789
4785
|
<div class="ttc" id="aclassSVF_1_1SVFIntegerType_html"><div class="ttname"><a href="classSVF_1_1SVFIntegerType.html">SVF::SVFIntegerType</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00291">SVFType.h:291</a></div></div>
|
|
4790
4786
|
<div class="ttc" id="aclassSVF_1_1SVFStat_html_ae89293bc063bdc74a988e9c37c70321e"><div class="ttname"><a href="classSVF_1_1SVFStat.html#ae89293bc063bdc74a988e9c37c70321e">SVF::SVFStat::timeOfBuildingSymbolTable</a></div><div class="ttdeci">static double timeOfBuildingSymbolTable</div><div class="ttdef"><b>Definition:</b> <a href="SVFStat_8h_source.html#l00094">SVFStat.h:94</a></div></div>
|
|
4791
|
-
<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#
|
|
4787
|
+
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a74256f36f0fdc242df9729906c34efbc"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a74256f36f0fdc242df9729906c34efbc">SVF::LLVMModuleSet::getOtherSVFConstant</a></div><div class="ttdeci">SVFConstant * getOtherSVFConstant(const Constant *oc)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01301">LLVMModule.cpp:1301</a></div></div>
|
|
4792
4788
|
<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>
|
|
4793
4789
|
<div class="ttc" id="aclassSVF_1_1SVFFunction_html_a0d5031bd11b6372803082111ec2cb4f6"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#a0d5031bd11b6372803082111ec2cb4f6">SVF::SVFFunction::addBasicBlock</a></div><div class="ttdeci">void addBasicBlock(const SVFBasicBlock *bb)</div><div class="ttdoc">a 'single' basic block having no successors and containing return instruction in a function</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00327">SVFValue.h:327</a></div></div>
|
|
4794
4790
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_ae74f307b6f96950ceedb2c375ef1c3a3"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">SVF::LLVMModuleSet::getSVFInstruction</a></div><div class="ttdeci">SVFInstruction * getSVFInstruction(const Instruction *inst) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00219">LLVMModule.h:219</a></div></div>
|
|
@@ -4804,17 +4800,17 @@ Friends</h2></td></tr>
|
|
|
4804
4800
|
<div class="ttc" id="anamespaceSVF_html_a911dbaab38cb42deb9c195c7f687853d"><div class="ttname"><a href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">SVF::ConstantExpr</a></div><div class="ttdeci">llvm::ConstantExpr ConstantExpr</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00120">BasicTypes.h:120</a></div></div>
|
|
4805
4801
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a4b678ce8642fcdab0582cd626b7ac7c5"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a4b678ce8642fcdab0582cd626b7ac7c5">SVF::LLVMModuleSet::owned_ctx</a></div><div class="ttdeci">std::unique_ptr< LLVMContext > owned_ctx</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00071">LLVMModule.h:71</a></div></div>
|
|
4806
4802
|
<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#l00108">SVFValue.h:108</a></div></div>
|
|
4807
|
-
<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#
|
|
4803
|
+
<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#l01208">LLVMModule.cpp:1208</a></div></div>
|
|
4808
4804
|
<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>
|
|
4809
|
-
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_afb06c18fcf916e84dfacb139f644aa48"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#afb06c18fcf916e84dfacb139f644aa48">SVF::LLVMModuleSet::collectExtFunAnnotations</a></div><div class="ttdeci">void collectExtFunAnnotations(const Module *mod)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#
|
|
4805
|
+
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_afb06c18fcf916e84dfacb139f644aa48"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#afb06c18fcf916e84dfacb139f644aa48">SVF::LLVMModuleSet::collectExtFunAnnotations</a></div><div class="ttdeci">void collectExtFunAnnotations(const Module *mod)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00785">LLVMModule.cpp:785</a></div></div>
|
|
4810
4806
|
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a4c94a6c02fb89c1a1604c87414956acd"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a4c94a6c02fb89c1a1604c87414956acd">SVF::LLVMUtil::getPrevInsts</a></div><div class="ttdeci">void getPrevInsts(const Instruction *curInst, std::vector< const SVFInstruction * > &instList)</div><div class="ttdoc">Get the previous instructions following control flow.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00331">LLVMUtil.cpp:331</a></div></div>
|
|
4811
4807
|
<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>
|
|
4812
4808
|
<div class="ttc" id="aclassSVF_1_1SVFFunction_html_a374cbaa780f540cb4b4ccac562a82632"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#a374cbaa780f540cb4b4ccac562a82632">SVF::SVFFunction::exitBlock</a></div><div class="ttdeci">SVFBasicBlock * exitBlock</div><div class="ttdoc">annotations of this function</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00323">SVFValue.h:323</a></div></div>
|
|
4813
|
-
<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#
|
|
4814
|
-
<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#
|
|
4809
|
+
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_afdd77bc1fca91f70b2ec362f1dacd392"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#afdd77bc1fca91f70b2ec362f1dacd392">SVF::LLVMModuleSet::getSVFValue</a></div><div class="ttdeci">SVFValue * getSVFValue(const Value *value)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01336">LLVMModule.cpp:1336</a></div></div>
|
|
4810
|
+
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a1f6cc76c996a0577b20b8cedd83fff92"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a1f6cc76c996a0577b20b8cedd83fff92">SVF::LLVMModuleSet::collectTypeInfo</a></div><div class="ttdeci">StInfo * collectTypeInfo(const Type *ty)</div><div class="ttdoc">Collect a type info.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01386">LLVMModule.cpp:1386</a></div></div>
|
|
4815
4811
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a067661e0049314779a44c9600420820f"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">SVF::LLVMModuleSet::LLVMType2SVFType</a></div><div class="ttdeci">LLVMType2SVFTypeMap LLVMType2SVFType</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00093">LLVMModule.h:93</a></div></div>
|
|
4816
4812
|
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a4638a12f5481dff947b59cf8353e619b"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a4638a12f5481dff947b59cf8353e619b">SVF::LLVMUtil::isIntrinsicFun</a></div><div class="ttdeci">bool isIntrinsicFun(const Function *func)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00217">LLVMUtil.cpp:217</a></div></div>
|
|
4817
|
-
<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#
|
|
4813
|
+
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a8b5f24c873db1f6a0614d1dac48bb4bb"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a8b5f24c873db1f6a0614d1dac48bb4bb">SVF::LLVMModuleSet::prePassSchedule</a></div><div class="ttdeci">void prePassSchedule()</div><div class="ttdoc">Invoke llvm passes to modify module.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00453">LLVMModule.cpp:453</a></div></div>
|
|
4818
4814
|
<div class="ttc" id="aclassSVF_1_1ExtAPI_html_a26bc352dbfd1b2fe34106a73f1f6d50c"><div class="ttname"><a href="classSVF_1_1ExtAPI.html#a26bc352dbfd1b2fe34106a73f1f6d50c">SVF::ExtAPI::getExtBcPath</a></div><div class="ttdeci">std::string getExtBcPath()</div><div class="ttdef"><b>Definition:</b> <a href="ExtAPI_8cpp_source.html#l00127">ExtAPI.cpp:127</a></div></div>
|
|
4819
4815
|
<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#l00897">SVFValue.h:897</a></div></div>
|
|
4820
4816
|
<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#l00126">BasicTypes.h:126</a></div></div>
|
|
@@ -4842,7 +4838,7 @@ Friends</h2></td></tr>
|
|
|
4842
4838
|
<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#l00129">BasicTypes.h:129</a></div></div>
|
|
4843
4839
|
<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>
|
|
4844
4840
|
<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#l00070">LLVMModule.cpp:70</a></div></div>
|
|
4845
|
-
<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#
|
|
4841
|
+
<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#l00312">LLVMModule.cpp:312</a></div></div>
|
|
4846
4842
|
<!-- start footer part -->
|
|
4847
4843
|
<hr class="footer"/><address class="footer"><small>
|
|
4848
4844
|
Generated by  <a href="http://www.doxygen.org/index.html">
|